From 80af065c62876879b8ab3ad3e57369966b7acddc Mon Sep 17 00:00:00 2001 From: Balasubramanian Narasimhan Date: Mon, 8 Jun 2026 13:44:23 -0700 Subject: [PATCH 1/2] CVXR 1.9.1 Release --- .Rbuildignore | 1 + DESCRIPTION | 2 +- NEWS.md | 13 ++ ...ctions_solvers_conic_solvers_highs_conif.R | 108 +++++++++- ...reductions_solvers_qp_solvers_highs_qpif.R | 71 ++++++- README.md | 11 +- tests/testthat/test-cran-solver-matrix.R | 39 +++- tests/testthat/test-highs-warm-start.R | 200 ++++++++++++++++++ tests/testthat/test-phase10a-highs.R | 3 + tests/testthat/test-qp-parity.R | 32 ++- tests/testthat/test-standard-solver-matrix.R | 49 ++++- 11 files changed, 496 insertions(+), 33 deletions(-) create mode 100644 tests/testthat/test-highs-warm-start.R diff --git a/.Rbuildignore b/.Rbuildignore index f2ff4ac1..408565e4 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -13,6 +13,7 @@ ^\.github$ ^_pkgdown\.yml$ ^README\.Rmd$ +^README\.html$ ^docs$ ^pkgdown$ ^inst/copy_r_source\.R$ diff --git a/DESCRIPTION b/DESCRIPTION index f0bbdd80..0d1f9866 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -39,7 +39,7 @@ Imports: clarabel (>= 0.11), cli (>= 3.6), gmp (>= 0.7), - highs (>= 1.12), + highs (>= 1.14), osqp (>= 1.0), scs (>= 3.2), slam (>= 0.1) diff --git a/NEWS.md b/NEWS.md index 971ddc00..46583f7a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -100,6 +100,19 @@ and interval-bounds propagation with native solver-bound support. * Variables now report `Parameter`s embedded in expression bounds and include those bounds in DPP/DGP compliance checks. +## HiGHS warm-start and column-name validation + +* HiGHS warm-start is now enabled. `psolve(prob, solver = "HIGHS", + warm_start = TRUE)` reuses the previous solution via the persistent-solver + API (`hi_solver_set_solution`) across LP, MILP, and QP paths. This requires + `highs (>= 1.14)`, now available on CRAN; on older `highs` the warm-start + tests skip and solves fall back to cold starts. +* `validate_column_name()` checks a name against the HiGHS LP-file column-name + rules, mirroring CVXPY's `highs_conif.validate_column_name`. +* Known limitation: writing a model to a file with the original variable names + is not yet supported — the R `highs` package exposes no column-name setter, + so a written model would carry generic names (`c0`, `c1`, ...). + ## Geometric and parameterized programming * Positive (DGP) variables now accept numeric *and* parametric bounds under diff --git a/R/276_reductions_solvers_conic_solvers_highs_conif.R b/R/276_reductions_solvers_conic_solvers_highs_conif.R index a2add0f7..34f8cd46 100644 --- a/R/276_reductions_solvers_conic_solvers_highs_conif.R +++ b/R/276_reductions_solvers_conic_solvers_highs_conif.R @@ -12,6 +12,40 @@ ## QP problems are handled by HiGHS_QP_Solver (qp_solvers/highs_qp_solver.R). +# -- LP-format column-name validation ---------------------------------------- +## CVXPY SOURCE: highs_conif.py lines 31-48 +## Validates a variable/column name against HiGHS LP-file format rules; used +## when writing a model to an .lp file. A pure string check -- no dependency +## on the highs package. Pattern is byte-identical to CVXPY's +## VALID_COLUMN_NAME_PATTERN (Python's `{,254}` written as PCRE `{0,254}`). + +VALID_COLUMN_NAME_PATTERN <- paste0( + "^(?!st$|bounds$|min$|max$|bin$|binary$|gen$|semi$|end$)", + "[a-df-zA-DF-Z\"!#$%&/}{,;?@_\u2018\u2019'`|~]{1}", + "[a-zA-Z0-9\"!#$%&/}{,;?@_\u2018\u2019'`|~.=()<>[\\]]{0,254}$" +) + +INVALID_COLUMN_NAME_MESSAGE_TEMPLATE <- paste0( + "Invalid column name: {name}", + "\nA column name must:", + "\n- not be equal to one of the keywords: st, bounds, min, max, bin, binary, gen, semi or end", + "\n- not begin with a number, the letter e or E or any of the following characters: .=()<>[]", + "\n- be alphanumeric (a-z, A-Z, 0-9) or one of these symbols: \"!#$%&/}{,;?@_\u2018\u2019'`|~.=()<>[]", + "\n- be no longer than 255 characters." +) + +validate_column_name <- function(name) { + ## CVXPY SOURCE: highs_conif.py validate_column_name (lines 45-48) + if (!grepl(VALID_COLUMN_NAME_PATTERN, name, perl = TRUE)) { + msg <- gsub("{name}", name, INVALID_COLUMN_NAME_MESSAGE_TEMPLATE, fixed = TRUE) + ## Escape literal braces so cli/glue renders them verbatim. + msg <- gsub("}", "}}", gsub("{", "{{", msg, fixed = TRUE), fixed = TRUE) + cli::cli_abort(msg) + } + invisible(NULL) +} + + # -- HiGHS status map (shared with HiGHS_QP_Solver) -------------------------- ## CVXPY SOURCE: highs_conif.py lines 57-69 ## R highs returns integer status codes (unlike Python highspy enum names). @@ -99,6 +133,10 @@ method(solve_via_data, HiGHS_Conic_Solver) <- function(x, data, warm_start = FAL solver_opts = list(), ...) { .require_solver_package(HIGHS_SOLVER) + ## CVXPY SOURCE: highs_conif.py:201 (warm_start, solver_cache plumbed via ...). + dots <- list(...) + solver_cache <- dots[["solver_cache"]] + c_vec <- data[[SD_C]] nvars <- length(c_vec) dims <- data[[SD_DIMS]] @@ -182,13 +220,25 @@ method(solve_via_data, HiGHS_Conic_Solver) <- function(x, data, warm_start = FAL ## Build HiGHS control ctrl <- highs::highs_control() ctrl$log_to_console <- verbose + ## CVXPY SOURCE: highs_conif.py:296 sets only log_to_console. R-SPECIFIC: the + ## R `highs` 1.14 persistent-solver API installs a log callback whose console + ## output is gated by `output_flag` (master switch, default TRUE), so + ## log_to_console alone no longer silences HiGHS. Mirror CVXPY's intent + ## (quiet unless verbose) by also setting output_flag. + ctrl$output_flag <- verbose for (opt_name in names(solver_opts)) { ctrl[[opt_name]] <- solver_opts[[opt_name]] } - ## Call HiGHS - result <- highs::highs_solve( + ## CVXPY SOURCE: highs_conif.py:250-338. + ## Persistent-solver flow (highs_model -> hi_new_solver -> optional + ## hi_solver_set_solution -> hi_solver_run -> getter calls) replaces + ## the one-shot highs::highs_solve() call. Necessary so that warm-start + ## can feed the prior solution into the new solver instance via + ## hi_solver_set_solution(), mirroring CVXPY's `solver.setSolution()` at + ## highs_conif.py:320. Requires highs >= 1.14 (persistent-solver API). + model <- highs::highs_model( Q = Q, L = c_vec, lower = lower, @@ -198,10 +248,60 @@ method(solve_via_data, HiGHS_Conic_Solver) <- function(x, data, warm_start = FAL rhs = rhs, types = types, maximum = FALSE, - offset = 0, - control = ctrl + offset = 0 + ) + solver <- highs::hi_new_solver(model) + highs::hi_solver_set_options(solver, ctrl) + + ## CVXPY SOURCE: highs_conif.py:316-320 (warm-start primal/dual feed-in). + ## If we have a cached solution from a prior solve and its status was + ## SOLUTION_PRESENT and the dimensions match, hand it to HiGHS as the + ## starting point. Any failure falls through to a cold solve. + cache_key <- HIGHS_SOLVER + if (warm_start && !is.null(solver_cache) && + exists(cache_key, envir = solver_cache)) { + cached <- get(cache_key, envir = solver_cache) + old_status <- HIGHS_STATUS_MAP[[as.character(cached$result$status)]] + if (!is.null(old_status) && old_status %in% SOLUTION_PRESENT && + length(cached$result$solver_msg$col_value) == nvars && + length(cached$result$solver_msg$row_value) == nrow(A_highs)) { + tryCatch({ + prior <- cached$result$solver_msg + highs::hi_solver_set_solution( + solver, + col_value = prior$col_value, + row_value = prior$row_value, + col_dual = prior$col_dual, + row_dual = prior$row_dual, + value_valid = isTRUE(prior$value_valid), + dual_valid = isTRUE(prior$dual_valid) + ) + }, error = function(e) NULL) + } + } + + ## CVXPY SOURCE: highs_conif.py:323-331 (run + collect result fields). + ## Result shape matches the prior highs::highs_solve() return so that + ## reduction_invert() below is unchanged. + highs::hi_solver_run(solver) + solution <- highs::hi_solver_get_solution(solver) + info <- highs::hi_solver_info(solver) + result <- list( + primal_solution = solution[["col_value"]], + objective_value = info[["objective_function_value"]], + status = highs::hi_solver_status(solver), + status_message = highs::hi_solver_status_message(solver), + solver_msg = solution, + info = info ) + ## CVXPY SOURCE: highs_conif.py:335-336 (cache for next warm-start). + if (!is.null(solver_cache)) { + assign(cache_key, + list(solver = solver, result = result), + envir = solver_cache) + } + result } diff --git a/R/285_reductions_solvers_qp_solvers_highs_qpif.R b/R/285_reductions_solvers_qp_solvers_highs_qpif.R index d5f19cc2..3deefc2a 100644 --- a/R/285_reductions_solvers_qp_solvers_highs_qpif.R +++ b/R/285_reductions_solvers_qp_solvers_highs_qpif.R @@ -48,6 +48,10 @@ method(solve_via_data, HiGHS_QP_Solver) <- function(x, data, warm_start = FALSE, solver_opts = list(), ...) { .require_solver_package(HIGHS_SOLVER) + ## CVXPY SOURCE: highs_qpif.py:123 (warm_start, solver_cache plumbed via ...). + dots <- list(...) + solver_cache <- dots[["solver_cache"]] + L_vec <- data[["q"]] nvars <- length(L_vec) @@ -126,14 +130,25 @@ method(solve_via_data, HiGHS_QP_Solver) <- function(x, data, warm_start = FALSE, ## Build HiGHS control ctrl <- highs::highs_control() ctrl$log_to_console <- verbose + ## CVXPY SOURCE: highs_qpif.py:208 sets only log_to_console. R-SPECIFIC: the + ## R `highs` 1.14 persistent-solver API installs a log callback whose console + ## output is gated by `output_flag` (master switch, default TRUE), so + ## log_to_console alone no longer silences HiGHS. Mirror CVXPY's intent + ## (quiet unless verbose) by also setting output_flag. + ctrl$output_flag <- verbose ## Apply user-specified solver options for (opt_name in names(solver_opts)) { ctrl[[opt_name]] <- solver_opts[[opt_name]] } - ## Call HiGHS - result <- highs::highs_solve( + ## CVXPY SOURCE: highs_qpif.py:175-248. + ## Persistent-solver flow (highs_model -> hi_new_solver -> optional + ## hi_solver_set_solution -> hi_solver_run -> getter calls) replaces + ## the one-shot highs::highs_solve() call so that warm-start can feed + ## the prior solution via hi_solver_set_solution(), mirroring CVXPY's + ## `solver.setSolution()` at highs_qpif.py:232. Requires highs >= 1.14. + model <- highs::highs_model( Q = Q, L = L_vec, lower = lower, @@ -143,11 +158,57 @@ method(solve_via_data, HiGHS_QP_Solver) <- function(x, data, warm_start = FALSE, rhs = rhs, types = types, maximum = FALSE, - offset = 0, - control = ctrl + offset = 0 + ) + solver <- highs::hi_new_solver(model) + highs::hi_solver_set_options(solver, ctrl) + + ## CVXPY SOURCE: highs_qpif.py:228-232 (warm-start primal/dual feed-in). + cache_key <- HIGHS_SOLVER + if (warm_start && !is.null(solver_cache) && + exists(cache_key, envir = solver_cache)) { + cached <- get(cache_key, envir = solver_cache) + old_status <- HIGHS_STATUS_MAP[[as.character(cached$result$status)]] + nrow_A <- if (is.null(A)) 0L else nrow(A) + if (!is.null(old_status) && old_status %in% SOLUTION_PRESENT && + length(cached$result$solver_msg$col_value) == nvars && + length(cached$result$solver_msg$row_value) == nrow_A) { + tryCatch({ + prior <- cached$result$solver_msg + highs::hi_solver_set_solution( + solver, + col_value = prior$col_value, + row_value = prior$row_value, + col_dual = prior$col_dual, + row_dual = prior$row_dual, + value_valid = isTRUE(prior$value_valid), + dual_valid = isTRUE(prior$dual_valid) + ) + }, error = function(e) NULL) + } + } + + ## CVXPY SOURCE: highs_qpif.py:235-243 (run + collect result fields). + highs::hi_solver_run(solver) + solution <- highs::hi_solver_get_solution(solver) + info <- highs::hi_solver_info(solver) + result <- list( + primal_solution = solution[["col_value"]], + objective_value = info[["objective_function_value"]], + status = highs::hi_solver_status(solver), + status_message = highs::hi_solver_status_message(solver), + solver_msg = solution, + info = info ) - ## Store len_eq for dual splitting + ## CVXPY SOURCE: highs_qpif.py:247-248 (cache for next warm-start). + if (!is.null(solver_cache)) { + assign(cache_key, + list(solver = solver, result = result), + envir = solver_cache) + } + + ## Store len_eq for dual splitting (used by reduction_invert). result$.len_eq <- len_eq result } diff --git a/README.md b/README.md index db00c4c6..78f87143 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ status](https://www.r-pkg.org/badges/version/CVXR)](https://cran.r-project.org/p CVXR provides an object-oriented modeling language for convex optimization, similar to [CVXPY](https://www.cvxpy.org/), -[CVX](http://cvxr.com/cvx/), [YALMIP](https://yalmip.github.io/), and +[CVX](https://cvxr.com/cvx/), [YALMIP](https://yalmip.github.io/), and [Convex.jl](https://jump.dev/Convex.jl/stable/). It allows you to formulate convex optimization problems in natural mathematical syntax rather than the restrictive standard form required by most solvers. You @@ -27,10 +27,11 @@ into standard conic form and passed to an appropriate backend solver. This version is a ground-up rewrite built on the [S7](https://rconsortium.github.io/S7/) object system, designed to -mirror CVXPY 1.8 closely. It is **~4–5x faster** than the previous -S4-based release, ships with 13 solvers (4 built-in), and supports DCP, -DGP, DQCP, complex variables, mixed-integer programming, and -warm-starting. +mirror CVXPY 1.9.1 closely. It is **~4–5x faster** than the previous +S4-based release, ships with 15 solvers (4 built-in), and supports DCP, +DGP, DQCP, disciplined nonlinear programming (DNLP), complex variables, +mixed-integer programming, warm-starting, and a derivative / +sensitivity-analysis API. For tutorials, worked examples, and the full story, visit the [CVXR website](https://cvxr.rbind.io). diff --git a/tests/testthat/test-cran-solver-matrix.R b/tests/testthat/test-cran-solver-matrix.R index 229e8c22..b7d8d4c8 100644 --- a/tests/testthat/test-cran-solver-matrix.R +++ b/tests/testthat/test-cran-solver-matrix.R @@ -617,17 +617,50 @@ test_that("HiGHS: options (CVXPY parity)", { ## @cvxpy test_conic_solvers.py::TestHIGHS::test_highs_validate_column_name test_that("HiGHS: validate_column_name", { - skip("HiGHS column name validation not exposed in R highs package") + ## validate_column_name is a pure LP-format name check (no highs dependency). + keywords <- c("st", "bounds", "min", "max", "bin", "binary", "gen", "semi", "end") + must_not_begin_with <- strsplit("0123456789eE.=()<>[]", "")[[1]] + + ## Happy path: valid names raise nothing. + valid_names <- c( + strrep("a", 255L), # max length (255 chars) + "a", "A", "z", "_x", "x_1", # allowed start chars + alnum/underscore body + "sts", # keyword + suffix is fine (not the keyword) + "x[0]", "var_2_by_2[0,0]" # array-index style names + ) + for (nm in valid_names) expect_silent(validate_column_name(nm)) + + ## Unhappy path: invalid names raise an error. + invalid_names <- c( + strrep("a", 256L), # too long (> 255) + keywords, # reserved keywords + paste0(must_not_begin_with, "_tail"), # forbidden leading character + "a b", "a\tb", "a-b", "a:b" # disallowed interior characters + ) + for (nm in invalid_names) expect_error(validate_column_name(nm)) }) ## @cvxpy test_conic_solvers.py::TestHIGHS::test_highs_warm_start test_that("HiGHS: warm_start", { - skip("HiGHS warm-start blocked: R highs package lacks setSolution()") + ## Warm-start needs the persistent-solver API (hi_solver_set_solution), + ## exposed in R highs >= 1.14. Full coverage in test-highs-warm-start.R. + skip_if_not_installed("highs", minimum_version = "1.14") + h <- sth_qp_0() + ## Solve twice — second call exercises warm start + val1 <- psolve(h$prob, solver = "HIGHS", warm_start = TRUE) + val2 <- psolve(h$prob, solver = "HIGHS", warm_start = TRUE) + expect_equal(val1, h$expect_obj, tolerance = 1e-5) + expect_equal(val2, h$expect_obj, tolerance = 1e-5) }) ## @cvxpy test_conic_solvers.py::TestHIGHS::test_highs_written_model_contains_variable_names test_that("HiGHS: written_model_contains_variable_names", { - skip("HiGHS model export not exposed in R highs package") + ## highs >= 1.14 exposes hi_solver_write_model (the model CAN be written), + ## but the R highs package exposes no column-name setter (no lp.col_names_ + ## equivalent), so a written model uses generic names (c0, c1, ...) and + ## cannot contain the CVXPY variable names this test checks for. Blocked + ## upstream in the highs R package, like setSolution() was before 1.14. + skip("HiGHS model variable-name export blocked: R highs package exposes no column-name setter") }) # ══════════════════════════════════════════════════════════════════ diff --git a/tests/testthat/test-highs-warm-start.R b/tests/testthat/test-highs-warm-start.R new file mode 100644 index 00000000..8264ad15 --- /dev/null +++ b/tests/testthat/test-highs-warm-start.R @@ -0,0 +1,200 @@ +## HiGHS Warm-Start Tests +## Tests for HiGHS warm-start support via the persistent-solver API +## (highs::hi_new_solver + hi_solver_set_solution + hi_solver_run). +## +## Covers both solver paths: +## - HiGHS_Conic_Solver (LP / MILP) +## - HiGHS_QP_Solver (QP) +## +## Requires R highs >= 1.14 (persistent-solver API). Earlier versions +## (1.12 on CRAN) lack hi_solver_set_solution(). + +skip_if_not_installed("highs", minimum_version = "1.14") + +# -- HiGHS_QP_Solver path ---------------------------------------------------- + +## @cvxpy NONE +test_that("HiGHS QP warm-start: solve twice on same problem", { + x <- Variable(2) + prob <- Problem(Minimize(sum_squares(x - 1)), list(x >= 0)) + + r1 <- psolve(prob, solver = "HIGHS", warm_start = TRUE) + expect_equal(status(prob), "optimal") + expect_equal(r1, 0.0, tolerance = 1e-4) + + r2 <- psolve(prob, solver = "HIGHS", warm_start = TRUE) + expect_equal(status(prob), "optimal") + expect_equal(r2, 0.0, tolerance = 1e-4) +}) + +## @cvxpy NONE +test_that("HiGHS QP warm-start: parameter change between solves", { + n <- 5L + x <- Variable(n) + b <- Parameter(n) + + prob <- Problem(Minimize(sum_squares(x - b)), list(x >= 0)) + + ## First solve: b = (1,1,1,1,1) + value(b) <- rep(1, n) + psolve(prob, solver = "HIGHS", warm_start = TRUE) + expect_equal(status(prob), "optimal") + expect_equal(as.numeric(value(x)), rep(1, n), tolerance = 1e-3) + + ## Second solve: b = (2,3,4,5,6) + value(b) <- c(2, 3, 4, 5, 6) + psolve(prob, solver = "HIGHS", warm_start = TRUE) + expect_equal(status(prob), "optimal") + expect_equal(as.numeric(value(x)), c(2, 3, 4, 5, 6), tolerance = 1e-3) +}) + +## @cvxpy NONE +test_that("HiGHS QP warm-start: cold and warm produce same solution", { + x <- Variable(3) + con <- list(x[1] + x[2] == 1, x[2] + x[3] == 2, x >= 0) + + ## Cold solve + prob_cold <- Problem(Minimize(sum_squares(x)), con) + r_cold <- psolve(prob_cold, solver = "HIGHS", warm_start = FALSE) + x_cold <- as.numeric(value(x)) + + ## Warm solve (first solve builds cache, second uses it) + x2 <- Variable(3) + con2 <- list(x2[1] + x2[2] == 1, x2[2] + x2[3] == 2, x2 >= 0) + prob_warm <- Problem(Minimize(sum_squares(x2)), con2) + psolve(prob_warm, solver = "HIGHS", warm_start = TRUE) + r_warm <- psolve(prob_warm, solver = "HIGHS", warm_start = TRUE) + x_warm <- as.numeric(value(x2)) + + expect_equal(r_cold, r_warm, tolerance = 1e-4) + expect_equal(x_cold, x_warm, tolerance = 1e-4) +}) + +## @cvxpy NONE +test_that("HiGHS QP warm-start preserves dual values", { + x <- Variable(2) + eq_con <- x[1] + x[2] == 1 + ineq_con <- x >= 0 + prob <- Problem(Minimize(sum_squares(x)), list(eq_con, ineq_con)) + + ## First solve to warm the cache + psolve(prob, solver = "HIGHS", warm_start = TRUE) + expect_equal(status(prob), "optimal") + expect_equal(as.numeric(value(x)), c(0.5, 0.5), tolerance = 1e-3) + + ## Second solve uses cache; fresh Problem to avoid constraint cache leakage + x2 <- Variable(2) + eq_con2 <- x2[1] + x2[2] == 1 + ineq_con2 <- x2 >= 0 + prob2 <- Problem(Minimize(sum_squares(x2)), list(eq_con2, ineq_con2)) + psolve(prob2, solver = "HIGHS", warm_start = TRUE) + psolve(prob2, solver = "HIGHS", warm_start = TRUE) + expect_equal(status(prob2), "optimal") + expect_equal(as.numeric(value(x2)), c(0.5, 0.5), tolerance = 1e-3) + ## Equality dual is -1.0 for this problem + expect_equal(as.numeric(dual_value(eq_con2)), -1.0, tolerance = 1e-2) +}) + +# -- HiGHS_Conic_Solver path (LP) -------------------------------------------- + +## @cvxpy NONE +test_that("HiGHS LP warm-start: solve twice on same problem", { + x <- Variable(2) + prob <- Problem(Minimize(sum_entries(x)), list(x >= 1)) + + r1 <- psolve(prob, solver = "HIGHS", warm_start = TRUE) + expect_equal(status(prob), "optimal") + expect_equal(r1, 2.0, tolerance = 1e-4) + + r2 <- psolve(prob, solver = "HIGHS", warm_start = TRUE) + expect_equal(status(prob), "optimal") + expect_equal(r2, 2.0, tolerance = 1e-4) +}) + +## @cvxpy NONE +test_that("HiGHS LP warm-start: cold and warm produce same solution", { + set.seed(7L) + n <- 8L + c_vec <- rnorm(n) + x <- Variable(n) + prob <- Problem(Minimize(t(c_vec) %*% x), list(sum_entries(x) == 1, x >= 0)) + + r_cold <- psolve(prob, solver = "HIGHS", warm_start = FALSE) + x_cold <- as.numeric(value(x)) + + ## Fresh Problem so cold and warm don't share constraint dual cache + x2 <- Variable(n) + prob_w <- Problem(Minimize(t(c_vec) %*% x2), list(sum_entries(x2) == 1, x2 >= 0)) + psolve(prob_w, solver = "HIGHS", warm_start = TRUE) + r_warm <- psolve(prob_w, solver = "HIGHS", warm_start = TRUE) + + expect_equal(r_cold, r_warm, tolerance = 1e-4) + expect_equal(x_cold, as.numeric(value(x2)), tolerance = 1e-4) +}) + +# -- HiGHS_Conic_Solver path (MILP) ------------------------------------------ + +## @cvxpy NONE +test_that("HiGHS MILP warm-start: solve twice on same integer problem", { + x <- Variable(3, integer = TRUE) + prob <- Problem(Minimize(sum_entries(x)), list(x >= 2, x <= 5)) + + r1 <- psolve(prob, solver = "HIGHS", warm_start = TRUE) + expect_equal(status(prob), "optimal") + expect_equal(r1, 6.0, tolerance = 1e-6) + + r2 <- psolve(prob, solver = "HIGHS", warm_start = TRUE) + expect_equal(status(prob), "optimal") + expect_equal(r2, 6.0, tolerance = 1e-6) +}) + +# -- Cold after warm --------------------------------------------------------- + +## @cvxpy NONE +test_that("HiGHS cold solve after warm solve creates fresh solver", { + x <- Variable(2) + prob <- Problem(Minimize(sum_entries(x)), list(x >= 1)) + + r1 <- psolve(prob, solver = "HIGHS", warm_start = TRUE) + expect_equal(r1, 2.0, tolerance = 1e-4) + + r2 <- psolve(prob, solver = "HIGHS", warm_start = FALSE) + expect_equal(r2, 2.0, tolerance = 1e-4) +}) + +# -- Independent caches per Problem ------------------------------------------ + +## @cvxpy NONE +test_that("HiGHS warm-start: two Problems have independent caches", { + x1 <- Variable(2) + prob1 <- Problem(Minimize(sum_entries(x1)), list(x1 >= 1)) + + x2 <- Variable(2) + prob2 <- Problem(Minimize(sum_entries(x2)), list(x2 >= 5)) + + r1 <- psolve(prob1, solver = "HIGHS", warm_start = TRUE) + r2 <- psolve(prob2, solver = "HIGHS", warm_start = TRUE) + + expect_equal(r1, 2.0, tolerance = 1e-4) + expect_equal(r2, 10.0, tolerance = 1e-4) + + r1b <- psolve(prob1, solver = "HIGHS", warm_start = TRUE) + expect_equal(r1b, 2.0, tolerance = 1e-4) +}) + +# -- Dimension change fallback ----------------------------------------------- + +## @cvxpy NONE +test_that("HiGHS warm-start falls back on dimension change", { + x <- Variable(2) + prob1 <- Problem(Minimize(sum_squares(x)), list(x >= 0)) + psolve(prob1, solver = "HIGHS", warm_start = TRUE) + + ## Different size — the warm-path dimension check should skip set_solution + ## and let the cold solve handle it. + y <- Variable(4) + prob2 <- Problem(Minimize(sum_squares(y)), list(y >= 0)) + val <- psolve(prob2, solver = "HIGHS", warm_start = TRUE) + expect_true(is.finite(val)) + expect_equal(val, 0.0, tolerance = 1e-4) +}) diff --git a/tests/testthat/test-phase10a-highs.R b/tests/testthat/test-phase10a-highs.R index 75cf6a8f..ea067cd8 100644 --- a/tests/testthat/test-phase10a-highs.R +++ b/tests/testthat/test-phase10a-highs.R @@ -419,6 +419,9 @@ test_that("HIGHS_SOLVER constant is exported and correct", { ## @cvxpy NONE test_that("HiGHS warm start does not crash", { + ## warm_start = TRUE drives the persistent-solver path (hi_solver_set_solution), + ## available in R highs >= 1.14. + skip_if_not_installed("highs", minimum_version = "1.14") x <- Variable(2) prob <- Problem(Minimize(sum_squares(x - c(1, 2))), list(x >= 0)) diff --git a/tests/testthat/test-qp-parity.R b/tests/testthat/test-qp-parity.R index ad53d6ee..9ffab6f1 100644 --- a/tests/testthat/test-qp-parity.R +++ b/tests/testthat/test-qp-parity.R @@ -402,16 +402,32 @@ test_that("HiGHS CVaR constraint optimization", { }) # ── TestQp::test_highs_warmstart ────────────────────────────────────────────── -# CVXPY: HiGHS warm-start test. Blocked in R because the R highs package -# lacks setSolution() support needed for warm-starting. +# CVXPY: HiGHS warm-start test. Requires R highs >= 1.14 (persistent-solver +# API exposing hi_solver_set_solution); on CRAN as of highs 1.14.0-2. ## @cvxpy test_qp_solvers.py::TestQp::test_highs_warmstart -test_that("HiGHS warm-start (blocked: R highs pkg lacks setSolution)", { - skip_if_not_installed("highs") - skip("HiGHS warm-start blocked: R highs package lacks setSolution() support") - ## CVXPY pattern: parametric least-squares, cold then warm, then new param - ## warm then cold. Verify both give same results. When R highs package adds - ## setSolution(), implement following CVXPY test_qp_solvers.py lines 635-656. +test_that("HiGHS warm-start: cold and warm produce same solution", { + skip_if_not_installed("highs", minimum_version = "1.14") + m <- 200L + n <- 100L + set.seed(1L) + A_mat <- matrix(rnorm(m * n), nrow = m, ncol = n) + b <- Parameter(m) + + x <- Variable(n) + prob <- Problem(Minimize(sum_squares(A_mat %*% x - b))) + + ## Cycle 1: same b — cold then warm should match + value(b) <- rnorm(m) + result1 <- psolve(prob, solver = "HIGHS", warm_start = FALSE) + result2 <- psolve(prob, solver = "HIGHS", warm_start = TRUE) + expect_equal(result1, result2, tolerance = 1e-3) + + ## Cycle 2: new b — warm then cold should match + value(b) <- rnorm(m) + result3 <- psolve(prob, solver = "HIGHS", warm_start = TRUE) + result4 <- psolve(prob, solver = "HIGHS", warm_start = FALSE) + expect_equal(result3, result4, tolerance = 1e-3) }) # ── TestQp::test_piqp_warmstart ────────────────────────────────────────────── diff --git a/tests/testthat/test-standard-solver-matrix.R b/tests/testthat/test-standard-solver-matrix.R index 93ecf74b..24cf5d9c 100644 --- a/tests/testthat/test-standard-solver-matrix.R +++ b/tests/testthat/test-standard-solver-matrix.R @@ -1426,20 +1426,51 @@ test_that("HiGHS: options (CVXPY parity)", { ## @cvxpy test_conic_solvers.py::TestHIGHS::test_highs_validate_column_name test_that("HiGHS: validate_column_name", { - skip_if_not_installed("highs") - skip("HiGHS column name validation not exposed in R highs package") + ## validate_column_name is a pure LP-format name check (no highs dependency). + keywords <- c("st", "bounds", "min", "max", "bin", "binary", "gen", "semi", "end") + must_not_begin_with <- strsplit("0123456789eE.=()<>[]", "")[[1]] + + ## Happy path: valid names raise nothing. + valid_names <- c( + strrep("a", 255L), # max length (255 chars) + "a", "A", "z", "_x", "x_1", # allowed start chars + alnum/underscore body + "sts", # keyword + suffix is fine (not the keyword) + "x[0]", "var_2_by_2[0,0]" # array-index style names + ) + for (nm in valid_names) expect_silent(validate_column_name(nm)) + + ## Unhappy path: invalid names raise an error. + invalid_names <- c( + strrep("a", 256L), # too long (> 255) + keywords, # reserved keywords + paste0(must_not_begin_with, "_tail"), # forbidden leading character + "a b", "a\tb", "a-b", "a:b" # disallowed interior characters + ) + for (nm in invalid_names) expect_error(validate_column_name(nm)) }) ## @cvxpy test_conic_solvers.py::TestHIGHS::test_highs_warm_start test_that("HiGHS: warm_start", { - skip_if_not_installed("highs") - skip("HiGHS warm-start blocked: R highs package lacks setSolution()") + ## Warm-start needs the persistent-solver API (hi_solver_set_solution), + ## exposed in R highs >= 1.14. Full coverage in test-highs-warm-start.R. + skip_if_not_installed("highs", minimum_version = "1.14") + h <- sth_qp_0() + ## Solve twice — second call exercises warm start + val1 <- psolve(h$prob, solver = "HIGHS", warm_start = TRUE) + val2 <- psolve(h$prob, solver = "HIGHS", warm_start = TRUE) + expect_equal(val1, h$expect_obj, tolerance = 1e-5) + expect_equal(val2, h$expect_obj, tolerance = 1e-5) }) ## @cvxpy test_conic_solvers.py::TestHIGHS::test_highs_written_model_contains_variable_names test_that("HiGHS: written_model_contains_variable_names", { - skip_if_not_installed("highs") - skip("HiGHS model export not exposed in R highs package") + skip_if_not_installed("highs", minimum_version = "1.14") + ## highs >= 1.14 exposes hi_solver_write_model (the model CAN be written), + ## but the R highs package exposes no column-name setter (no lp.col_names_ + ## equivalent), so a written model uses generic names (c0, c1, ...) and + ## cannot contain the CVXPY variable names this test checks for. Blocked + ## upstream in the highs R package, like setSolution() was before 1.14. + skip("HiGHS model variable-name export blocked: R highs package exposes no column-name setter") }) # ══════════════════════════════════════════════════════════════════ @@ -1468,7 +1499,11 @@ test_that("MOSEK: accept_unknown solver status", { ## @cvxpy test_conic_solvers.py::TestMosek::test_mosek_iis test_that("MOSEK: IIS (Irreducible Infeasible Subsystem)", { skip_if_not_installed("Rmosek") - skip("MOSEK IIS (Irreducible Infeasible Subsystem) not exposed via CVXR") + ## Genuine feature gap: CVXPY recovers the IIS via dualization in the + ## dual_infeas branch (Dualize.invert -> extra_stats[["IIS"]]); CVXR's + ## mosek_conif.R only sets the status there (see comment near the + ## DUAL_INFEASIBLE branch). Needs the dualization-based certificate. + skip("MOSEK IIS recovery not implemented in CVXR (dualization-based certificate pending)") }) ## @cvxpy test_conic_solvers.py::TestMosek::test_mosek_lp_bound_attr From 71f2ef4ee0cebfdd99444ceee8a0a71351abaec9 Mon Sep 17 00:00:00 2001 From: Balasubramanian Narasimhan Date: Mon, 8 Jun 2026 13:49:25 -0700 Subject: [PATCH 2/2] Update pkgdown docs --- docs/.nojekyll | 0 docs/articles/cvxr_intro.html | 10 +++++----- docs/articles/cvxr_intro.md | 8 ++++---- docs/articles/whats_new.html | 2 +- .../deps/bootstrap-5.3.1/bootstrap.bundle.min.js | 7 ------- .../bootstrap-5.3.1/bootstrap.bundle.min.js.map | 1 - docs/deps/bootstrap-5.3.1/bootstrap.min.css | 5 ----- docs/index.html | 4 ++-- docs/index.md | 11 ++++++----- docs/llms.txt | 11 ++++++----- docs/news/index.html | 7 +++++++ docs/news/index.md | 16 ++++++++++++++++ docs/pkgdown.yml | 2 +- docs/search.json | 2 +- 14 files changed, 49 insertions(+), 37 deletions(-) delete mode 100644 docs/.nojekyll delete mode 100644 docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js delete mode 100644 docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js.map delete mode 100644 docs/deps/bootstrap-5.3.1/bootstrap.min.css diff --git a/docs/.nojekyll b/docs/.nojekyll deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/articles/cvxr_intro.html b/docs/articles/cvxr_intro.html index 3fda6e4c..84ca1729 100644 --- a/docs/articles/cvxr_intro.html +++ b/docs/articles/cvxr_intro.html @@ -65,7 +65,7 @@

Anqi Fu and Balasubramanian Narasimhan

-

2026-06-05

+

2026-06-08

Source: vignettes/cvxr_intro.Rmd
cvxr_intro.Rmd
@@ -203,13 +203,13 @@

Custom Constraints#> ────────────────────────────────── CVXR v1.9.1 ───────────────────────────────── #> Problem: 1 variable, 2 constraints (QP) #> Compilation: "CLARABEL" via CVXR::Dcp2Cone -> CVXR::CvxAttr2Constr -> CVXR::ConeMatrixStuffing -> CVXR::Clarabel_Solver -#> Compile time: 0.013s +#> Compile time: 0.022s #> ─────────────────────────────── Numerical solver ─────────────────────────────── #> ──────────────────────────────────── Summary ─────────────────────────────────── #> Status: optimal #> Optimal value: 1287.63 -#> Compile time: 0.013s -#> Solver time: 0.011s +#> Compile time: 0.022s +#> Solver time: 0.017s round(value(betaHat), 3) #> [,1] #> [1,] 0.000 @@ -302,7 +302,7 @@

Session Info#> #> loaded via a namespace (and not attached): #> [1] Matrix_1.7-5 piqp_0.6.2 jsonlite_2.0.0 compiler_4.6.0 -#> [5] highs_1.12.0-3 Rcpp_1.1.1-1.1 slam_0.1-55 cccp_0.3-3 +#> [5] highs_1.14.0-2 Rcpp_1.1.1-1.1 slam_0.1-55 cccp_0.3-3 #> [9] jquerylib_0.1.4 systemfonts_1.3.2 textshaping_1.0.5 yaml_2.3.12 #> [13] fastmap_1.2.0 clarabel_0.11.2 lattice_0.22-9 R6_2.6.1 #> [17] scip_1.10.0-3 knitr_1.51 htmlwidgets_1.6.4 backports_1.5.1 diff --git a/docs/articles/cvxr_intro.md b/docs/articles/cvxr_intro.md index 00aecf91..1e0b6bb9 100644 --- a/docs/articles/cvxr_intro.md +++ b/docs/articles/cvxr_intro.md @@ -133,13 +133,13 @@ result <- psolve(problem, solver = "CLARABEL", verbose = TRUE) ## verbose = TRUE #> ────────────────────────────────── CVXR v1.9.1 ───────────────────────────────── #> ℹ Problem: 1 variable, 2 constraints (QP) #> ℹ Compilation: "CLARABEL" via CVXR::Dcp2Cone -> CVXR::CvxAttr2Constr -> CVXR::ConeMatrixStuffing -> CVXR::Clarabel_Solver -#> ℹ Compile time: 0.013s +#> ℹ Compile time: 0.022s #> ─────────────────────────────── Numerical solver ─────────────────────────────── #> ──────────────────────────────────── Summary ─────────────────────────────────── #> ✔ Status: optimal #> ✔ Optimal value: 1287.63 -#> ℹ Compile time: 0.013s -#> ℹ Solver time: 0.011s +#> ℹ Compile time: 0.022s +#> ℹ Solver time: 0.017s round(value(betaHat), 3) #> [,1] #> [1,] 0.000 @@ -238,7 +238,7 @@ sessionInfo() #> #> loaded via a namespace (and not attached): #> [1] Matrix_1.7-5 piqp_0.6.2 jsonlite_2.0.0 compiler_4.6.0 -#> [5] highs_1.12.0-3 Rcpp_1.1.1-1.1 slam_0.1-55 cccp_0.3-3 +#> [5] highs_1.14.0-2 Rcpp_1.1.1-1.1 slam_0.1-55 cccp_0.3-3 #> [9] jquerylib_0.1.4 systemfonts_1.3.2 textshaping_1.0.5 yaml_2.3.12 #> [13] fastmap_1.2.0 clarabel_0.11.2 lattice_0.22-9 R6_2.6.1 #> [17] scip_1.10.0-3 knitr_1.51 htmlwidgets_1.6.4 backports_1.5.1 diff --git a/docs/articles/whats_new.html b/docs/articles/whats_new.html index a8eae583..54c888bf 100644 --- a/docs/articles/whats_new.html +++ b/docs/articles/whats_new.html @@ -65,7 +65,7 @@

Anqi Fu, Balasubramanian Narasimhan, and Stephen Boyd

-

2026-06-05

+

2026-06-08

Source:
vignettes/whats_new.Rmd
whats_new.Rmd
diff --git a/docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js b/docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js deleted file mode 100644 index e8f21f70..00000000 --- a/docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * Bootstrap v5.3.1 (https://getbootstrap.com/) - * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function M(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function j(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${j(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${j(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=M(t.dataset[n])}return e},getDataAttribute:(t,e)=>M(t.getAttribute(`data-bs-${j(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.1"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return n(e)},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",Mt="collapsing",jt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(Mt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(Mt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(jt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Me(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const je={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Me(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:Me(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==P(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],M=f?-T[$]/2:0,j=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-M-q-z-O.mainAxis:j-q-z-O.mainAxis,K=v?-E[$]/2+M+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Ws="show",Bs=":not(.dropdown-toggle)",zs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Rs=`.nav-link${Bs}, .list-group-item${Bs}, [role="tab"]${Bs}, ${zs}`,qs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Vs extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Vs.getOrCreateInstance(i).show())}_getChildren(){return z.find(Rs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(Rs)?t:z.findOne(Rs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Vs.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,zs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Vs.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(qs))Vs.getOrCreateInstance(t)})),m(Vs);const Ks=".bs.toast",Qs=`mouseover${Ks}`,Xs=`mouseout${Ks}`,Ys=`focusin${Ks}`,Us=`focusout${Ks}`,Gs=`hide${Ks}`,Js=`hidden${Ks}`,Zs=`show${Ks}`,to=`shown${Ks}`,eo="hide",io="show",no="showing",so={animation:"boolean",autohide:"boolean",delay:"number"},oo={animation:!0,autohide:!0,delay:5e3};class ro extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return oo}static get DefaultType(){return so}static get NAME(){return"toast"}show(){N.trigger(this._element,Zs).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(eo),d(this._element),this._element.classList.add(io,no),this._queueCallback((()=>{this._element.classList.remove(no),N.trigger(this._element,to),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Gs).defaultPrevented||(this._element.classList.add(no),this._queueCallback((()=>{this._element.classList.add(eo),this._element.classList.remove(no,io),N.trigger(this._element,Js)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(io),super.dispose()}isShown(){return this._element.classList.contains(io)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Qs,(t=>this._onInteraction(t,!0))),N.on(this._element,Xs,(t=>this._onInteraction(t,!1))),N.on(this._element,Ys,(t=>this._onInteraction(t,!0))),N.on(this._element,Us,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ro.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ro),m(ro),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Vs,Toast:ro,Tooltip:cs}})); -//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js.map b/docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js.map deleted file mode 100644 index 3863da8b..00000000 --- a/docs/deps/bootstrap-5.3.1/bootstrap.bundle.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","TRANSITION_END","parseSelector","selector","window","CSS","escape","replace","match","id","triggerTransitionEnd","dispatchEvent","Event","isElement","object","jquery","nodeType","getElement","length","document","querySelector","isVisible","getClientRects","elementIsVisible","getComputedStyle","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","addEventListener","push","execute","possibleCallback","args","defaultValue","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","getTransitionDurationFromElement","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","Math","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","Object","values","find","event","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","wrapFunction","relatedTarget","delegateTarget","call","this","handlers","previousFunction","domElements","querySelectorAll","domElement","hydrateObj","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","value","_unused","defineProperty","configurable","normalizeData","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","prototype","RegExp","test","TypeError","toUpperCase","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","VERSION","eventName","getSelector","hrefAttribute","trim","SelectorEngine","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","EVENT_CLOSE","EVENT_CLOSED","Alert","close","_destroyElement","each","data","undefined","SELECTOR_DATA_TOGGLE","Button","toggle","button","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","endCallback","leftCallback","rightCallback","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","DATA_API_KEY","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","EVENT_CLICK_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","endCallBack","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","completeCallBack","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","complete","getBoundingClientRect","selected","triggerArray","isOpen","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","reduce","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","nodeName","getWindow","node","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","applyStyles$1","enabled","phase","_ref","state","elements","forEach","styles","assign","effect","_ref2","initialStyles","position","options","strategy","margin","arrow","hasOwnProperty","attribute","requires","getBasePlacement","round","getUAString","uaData","userAgentData","brands","isArray","item","brand","version","userAgent","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","width","height","visualViewport","addVisualOffsets","x","offsetLeft","y","offsetTop","getLayoutRect","rootNode","isSameNode","host","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","len","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","offset","axisProp","centerOffset","_options$element","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","computeStyles$1","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","passive","eventListeners","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","update","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","_element$ownerDocumen","isBody","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","sort","a","b","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","i","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","hide$1","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets$1","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","v","withinMaxClamp","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","modifiers","visited","result","modifier","dep","depModifier","DEFAULT_OPTIONS","areValidElements","arguments","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","merged","orderModifiers","current","existing","m","_ref$options","cleanupFn","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","Promise","resolve","then","destroy","onFirstUpdate","createPopper","computeStyles","applyStyles","flip","ARROW_UP_KEY","ARROW_DOWN_KEY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","autoClose","display","popperConfig","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","Popper","referenceElement","_getPopperConfig","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","clearMenus","openToggles","context","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","EVENT_MOUSEDOWN","className","clickCallback","rootElement","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","EVENT_FOCUSIN","EVENT_KEYDOWN_TAB","TAB_NAV_BACKWARD","autofocus","trapElement","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","shiftKey","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","innerWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","sel","EVENT_HIDE_PREVENTED","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","handleUpdate","modalBody","transitionComplete","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","initialOverflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","CLASS_NAME_SHOWING","CLASS_NAME_HIDING","OPEN_SELECTOR","Offcanvas","blur","completeCallback","DefaultAllowlist","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","uriAttributes","SAFE_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","nodeValue","attributeRegex","regex","allowList","content","extraClass","sanitize","sanitizeFn","template","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","innerHTML","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","textContent","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","sanitizeHtml","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","container","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","prefix","floor","random","getElementById","getUID","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","Popover","_getContent","EVENT_ACTIVATE","EVENT_CLICK","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LINKS","SELECTOR_LINK_ITEMS","rootMargin","smoothScroll","threshold","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","scrollTo","behavior","IntersectionObserver","_observerCallback","targetElement","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","decodeURI","_activateParents","listGroup","activeNodes","spy","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","HOME_KEY","END_KEY","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSOUT","CLASS_NAME_HIDE","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting"],"sources":["../../js/src/dom/data.js","../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@popperjs/core/lib/enums.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../node_modules/@popperjs/core/lib/utils/math.js","../../node_modules/@popperjs/core/lib/utils/userAgent.js","../../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../node_modules/@popperjs/core/lib/utils/within.js","../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../node_modules/@popperjs/core/lib/createPopper.js","../../node_modules/@popperjs/core/lib/utils/debounce.js","../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../node_modules/@popperjs/core/lib/popper-lite.js","../../node_modules/@popperjs/core/lib/popper.js","../../js/src/dropdown.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/util/scrollbar.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n }\n\n return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object))\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getjQuery,\n getNextActiveElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n parseSelector,\n reflow,\n triggerTransitionEnd,\n toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n hydrateObj(event, { delegateTarget: target })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n callable = wrapFunction(callable)\n }\n\n const events = getElementEvents(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = isDelegated ?\n bootstrapDelegationHandler(element, handler, callable) :\n bootstrapHandler(element, callable)\n\n fn.delegationSelector = isDelegated ? handler : null\n fn.callable = callable\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getElementEvents(element)\n const storeElementEvent = events[typeEvent] || {}\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value\n }\n })\n }\n }\n\n return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return parseSelector(selector)\n}\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n let ancestor = element.parentNode.closest(selector)\n\n while (ancestor) {\n parents.push(ancestor)\n ancestor = ancestor.parentNode.closest(selector)\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n },\n\n getSelectorFromElement(element) {\n const selector = getSelector(element)\n\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null\n }\n\n return null\n },\n\n getElementFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.findOne(selector) : null\n },\n\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.find(selector) : []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this)\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n const data = Button.getOrCreateInstance(button)\n\n data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n}\n\nconst DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config)\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX\n\n return\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this._deltaX\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getNextActiveElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd\n} from './util/index.js'\nimport Swipe from './util/swipe.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)', // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._interval = null\n this._activeElement = null\n this._isSliding = false\n this.touchTimeout = null\n this._swipeHelper = null\n\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._addEventListeners()\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element)\n }\n\n this._clearInterval()\n }\n\n cycle() {\n this._clearInterval()\n this._updateInterval()\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n return\n }\n\n this.cycle()\n }\n\n to(index) {\n const items = this._getItems()\n if (index > items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n const activeIndex = this._getItemIndex(this._getActive())\n if (activeIndex === index) {\n return\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n this._slide(order, items[index])\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose()\n }\n\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n }\n\n this._swipeHelper = new Swipe(this._element, swipeConfig)\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(this._directionToOrder(direction))\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element)\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n newActiveIndicator.setAttribute('aria-current', 'true')\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive()\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n this._config.interval = elementInterval || this._config.defaultInterval\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return\n }\n\n const activeElement = this._getActive()\n const isNext = order === ORDER_NEXT\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n if (nextElement === activeElement) {\n return\n }\n\n const nextElementIndex = this._getItemIndex(nextElement)\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n })\n }\n\n const slideEvent = triggerEvent(EVENT_SLIDE)\n\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return\n }\n\n const isCycling = Boolean(this._interval)\n this.pause()\n\n this._isSliding = true\n\n this._setActiveIndicatorElement(nextElementIndex)\n this._activeElement = nextElement\n\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n triggerEvent(EVENT_SLID)\n }\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE)\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element)\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config)\n\n if (typeof config === 'number') {\n data.to(config)\n return\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n event.preventDefault()\n\n const carousel = Carousel.getOrCreateInstance(target)\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n carousel.to(slideIndex)\n carousel._maybeEnableCycle()\n return\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next()\n carousel._maybeEnableCycle()\n return\n }\n\n carousel.prev()\n carousel._maybeEnableCycle()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel)\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n getElement,\n reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n parent: null,\n toggle: true\n}\n\nconst DefaultType = {\n parent: '(null|element)',\n toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isTransitioning = false\n this._triggerArray = []\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElement => foundElement === this._element)\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem)\n }\n }\n\n this._initializeChildren()\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return\n }\n\n let activeChildren = []\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n .filter(element => element !== this._element)\n .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide()\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n this._addAriaAndCollapsedClass(this._triggerArray, true)\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n this._queueCallback(complete, this._element, true)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger)\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false)\n }\n }\n\n this._isTransitioning = true\n\n const complete = () => {\n this._isTransitioning = false\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n this._queueCallback(complete, this._element, true)\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle) // Coerce string values\n config.parent = getElement(config.parent)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element)\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected))\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n element.setAttribute('aria-expanded', isOpen)\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {}\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n defineJQueryPlugin,\n execute,\n getElement,\n getNextActiveElement,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center'\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)'\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR = '.navbar'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\nconst PLACEMENT_TOPCENTER = 'top'\nconst PLACEMENT_BOTTOMCENTER = 'bottom'\n\nconst Default = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n}\n\nconst DefaultType = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._popper = null\n this._parent = this._element.parentNode // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n SelectorEngine.findOne(SELECTOR_MENU, this._parent)\n this._inNavbar = this._detectNavbar()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show()\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._createPopper()\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.add(CLASS_NAME_SHOW)\n this._element.classList.add(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n this._completeHide(relatedTarget)\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy()\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOW)\n this._element.setAttribute('aria-expanded', 'false')\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n _getConfig(config) {\n config = super._getConfig(config)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference)\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW)\n }\n\n _getPlacement() {\n const parentDropdown = this._parent\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static') // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _selectMenuItem({ key, target }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element))\n\n if (!items.length) {\n return\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n return\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN)\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle)\n if (!context || context._config.autoClose === false) {\n continue\n }\n\n const composedPath = event.composedPath()\n const isMenuTarget = composedPath.includes(context._menu)\n if (\n composedPath.includes(context._element) ||\n (context._config.autoClose === 'inside' && !isMenuTarget) ||\n (context._config.autoClose === 'outside' && isMenuTarget)\n ) {\n continue\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue\n }\n\n const relatedTarget = { relatedTarget: context._element }\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n context._completeHide(relatedTarget)\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName)\n const isEscapeEvent = event.key === ESCAPE_KEY\n const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return\n }\n\n if (isInput && !isEscapeEvent) {\n return\n }\n\n event.preventDefault()\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n this :\n (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n if (isUpOrDownEvent) {\n event.stopPropagation()\n instance.show()\n instance._selectMenuItem(event)\n return\n }\n\n if (instance._isShown()) { // else is escape and we check if it is shown\n event.stopPropagation()\n instance.hide()\n getToggleButton.focus()\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute, executeAfterTransition, getElement, reflow } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n this._config.rootElement.append(element)\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n}\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\nconst PROPERTY_PADDING = 'padding-right'\nconst PROPERTY_MARGIN = 'margin-right'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n const width = this.getWidth()\n this._disableOverFlow()\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width)\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow')\n this._resetElementAttributes(this._element, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING)\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN)\n }\n\n isOverflowing() {\n return this.getWidth() > 0\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow')\n this._element.style.overflow = 'hidden'\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth()\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n this._saveInitialAttribute(element, styleProperty)\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty)\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty)\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue)\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty)\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty)\n return\n }\n\n Manipulator.removeDataAttribute(element, styleProperty)\n element.style.setProperty(styleProperty, value)\n }\n\n this._applyManipulationCallback(selector, manipulationCallBack)\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector)\n return\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel)\n }\n }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport { defineJQueryPlugin, isRTL, isVisible, reflow } from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n backdrop: true,\n focus: true,\n keyboard: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._isShown = false\n this._isTransitioning = false\n this._scrollBar = new ScrollBarHelper()\n\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._isTransitioning = true\n\n this._scrollBar.hide()\n\n document.body.classList.add(CLASS_NAME_OPEN)\n\n this._adjustDialog()\n\n this._backdrop.show(() => this._showElement(relatedTarget))\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n this._isTransitioning = true\n this._focustrap.deactivate()\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated())\n }\n\n dispose() {\n EventHandler.off(window, EVENT_KEY)\n EventHandler.off(this._dialog, EVENT_KEY)\n\n this._backdrop.dispose()\n this._focustrap.deactivate()\n\n super.dispose()\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated())\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n this._triggerBackdropTransition()\n })\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog()\n }\n })\n\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n return\n }\n\n if (this._config.backdrop) {\n this.hide()\n }\n })\n })\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._scrollBar.reset()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const initialOverflowY = this._element.style.overflowY\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY\n }, this._dialog)\n }, this._dialog)\n\n this._element.focus()\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n const scrollbarWidth = this._scrollBar.getWidth()\n const isBodyOverflowing = scrollbarWidth > 0\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft'\n this._element.style[property] = `${scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide()\n }\n\n const data = Modal.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Backdrop from './util/backdrop.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport FocusTrap from './util/focustrap.js'\nimport {\n defineJQueryPlugin,\n isDisabled,\n isVisible\n} from './util/index.js'\nimport ScrollBarHelper from './util/scrollbar.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate()\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.add(CLASS_NAME_HIDING)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n }\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop)\n\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (this._config.keyboard) {\n this.hide()\n return\n }\n\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n })\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show()\n }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide()\n }\n }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue))\n }\n\n return true\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase()\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove()\n continue\n }\n\n const attributeList = [].concat(...element.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n allowList: DefaultAllowlist,\n content: {}, // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '
'\n}\n\nconst DefaultType = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n}\n\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content)\n .map(config => this._resolvePossibleFunction(config))\n .filter(Boolean)\n }\n\n hasContent() {\n return this.getContent().length > 0\n }\n\n changeContent(content) {\n this._checkContent(content)\n this._config.content = { ...this._config.content, ...content }\n return this\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div')\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector)\n }\n\n const template = templateWrapper.children[0]\n const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '))\n }\n\n return template\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config)\n this._checkContent(config.content)\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template)\n\n if (!templateElement) {\n return\n }\n\n content = this._resolvePossibleFunction(content)\n\n if (!content) {\n templateElement.remove()\n return\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement)\n return\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content)\n return\n }\n\n templateElement.textContent = content\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this])\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = ''\n templateElement.append(element)\n return\n }\n\n templateElement.textContent = element.textContent\n }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport { defineJQueryPlugin, execute, findShadowRoot, getElement, getUID, isRTL, noop } from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '
' +\n '
' +\n '
' +\n '
',\n title: '',\n trigger: 'hover focus'\n}\n\nconst DefaultType = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element, config)\n\n // Private\n this._isEnabled = true\n this._timeout = 0\n this._isHovered = null\n this._activeTrigger = {}\n this._popper = null\n this._templateFactory = null\n this._newContent = null\n\n // Protected\n this.tip = null\n\n this._setListeners()\n\n if (!this._config.selector) {\n this._fixTitle()\n }\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle() {\n if (!this._isEnabled) {\n return\n }\n\n this._activeTrigger.click = !this._activeTrigger.click\n if (this._isShown()) {\n this._leave()\n return\n }\n\n this._enter()\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n }\n\n this._disposePopper()\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper()\n\n const tip = this._getTipElement()\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n const { container } = this._config\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip)\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n }\n\n this._popper = this._createPopper(tip)\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop)\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n if (this._isHovered === false) {\n this._leave()\n }\n\n this._isHovered = false\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n hide() {\n if (!this._isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const tip = this._getTipElement()\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop)\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n this._isHovered = null // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (!this._isHovered) {\n this._disposePopper()\n }\n\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n }\n\n this._queueCallback(complete, this.tip, this._isAnimated())\n }\n\n update() {\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle())\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n }\n\n return this.tip\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml()\n\n // TODO: remove this check in v6\n if (!tip) {\n return null\n }\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n const tipId = getUID(this.constructor.NAME).toString()\n\n tip.setAttribute('id', tipId)\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n return tip\n }\n\n setContent(content) {\n this._newContent = content\n if (this._isShown()) {\n this._disposePopper()\n this.show()\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content)\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n })\n }\n\n return this._templateFactory\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n }\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n }\n\n _isAnimated() {\n return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n }\n\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element])\n const attachment = AttachmentMap[placement.toUpperCase()]\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element])\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement)\n }\n }\n ]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n }\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ')\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context.toggle()\n })\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSEENTER) :\n this.constructor.eventName(EVENT_FOCUSIN)\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.eventName(EVENT_MOUSELEAVE) :\n this.constructor.eventName(EVENT_FOCUSOUT)\n\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n context._enter()\n })\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event)\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n context._element.contains(event.relatedTarget)\n\n context._leave()\n })\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n\n if (!title) {\n return\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title')\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true\n return\n }\n\n this._isHovered = true\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show()\n }\n }, this._config.delay.show)\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n this._isHovered = false\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide()\n }\n }, this._config.delay.hide)\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout)\n this._timeout = setTimeout(handler, timeout)\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true)\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute]\n }\n }\n\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container)\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value\n }\n }\n\n config.selector = false\n config.trigger = 'manual'\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n\n if (this.tip) {\n this.tip.remove()\n this.tip = null\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '
' +\n '
' +\n '

' +\n '
' +\n '
',\n trigger: 'click'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent()\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n }\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content)\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { defineJQueryPlugin, getElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst Default = {\n offset: null, // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n}\n\nconst DefaultType = {\n offset: '(number|null)', // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map()\n this._observableSections = new Map()\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n this._activeTarget = null\n this._observer = null\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n }\n this.refresh() // initialize\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables()\n this._maybeEnableSmoothScroll()\n\n if (this._observer) {\n this._observer.disconnect()\n } else {\n this._observer = this._getNewObserver()\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section)\n }\n }\n\n dispose() {\n this._observer.disconnect()\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n }\n\n return config\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK)\n\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash)\n if (observableSection) {\n event.preventDefault()\n const root = this._rootElement || window\n const height = observableSection.offsetTop - this._element.offsetTop\n if (root.scrollTo) {\n root.scrollTo({ top: height, behavior: 'smooth' })\n return\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height\n }\n })\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n }\n\n return new IntersectionObserver(entries => this._observerCallback(entries), options)\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`)\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop\n this._process(targetElement(entry))\n }\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop\n this._previousScrollData.parentScrollTop = parentScrollTop\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null\n this._clearActiveClass(targetElement(entry))\n\n continue\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry)\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return\n }\n\n continue\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry)\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map()\n this._observableSections = new Map()\n\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue\n }\n\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element)\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor)\n this._observableSections.set(anchor.hash, observableSection)\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return\n }\n\n this._clearActiveClass(this._config.target)\n this._activeTarget = target\n target.classList.add(CLASS_NAME_ACTIVE)\n this._activateParents(target)\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, target.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n return\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both
+

HiGHS warm-start and column-name validation

+
  • HiGHS warm-start is now enabled. psolve(prob, solver = "HIGHS", warm_start = TRUE) reuses the previous solution via the persistent-solver API (hi_solver_set_solution) across LP, MILP, and QP paths. This requires highs (>= 1.14), now available on CRAN; on older highs the warm-start tests skip and solves fall back to cold starts.
  • +
  • +validate_column_name() checks a name against the HiGHS LP-file column-name rules, mirroring CVXPY’s highs_conif.validate_column_name.
  • +
  • Known limitation: writing a model to a file with the original variable names is not yet supported — the R highs package exposes no column-name setter, so a written model would carry generic names (c0, c1, …).
  • +
+

Geometric and parameterized programming

  • Positive (DGP) variables now accept numeric and parametric bounds under gp = TRUE (e.g. Variable(pos = TRUE, bounds = list(lb, ub)) with lb/ub Parameters). The DGP reduction log-transforms the bounds into the log domain and lowers them to constraints; parametric bounds canonicalize through the DGP tree without eagerly evaluating log(value(param)), so DPP re-solves with changed bound parameters work.
  • diff --git a/docs/news/index.md b/docs/news/index.md index e7080c2b..afa711ec 100644 --- a/docs/news/index.md +++ b/docs/news/index.md @@ -127,6 +127,22 @@ support. - Variables now report `Parameter`s embedded in expression bounds and include those bounds in DPP/DGP compliance checks. +### HiGHS warm-start and column-name validation + +- HiGHS warm-start is now enabled. + `psolve(prob, solver = "HIGHS", warm_start = TRUE)` reuses the + previous solution via the persistent-solver API + (`hi_solver_set_solution`) across LP, MILP, and QP paths. This + requires `highs (>= 1.14)`, now available on CRAN; on older `highs` + the warm-start tests skip and solves fall back to cold starts. +- `validate_column_name()` checks a name against the HiGHS LP-file + column-name rules, mirroring CVXPY’s + `highs_conif.validate_column_name`. +- Known limitation: writing a model to a file with the original variable + names is not yet supported — the R `highs` package exposes no + column-name setter, so a written model would carry generic names + (`c0`, `c1`, …). + ### Geometric and parameterized programming - Positive (DGP) variables now accept numeric *and* parametric bounds diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 1eab569a..efff05a8 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -4,7 +4,7 @@ pkgdown_sha: ~ articles: cvxr_intro: cvxr_intro.html whats_new: whats_new.html -last_built: 2026-06-05T20:04Z +last_built: 2026-06-08T20:46Z urls: reference: https://www.cvxgrp.org/CVXR/reference article: https://www.cvxgrp.org/CVXR/articles diff --git a/docs/search.json b/docs/search.json index 5a251a92..5c92904f 100644 --- a/docs/search.json +++ b/docs/search.json @@ -1 +1 @@ -[{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"overview","dir":"Articles","previous_headings":"","what":"Overview","title":"Introduction to CVXR","text":"CVXR R package provides object-oriented modeling language convex optimization, similar CVXPY Python. allows formulate solve convex optimization problems natural mathematical syntax.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"a-simple-example-least-squares","dir":"Articles","previous_headings":"","what":"A Simple Example: Least Squares","title":"Introduction to CVXR","text":"Consider simple linear regression problem want estimate parameters using least squares criterion. generate synthetic data know true model: Y=Xβ+ϵ Y = X\\beta + \\epsilon YY 100×1100 \\times 1 vector, XX 100×10100 \\times 10 matrix, β=(−4,−3,…,5)⊤\\beta = (-4, -3, \\ldots, 5)^\\top 10×110 \\times 1 vector, ϵ∼N(0,1)\\epsilon \\sim N(0, 1). Using base R, can estimate β\\beta via lm:","code":"set.seed(123) n <- 100 p <- 10 beta <- -4:5 X <- matrix(rnorm(n * p), nrow = n) Y <- X %*% beta + rnorm(n) ls.model <- lm(Y ~ 0 + X)"},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"the-cvxr-formulation","dir":"Articles","previous_headings":"A Simple Example: Least Squares","what":"The CVXR formulation","title":"Introduction to CVXR","text":"problem can expressed : minimizeβ∥Y−Xβ∥22 \\underset{\\beta}{\\text{minimize}} \\quad \\|Y - X\\beta\\|_2^2 CVXR, translates directly: optimal value estimated coefficients:","code":"library(CVXR) #> #> Attaching package: 'CVXR' #> The following objects are masked from 'package:stats': #> #> convolve, power, sd, var #> The following objects are masked from 'package:base': #> #> diag, norm, outer betaHat <- Variable(p) objective <- Minimize(sum((Y - X %*% betaHat)^2)) problem <- Problem(objective) result <- psolve(problem) ## use default solver cat(\"Optimal value:\", result, \"\\n\") #> Optimal value: 97.84759 cbind(CVXR = round(value(betaHat), 3), lm = round(coef(ls.model), 3)) #> lm #> X1 -3.920 -3.920 #> X2 -3.012 -3.012 #> X3 -2.125 -2.125 #> X4 -0.867 -0.867 #> X5 0.091 0.091 #> X6 0.949 0.949 #> X7 2.076 2.076 #> X8 3.127 3.127 #> X9 3.961 3.961 #> X10 5.135 5.135"},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"adding-constraints","dir":"Articles","previous_headings":"","what":"Adding Constraints","title":"Introduction to CVXR","text":"real power CVXR ability add constraints easily.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"nonnegative-least-squares","dir":"Articles","previous_headings":"Adding Constraints","what":"Nonnegative Least Squares","title":"Introduction to CVXR","text":"Suppose know β\\betas nonnegative:","code":"problem <- Problem(objective, constraints = list(betaHat >= 0)) result <- psolve(problem, solver = \"CLARABEL\") round(value(betaHat), 3) #> [,1] #> [1,] 0.000 #> [2,] 0.000 #> [3,] 0.000 #> [4,] 0.000 #> [5,] 1.237 #> [6,] 0.623 #> [7,] 2.123 #> [8,] 2.804 #> [9,] 4.445 #> [10,] 5.207"},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"custom-constraints","dir":"Articles","previous_headings":"Adding Constraints","what":"Custom Constraints","title":"Introduction to CVXR","text":"Now suppose β2+β3≤0\\beta_2 + \\beta_3 \\le 0 β\\betas nonnegative: demonstrates chief advantage CVXR: flexibility. Users can quickly modify re-solve problem, making package ideal prototyping new statistical methods. syntax simple mathematically intuitive.","code":"A <- matrix(c(0, 1, 1, rep(0, 7)), nrow = 1) B <- diag(c(1, 0, 0, rep(1, 7))) constraint1 <- A %*% betaHat <= 0 constraint2 <- B %*% betaHat >= 0 problem <- Problem(objective, constraints = list(constraint1, constraint2)) result <- psolve(problem, solver = \"CLARABEL\", verbose = TRUE) ## verbose = TRUE for details #> ────────────────────────────────── CVXR v1.9.1 ───────────────────────────────── #> ℹ Problem: 1 variable, 2 constraints (QP) #> ℹ Compilation: \"CLARABEL\" via CVXR::Dcp2Cone -> CVXR::CvxAttr2Constr -> CVXR::ConeMatrixStuffing -> CVXR::Clarabel_Solver #> ℹ Compile time: 0.013s #> ─────────────────────────────── Numerical solver ─────────────────────────────── #> ──────────────────────────────────── Summary ─────────────────────────────────── #> ✔ Status: optimal #> ✔ Optimal value: 1287.63 #> ℹ Compile time: 0.013s #> ℹ Solver time: 0.011s round(value(betaHat), 3) #> [,1] #> [1,] 0.000 #> [2,] -2.845 #> [3,] -1.711 #> [4,] 0.000 #> [5,] 0.664 #> [6,] 1.178 #> [7,] 2.329 #> [8,] 2.414 #> [9,] 4.212 #> [10,] 4.948"},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"available-solvers","dir":"Articles","previous_headings":"","what":"Available Solvers","title":"Introduction to CVXR","text":"CVXR supports 15 solvers, open source commercial: Clarabel, SCS, OSQP, HiGHS, MOSEK, Gurobi, GLPK, GLPK_MI, ECOS, ECOS_BB, CPLEX, CVXOPT, PIQP, SCIP, XPRESS. Smooth nonlinear programs additionally use IPOPT UNO solvers. can specify solver explicitly:","code":"installed_solvers() #> [1] \"CLARABEL\" \"SCS\" \"OSQP\" \"HIGHS\" \"MOSEK\" \"GUROBI\" #> [7] \"GLPK\" \"GLPK_MI\" \"ECOS\" \"ECOS_BB\" \"CPLEX\" \"CVXOPT\" #> [13] \"PIQP\" \"SCIP\" \"XPRESS\" psolve(problem, solver = \"CLARABEL\")"},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"whats-new","dir":"Articles","previous_headings":"","what":"What’s New","title":"Introduction to CVXR","text":"Recent releases add disciplined nonlinear programming (psolve(prob, nlp = TRUE)), bounds propagation expressions (get_bounds()), derivative / sensitivity-analysis API (requires_grad = TRUE), new atoms convolve(). CVXR also supports element-wise matrix indexing using R’s native idioms: release--release summary see vignette(\"whats_new\"), news(package = \"CVXR\") full details.","code":"ind <- which(!is.na(Rmiss), arr.ind = TRUE) prob <- Problem(Minimize(obj), list(X[ind] == Rmiss[ind]))"},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"further-reading","dir":"Articles","previous_headings":"","what":"Further Reading","title":"Introduction to CVXR","text":"CVXR website many worked examples CVXPY documentation covers underlying mathematical framework published paper: Fu, Narasimhan, Boyd (2020). “CVXR: R Package Disciplined Convex Optimization.” Journal Statistical Software, 94(14), DOI:10.18637/jss.v094.i14.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"session-info","dir":"Articles","previous_headings":"","what":"Session Info","title":"Introduction to CVXR","text":"","code":"sessionInfo() #> R version 4.6.0 (2026-04-24) #> Platform: aarch64-apple-darwin23 #> Running under: macOS Tahoe 26.5.1 #> #> Matrix products: default #> BLAS: /Library/Frameworks/R.framework/Versions/4.6/Resources/lib/libRblas.0.dylib #> LAPACK: /Library/Frameworks/R.framework/Versions/4.6/Resources/lib/libRlapack.dylib; LAPACK version 3.12.1 #> #> locale: #> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 #> #> time zone: America/Los_Angeles #> tzcode source: internal #> #> attached base packages: #> [1] stats graphics grDevices utils datasets methods base #> #> other attached packages: #> [1] CVXR_1.9.1 #> #> loaded via a namespace (and not attached): #> [1] Matrix_1.7-5 piqp_0.6.2 jsonlite_2.0.0 compiler_4.6.0 #> [5] highs_1.12.0-3 Rcpp_1.1.1-1.1 slam_0.1-55 cccp_0.3-3 #> [9] jquerylib_0.1.4 systemfonts_1.3.2 textshaping_1.0.5 yaml_2.3.12 #> [13] fastmap_1.2.0 clarabel_0.11.2 lattice_0.22-9 R6_2.6.1 #> [17] scip_1.10.0-3 knitr_1.51 htmlwidgets_1.6.4 backports_1.5.1 #> [21] Rcplex_0.3-8 checkmate_2.3.4 gurobi_13.0-1 desc_1.4.3 #> [25] osqp_1.0.0 bslib_0.11.0 rlang_1.2.0 cachem_1.1.0 #> [29] xfun_0.57 fs_2.1.0 sass_0.4.10 S7_0.2.2 #> [33] otel_0.2.0 cli_3.6.6 pkgdown_2.2.0 Rglpk_0.6-5.1 #> [37] digest_0.6.39 grid_4.6.0 xpress_9.8.2 gmp_0.7-5.1 #> [41] lifecycle_1.0.5 ECOSolveR_0.6.1 scs_3.2.7 evaluate_1.0.5 #> [45] codetools_0.2-20 Rmosek_11.1.2 ragg_1.5.2 rmarkdown_2.31 #> [49] tools_4.6.0 htmltools_0.5.9"},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"cvxr-19x","dir":"Articles","previous_headings":"","what":"CVXR 1.9.1","title":"What's New in CVXR","text":"CVXR 1.9.1 first CRAN release since 1.8.2 large one: folds internal 1.8.2-1 1.9.0 development cycles. headline additions disciplined nonlinear programming, derivative / sensitivity-analysis API, interval-bounds propagation native solver-bound support.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"disciplined-nonlinear-programming-dnlp","dir":"Articles","previous_headings":"CVXR 1.9.1","what":"Disciplined Nonlinear Programming (DNLP)","title":"What's New in CVXR","text":"CVXR 1.9.1 extends modeling beyond convex optimization smooth nonlinear programs, need convex. build problem differentiable atoms, check is_dnlp(), solve psolve(prob, nlp = TRUE). Every DCP problem also DNLP, disciplined nonlinear grammar additionally allows smooth atoms forms DCP forbids (example, product two variable-dependent expressions). New smooth atoms usable anywhere DNLP: sin(), cos(), tan(), sinh(), tanh(), asinh(), atanh(), normcdf(), prod(). Nonconvex problems may several local optima. best_of = n solves n random initial points (drawn variable bounds sample_bounds()) keeps best. NLP path powered automatic derivatives optional sparsediff package nonlinear solver. Two supported, Enhances (guard use requireNamespace()): UNO (Uno package — headed CRAN, self-contained, practical default R users) IPOPT (ipopt package — CRAN owing licensing, rarely installed). nlp = TRUE, IPOPT preferred present (matching CVXPY), otherwise UNO used. UNO path also recovers constraint duals via dual_value(); IPOPT path returns none, matching CVXPY. See DNLP Tutorial worked examples.","code":"x <- Variable(2) prob <- Problem(Minimize(sum_squares(x - c(1, 2)))) is_dnlp(prob) # TRUE psolve(prob, nlp = TRUE) # solved through the NLP path"},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"derivatives-and-sensitivity-analysis","dir":"Articles","previous_headings":"CVXR 1.9.1","what":"Derivatives and sensitivity analysis","title":"What's New in CVXR","text":"CVXR 1.9.1 adds ability differentiate solution map disciplined problem — see optimal solution responds small changes parameters (sensitivity analysis) compute gradients scalar functions solution. Request derivatives solve time requires_grad = TRUE. Forward mode (perturb parameters, see change solution): Reverse mode (gradient solution respect parameters): chain rule wired Dgp2Dcp (log/exp) Complex2Real reductions, geometric complex problems differentiate . derivative API backed optional diffcp R package. See Derivatives examples Sensitivity Analysis.","code":"psolve(problem, requires_grad = TRUE) delta(a) <- da # perturbation of parameter a derivative(problem) # propagate forward delta(x) # resulting change in variable x psolve(problem, requires_grad = TRUE) backward(problem) # propagate backward gradient(a) # d(solution) / d(a)"},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"bounds-propagation-and-richer-variable-bounds","dir":"Articles","previous_headings":"CVXR 1.9.1","what":"Bounds propagation and richer variable bounds","title":"What's New in CVXR","text":"get_bounds() now works expression, just variables, propagating interval bounds affine, elementwise, piecewise-linear atoms: Variable bounds may also sparse Matrix objects symbolic bounds involving Parameters; symbolic bounds enforced solve time update DPP re-solves. Positive (DGP) variables accept numeric parametric bounds gp = TRUE.","code":"x <- Variable(3, bounds = list(-1, 2)) get_bounds(A %*% x + b) # bounds propagated through the affine map get_bounds(abs(x)) # and through atoms"},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"new-atoms-and-dpp-refinements","dir":"Articles","previous_headings":"CVXR 1.9.1","what":"New atoms and DPP refinements","title":"What's New in CVXR","text":"convolve() — (numpy-style) name 1-D discrete-convolution conv() atom; falls stats::convolve() numeric input. is_dpp() gains context argument (\"dcp\" \"dgp\"), matching CVXPY’s is_dpp(context = ...).","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"solvers","dir":"Articles","previous_headings":"CVXR 1.9.1","what":"Solvers","title":"What's New in CVXR","text":"CPLEX now solves LP / SOCP / MI-LP / MI-SOCP conic path. Native variable bounds: HiGHS, Gurobi, CPLEX, XPRESS, PIQP, SCIP now consume dense numeric variable bounds directly (including parametric bounds HiGHS), avoiding extra bound constraints speeding DPP re-solves.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"bug-fixes-also-affected-1-8-x","dir":"Articles","previous_headings":"CVXR 1.9.1","what":"Bug fixes (also affected 1.8.x)","title":"What's New in CVXR","text":"problem_data() / get_problem_data() now take explicit gp argument; previously gp = TRUE passed ... silently ignored, compiling geometric program DCP problem. psolve() now takes explicit enforce_dpp ignore_dpp arguments, matching CVXPY’s solve(); previously silently swallowed ....","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"performance","dir":"Articles","previous_headings":"CVXR 1.9.1","what":"Performance","title":"What's New in CVXR","text":"Canonicalization solving now faster 1.8.2 CRAN release (roughly 5–13% lower wall-clock solve-dominated problems many small constraints, SOCPs, Kalman smoothing), deterministic memory allocation unchanged.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"complete-rewrite-using-s7","dir":"Articles","previous_headings":"CVXR 1.8.x","what":"Complete Rewrite Using S7","title":"What's New in CVXR","text":"CVXR 1.8.x ground-rewrite using R’s S7 object system, designed isomorphic CVXPY 1.8.2 long-term maintainability. approximately 4–5x faster previous S4-based release. section summarizes key changes CVXR 1.x may affect users.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"new-features","dir":"Articles","previous_headings":"CVXR 1.8.x","what":"New Features","title":"What's New in CVXR","text":"S7 class system replaces S4 expression, constraint, problem classes. Significantly faster construction method dispatch. 15 solvers: CLARABEL (default), SCS, OSQP, HiGHS, MOSEK, Gurobi, GLPK, GLPK_MI, ECOS, ECOS_BB, CPLEX, CVXOPT, PIQP, SCIP, XPRESS. Mixed-integer programming via GLPK_MI, ECOS_BB, Gurobi, CPLEX, HiGHS, SCIP, XPRESS (boolean = TRUE integer = TRUE Variable()). Parameter support via Parameter() class EvalParams reduction. 50+ atom classes covering LP, QP, SOCP, SDP, exponential cone, power cone problems. DPP (Disciplined Parameterized Programming) efficient parameter re-solve compilation caching. DGP (Disciplined Geometric Programming) via psolve(prob, gp = TRUE). DQCP (Disciplined Quasiconvex Programming) via psolve(prob, qcp = TRUE). Complex variable support via Variable(n, complex = TRUE). Warm-start support several solvers (OSQP, SCS, Gurobi, MOSEK, CLARABEL, HiGHS). Matrix package interoperability via as_cvxr_expr(). Matrix package objects (dgCMatrix, dgeMatrix, dsCMatrix, ddiMatrix, sparseVector) use S4 dispatch preempts S7/S3, used directly CVXR operators. Wrapping as_cvxr_expr() converts CVXR Constant objects preserving sparsity (unlike .matrix() densifies). Base R matrix numeric objects work natively without wrapping.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"new-solve-interface","dir":"Articles","previous_headings":"CVXR 1.8.x","what":"New solve interface","title":"What's New in CVXR","text":"primary solve function now psolve(), returns optimal value directly: old solve() still works returns backward-compatible list:","code":"library(CVXR) x <- Variable(2) prob <- Problem(Minimize(sum_squares(x)), list(x >= 1)) opt_val <- psolve(prob) # returns optimal value directly x_val <- value(x) # extract variable value prob_status <- status(prob) # check status result <- solve(prob) result$value # optimal value result$getValue(x) # variable value (deprecated) result$status # problem status"},{"path":[]},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"axis-parameter-changes","dir":"Articles","previous_headings":"CVXR 1.8.x > Breaking Changes from CVXR 1.x","what":"Axis parameter changes","title":"What's New in CVXR","text":"axis parameter now uses R’s apply() convention (1-based indexing): Passing axis = 0 now produces informative error migration guidance.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"psd-constraints","dir":"Articles","previous_headings":"CVXR 1.8.x > Breaking Changes from CVXR 1.x","what":"PSD constraints","title":"What's New in CVXR","text":"PSD constraints use PSD(- B) instead %>>% B (though %>>% %<<% operators still available backward compatibility).","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"solver-changes","dir":"Articles","previous_headings":"CVXR 1.8.x > Breaking Changes from CVXR 1.x","what":"Solver changes","title":"What's New in CVXR","text":"Removed: CBC Added: HiGHS (LP, QP, MILP), Gurobi (LP, QP, SOCP, MIP), CVXOPT (LP, SOCP), PIQP (QP), SCIP, XPRESS Default solver: CLARABEL (replaces ECOS)","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"supported-solvers","dir":"Articles","previous_headings":"CVXR 1.8.x > Breaking Changes from CVXR 1.x","what":"Supported solvers","title":"What's New in CVXR","text":"Smooth nonlinear programs additionally use IPOPT UNO NLP solvers (see CVXR 1.9.1).","code":""},{"path":[]},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"math-function-dispatch","dir":"Articles","previous_headings":"CVXR 1.8.x > New Atoms and Functions","what":"Math function dispatch","title":"What's New in CVXR","text":"Standard R math functions work directly CVXR expressions:","code":"x <- Variable(3) abs(x) # elementwise absolute value sqrt(x) # elementwise square root sum(x) # sum of entries max(x) # maximum entry norm(x, \"2\") # Euclidean norm"},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"boolean-logic-atoms","dir":"Articles","previous_headings":"CVXR 1.8.x > New Atoms and Functions","what":"Boolean logic atoms","title":"What's New in CVXR","text":"mixed-integer programming: (), (), (), Xor(), implies(), iff().","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"other-new-atoms","dir":"Articles","previous_headings":"CVXR 1.8.x > New Atoms and Functions","what":"Other new atoms","title":"What's New in CVXR","text":"perspective(f, s) perspective functions FiniteSet(expr, values) constraint discrete optimization ceil_expr(), floor_expr() DQCP problems condition_number(), gen_lambda_max(), dist_ratio() DQCP","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"backward-compatibility-aliases","dir":"Articles","previous_headings":"CVXR 1.8.x","what":"Backward-Compatibility Aliases","title":"What's New in CVXR","text":"tv() deprecated; use total_variation() (still works warns ) norm2(x) deprecated; use p_norm(x, 2) (still works warns ) multiply(x, y) deprecated; use x * y elementwise multiplication Old solve() still works returns compatibility list Old function names (problem_status, getValue, etc.) still work emit -per-session deprecation warnings","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"migration-guide","dir":"Articles","previous_headings":"CVXR 1.8.x","what":"Migration Guide","title":"What's New in CVXR","text":"migrate code CVXR 1.x 1.8.x: Replace result <- solve(problem) opt_val <- psolve(problem) Replace result$getValue(x) value(x) Replace result$value return value psolve() Replace result$status status(problem) Replace result$getDualValue(con) dual_value(con) Update solver names: \"ECOS\" → \"CLARABEL\", \"GLPK\" → \"HIGHS\" Update axis arguments: axis = NA → axis = NULL (row/column axis values 1 2 unchanged) Replace %>>% B PSD(- B) desired Wrap Matrix package objects as_cvxr_expr() using CVXR expressions (e.g., as_cvxr_expr() %*% x instead %*% x dgCMatrix Matrix class). preserves sparsity. Base R matrices need wrapping. Dimension-preserving operations. CVXR 1.8 preserves 2D shapes throughout, matching CVXPY. particular, axis reductions like sum_entries(X, axis = 2) now return proper row vector shape (1, n) rather collapsing 1D vector. comparing result R numeric vector (CVXR treats column), may need use t() matrix(..., nrow = 1) match shapes: Similarly, extract scalar CVXR result need plain numeric value, use .numeric() drop matrix dimensions.","code":"## Old (worked in CVXR 1.x because axis reductions were 1D): sum_entries(X, axis = 2) == target_vec ## New (wrap target as row vector to match the (1, n) shape): sum_entries(X, axis = 2) == t(target_vec)"},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"cran-submission-tip","dir":"Articles","previous_headings":"CVXR 1.8.x","what":"CRAN Submission Tip","title":"What's New in CVXR","text":"encounter issues involving Rmosek package submitting package CRAN, include following code /R/zzz.R resolve issue.","code":"## Content of /R/zzz.R .onLoad <- function(libname, pkgname) { CVXR::exclude_solvers(\"MOSEK\") } .onUnload <- function(libname, pkgname) { CVXR::include_solvers(\"MOSEK\") }"},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"further-reading","dir":"Articles","previous_headings":"CVXR 1.8.x","what":"Further Reading","title":"What's New in CVXR","text":"CVXR website — worked examples Package reference — full API documentation CVXPY documentation — mathematical framework Fu, Narasimhan, Boyd (2020). “CVXR: R Package Disciplined Convex Optimization.” Journal Statistical Software, 94(14). doi:10.18637/jss.v094.i14","code":""},{"path":"https://www.cvxgrp.org/CVXR/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Anqi Fu. Author, maintainer. Balasubramanian Narasimhan. Author. Steven Diamond. Author. John Miller. Author. Stephen Boyd. Contributor.","code":""},{"path":"https://www.cvxgrp.org/CVXR/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Fu , Narasimhan B, Boyd S (2020). “CVXR: R Package Disciplined Convex Optimization.” Journal Statistical Software, 94(14), 1–34. doi:10.18637/jss.v094.i14.","code":"@Article{, title = {{CVXR}: An {R} Package for Disciplined Convex Optimization}, author = {Anqi Fu and Balasubramanian Narasimhan and Stephen Boyd}, journal = {Journal of Statistical Software}, year = {2020}, volume = {94}, number = {14}, pages = {1--34}, doi = {10.18637/jss.v094.i14}, }"},{"path":"https://www.cvxgrp.org/CVXR/index.html","id":"cvxr-","dir":"","previous_headings":"","what":"Disciplined Convex Optimization","title":"Disciplined Convex Optimization","text":"CVXR provides object-oriented modeling language convex optimization, similar CVXPY, CVX, YALMIP, Convex.jl. allows formulate convex optimization problems natural mathematical syntax rather restrictive standard form required solvers. specify objective set constraints combining constants, variables, parameters using library functions known mathematical properties. CVXR applies signed disciplined convex programming (DCP) verify problem’s convexity. verified, problem converted standard conic form passed appropriate backend solver. version ground-rewrite built S7 object system, designed mirror CVXPY 1.8 closely. ~4–5x faster previous S4-based release, ships 13 solvers (4 built-), supports DCP, DGP, DQCP, complex variables, mixed-integer programming, warm-starting. tutorials, worked examples, full story, visit CVXR website.","code":""},{"path":"https://www.cvxgrp.org/CVXR/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Disciplined Convex Optimization","text":"Install released version CRAN: install development version GitHub:","code":"install.packages(\"CVXR\") # install.packages(\"pak\") pak::pak(\"cvxgrp/CVXR\")"},{"path":"https://www.cvxgrp.org/CVXR/index.html","id":"quick-example","dir":"","previous_headings":"","what":"Quick example","title":"Disciplined Convex Optimization","text":"","code":"library(CVXR) # Data set.seed(42) n <- 50; p <- 10 X <- matrix(rnorm(n * p), n, p) beta_true <- c(rep(1, 5), rep(0, 5)) y <- X %*% beta_true + rnorm(n, sd = 0.5) # Problem beta <- Variable(p) objective <- Minimize(sum_squares(y - X %*% beta) + 0.1 * p_norm(beta, 1)) prob <- Problem(objective) # Solve (Clarabel is the default solver) result <- psolve(prob) result # optimal value estimated <- value(beta) # coefficient estimates"},{"path":"https://www.cvxgrp.org/CVXR/index.html","id":"documentation","dir":"","previous_headings":"","what":"Documentation","title":"Disciplined Convex Optimization","text":"Tutorials examples: https://cvxr.rbind.io Package reference: https://www.cvxgrp.org/CVXR/ Paper: Fu, Narasimhan, Boyd (2020). “CVXR: R Package Disciplined Convex Optimization.” Journal Statistical Software, 94(14), 1–34. doi:10.18637/jss.v094.i14 use CVXR work, please cite paper (citation(\"CVXR\")).","code":""},{"path":"https://www.cvxgrp.org/CVXR/index.html","id":"license","dir":"","previous_headings":"","what":"License","title":"Disciplined Convex Optimization","text":"Apache License 2.0","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/And.html","id":null,"dir":"Reference","previous_headings":"","what":"Logical AND — And","title":"Logical AND — And","text":"Returns 1 arguments equal 1, 0 otherwise. two operands, can also written & operator: x & y.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/And.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logical AND — And","text":"","code":"And(..., id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/And.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logical AND — And","text":"... Two boolean Variables logic expressions. id Optional integer ID (internal use).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/And.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logical AND — And","text":"expression.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/And.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Logical AND — And","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(boolean = TRUE) y <- Variable(boolean = TRUE) both <- x & y # operator syntax both <- And(x, y) # functional syntax all3 <- And(x, y, z) # n-ary } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/CVXR-package.html","id":null,"dir":"Reference","previous_headings":"","what":"CVXR: Disciplined Convex Optimization — CVXR-package","title":"CVXR: Disciplined Convex Optimization — CVXR-package","text":"object-oriented modeling language disciplined convex programming (DCP) described Fu, Narasimhan, Boyd (2020, doi:10.18637/jss.v094.i14 ). allows user formulate convex optimization problems natural way following mathematical convention DCP rules. system analyzes problem, verifies convexity, converts canonical form, hands appropriate solver obtain solution. version uses S7 object system improved performance maintainability.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/CVXR-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"CVXR: Disciplined Convex Optimization — CVXR-package","text":"Maintainer: Anqi Fu anqif@alumni.stanford.edu Authors: Anqi Fu anqif@alumni.stanford.edu Balasubramanian Narasimhan naras@stat.stanford.edu Steven Diamond John Miller contributors: Stephen Boyd boyd@stanford.edu [contributor]","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/CallbackParam.html","id":null,"dir":"Reference","previous_headings":"","what":"Callback Parameter — CallbackParam","title":"Callback Parameter — CallbackParam","text":"Parameter whose value computed user-supplied callback function rather stored explicitly. Mirrors CVXPY's cp.CallbackParam (cvxpy/expressions/constants/callback_param.py).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/CallbackParam.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Callback Parameter — CallbackParam","text":"","code":"CallbackParam( callback, shape = c(1L, 1L), name = NULL, id = NULL, latex_name = NULL, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/CallbackParam.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Callback Parameter — CallbackParam","text":"callback function (arguments) returning parameter's numeric value. Re-evaluated every read value(param). shape Integer vector length 1 2 giving parameter dimensions. Defaults c(1, 1) (scalar). name Optional character string name. id Optional integer ID. NULL, unique ID generated. latex_name Optional LaTeX name visualisation. ... Parameter attributes (e.g., nonneg, nonpos).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/CallbackParam.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Callback Parameter — CallbackParam","text":"CallbackParam object (subclass Parameter).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/CallbackParam.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Callback Parameter — CallbackParam","text":"call value(param) re-evaluates callback validates returned numeric parameter's shape attribute domain. Setting via value(param) <- v allowed signals error.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/CallbackParam.html","id":"dpp-use","dir":"Reference","previous_headings":"","what":"DPP use","title":"Callback Parameter — CallbackParam","text":"p q scalar Parameters, expression p * q DPP. Wrapping CallbackParam, yields DPP-compliant Parameter whose value tracks p q automatically.","code":"pq <- CallbackParam(callback = function() value(p) * value(q))"},{"path":"https://www.cvxgrp.org/CVXR/reference/CallbackParam.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Callback Parameter — CallbackParam","text":"","code":"p <- Parameter(); value(p) <- 2 q <- Parameter(); value(q) <- 3 pq <- CallbackParam(callback = function() value(p) * value(q)) value(pq) # evaluates the callback => 6 #> [,1] #> [1,] 6"},{"path":"https://www.cvxgrp.org/CVXR/reference/Constant.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Constant Expression — Constant","title":"Create a Constant Expression — Constant","text":"Wraps numeric value CVXR constant use optimization expressions. Constants typically created implicitly combining numeric values CVXR expressions via arithmetic operators.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Constant.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Constant Expression — Constant","text":"","code":"Constant(value, name = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Constant.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Constant Expression — Constant","text":"value numeric scalar, vector, matrix, sparse matrix. name Optional character string name.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Constant.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Constant Expression — Constant","text":"Constant object (inherits Leaf Expression).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Constant.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a Constant Expression — Constant","text":"","code":"c1 <- Constant(5) c2 <- Constant(matrix(1:6, 2, 3))"},{"path":"https://www.cvxgrp.org/CVXR/reference/DCPError.html","id":null,"dir":"Reference","previous_headings":"","what":"DCP Error condition — DCPError","title":"DCP Error condition — DCPError","text":"Creates custom R condition class \"DCPError\" disciplined convex programming violations.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/DCPError.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"DCP Error condition — DCPError","text":"","code":"DCPError(message, call = sys.call(-1L))"},{"path":"https://www.cvxgrp.org/CVXR/reference/DCPError.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"DCP Error condition — DCPError","text":"message Character error message call call include condition (default: caller's call)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/DCPError.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"DCP Error condition — DCPError","text":"condition object class c(\"DCPError\", \"error\", \"condition\")","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagMat.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract Diagonal from a Matrix — DiagMat","title":"Extract Diagonal from a Matrix — DiagMat","text":"Extracts k-th diagonal square matrix column vector.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagMat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract Diagonal from a Matrix — DiagMat","text":"","code":"DiagMat(x, k = 0L, id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagMat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract Diagonal from a Matrix — DiagMat","text":"x CVXR expression (square matrix). k Integer diagonal offset. k = 0 (default) main diagonal, k > 0 , k < 0 . id Optional integer ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagMat.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract Diagonal from a Matrix — DiagMat","text":"DiagMat expression shape c(n - abs(k), 1).","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagVec.html","id":null,"dir":"Reference","previous_headings":"","what":"Vector to Diagonal Matrix — DiagVec","title":"Vector to Diagonal Matrix — DiagVec","text":"Constructs diagonal matrix column vector. k != 0, vector placed k-th super- sub-diagonal.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagVec.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Vector to Diagonal Matrix — DiagVec","text":"","code":"DiagVec(x, k = 0L, id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagVec.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Vector to Diagonal Matrix — DiagVec","text":"x CVXR expression (column vector). k Integer diagonal offset. k = 0 (default) main diagonal, k > 0 , k < 0 . id Optional integer ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagVec.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Vector to Diagonal Matrix — DiagVec","text":"DiagVec expression shape c(n + abs(k), n + abs(k)).","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Equality.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an Equality Constraint — Equality","title":"Create an Equality Constraint — Equality","text":"Constrains two expressions equal elementwise: \\(lhs = rhs\\). Typically created via == operator CVXR expressions.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Equality.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an Equality Constraint — Equality","text":"","code":"Equality(lhs, rhs, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Equality.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an Equality Constraint — Equality","text":"lhs CVXR expression (left-hand side). rhs CVXR expression (right-hand side). constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Equality.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an Equality Constraint — Equality","text":"Equality constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/ExpCone.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an Exponential Cone Constraint — ExpCone","title":"Create an Exponential Cone Constraint — ExpCone","text":"Constrains \\((x, y, z)\\) lie exponential cone: $$K = \\{(x,y,z) \\mid y \\exp(x/y) \\le z,\\; y > 0\\}$$","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ExpCone.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an Exponential Cone Constraint — ExpCone","text":"","code":"ExpCone(x_expr, y_expr, z_expr, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/ExpCone.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an Exponential Cone Constraint — ExpCone","text":"x_expr CVXR expression. y_expr CVXR expression. z_expr CVXR expression. constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ExpCone.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an Exponential Cone Constraint — ExpCone","text":"ExpCone constraint object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ExpCone.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create an Exponential Cone Constraint — ExpCone","text":"three arguments must affine, real, shape.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/FiniteSet.html","id":null,"dir":"Reference","previous_headings":"","what":"FiniteSet Constraint — FiniteSet","title":"FiniteSet Constraint — FiniteSet","text":"Constrain entry Expression take value given finite set real numbers.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/FiniteSet.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"FiniteSet Constraint — FiniteSet","text":"","code":"FiniteSet(expre, vec, ineq_form = FALSE, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/FiniteSet.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"FiniteSet Constraint — FiniteSet","text":"expre affine Expression. vec numeric vector (set) allowed values. ineq_form Logical; controls MIP canonicalization strategy. FALSE (default), uses equality formulation (one-hot binary). TRUE, uses inequality formulation (sorted differences + ordering). constr_id Optional integer constraint ID (internal use).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/FiniteSet.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"FiniteSet Constraint — FiniteSet","text":"FiniteSet constraint.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Inequality.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an Inequality Constraint — Inequality","title":"Create an Inequality Constraint — Inequality","text":"Constrains left-hand side less equal right-hand side elementwise: \\(lhs \\le rhs\\). Typically created via <= operator CVXR expressions.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Inequality.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an Inequality Constraint — Inequality","text":"","code":"Inequality(lhs, rhs, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Inequality.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an Inequality Constraint — Inequality","text":"lhs CVXR expression (left-hand side). rhs CVXR expression (right-hand side). constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Inequality.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an Inequality Constraint — Inequality","text":"Inequality constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Maximize.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Maximization Objective — Maximize","title":"Create a Maximization Objective — Maximize","text":"Specifies objective expression maximized. expression must concave scalar DCP-compliant problem.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Maximize.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Maximization Objective — Maximize","text":"","code":"Maximize(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Maximize.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Maximization Objective — Maximize","text":"expr CVXR expression numeric value maximize.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Maximize.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Maximization Objective — Maximize","text":"Maximize object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Maximize.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a Maximization Objective — Maximize","text":"","code":"x <- Variable() obj <- Maximize(-x^2 + 1)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Minimize.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Minimization Objective — Minimize","title":"Create a Minimization Objective — Minimize","text":"Specifies objective expression minimized. expression must convex scalar DCP-compliant problem.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Minimize.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Minimization Objective — Minimize","text":"","code":"Minimize(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Minimize.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Minimization Objective — Minimize","text":"expr CVXR expression numeric value minimize.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Minimize.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Minimization Objective — Minimize","text":"Minimize object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Minimize.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a Minimization Objective — Minimize","text":"","code":"x <- Variable() obj <- Minimize(x^2 + 1)"},{"path":"https://www.cvxgrp.org/CVXR/reference/NonNeg.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Non-Negative Constraint — NonNeg","title":"Create a Non-Negative Constraint — NonNeg","text":"Constrains expression non-negative elementwise: \\(x \\ge 0\\).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/NonNeg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Non-Negative Constraint — NonNeg","text":"","code":"NonNeg(expr, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/NonNeg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Non-Negative Constraint — NonNeg","text":"expr CVXR expression. constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/NonNeg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Non-Negative Constraint — NonNeg","text":"NonNeg constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/NonPos.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Non-Positive Constraint — NonPos","title":"Create a Non-Positive Constraint — NonPos","text":"Constrains expression non-positive elementwise: \\(x \\le 0\\).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/NonPos.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Non-Positive Constraint — NonPos","text":"","code":"NonPos(expr, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/NonPos.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Non-Positive Constraint — NonPos","text":"expr CVXR expression. constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/NonPos.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Non-Positive Constraint — NonPos","text":"NonPos constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Not.html","id":null,"dir":"Reference","previous_headings":"","what":"Logical NOT — Not","title":"Logical NOT — Not","text":"Returns 1 - x, flipping 0 1 1 0. Can also written ! operator: !x.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Not.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logical NOT — Not","text":"","code":"Not(x, id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Not.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logical NOT — Not","text":"x boolean Variable logic expression. id Optional integer ID (internal use).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Not.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logical NOT — Not","text":"expression.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Not.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Logical NOT — Not","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(boolean = TRUE) not_x <- !x # operator syntax not_x <- Not(x) # functional syntax } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/Or.html","id":null,"dir":"Reference","previous_headings":"","what":"Logical OR — Or","title":"Logical OR — Or","text":"Returns 1 least one argument equals 1, 0 otherwise. two operands, can also written | operator: x | y.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Or.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logical OR — Or","text":"","code":"Or(..., id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Or.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logical OR — Or","text":"... Two boolean Variables logic expressions. id Optional integer ID (internal use).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Or.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logical OR — Or","text":"expression.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Or.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Logical OR — Or","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(boolean = TRUE) y <- Variable(boolean = TRUE) either <- x | y # operator syntax either <- Or(x, y) # functional syntax any3 <- Or(x, y, z) # n-ary } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/PSD.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Positive Semidefinite Constraint — PSD","title":"Create a Positive Semidefinite Constraint — PSD","text":"Constrains square matrix expression positive semidefinite (PSD): \\(X \\succeq 0\\). expression must square.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PSD.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Positive Semidefinite Constraint — PSD","text":"","code":"PSD(expr, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/PSD.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Positive Semidefinite Constraint — PSD","text":"expr CVXR expression representing square matrix. constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PSD.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Positive Semidefinite Constraint — PSD","text":"PSD constraint object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Parameter.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Parameter — Parameter","title":"Create a Parameter — Parameter","text":"Constructs parameter whose numeric value can changed without re-canonicalizing problem. Parameters treated constants DCP purposes value can updated solves.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Parameter.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Parameter — Parameter","text":"","code":"Parameter( shape = c(1L, 1L), name = NULL, value = NULL, id = NULL, latex_name = NULL, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/Parameter.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Parameter — Parameter","text":"shape Integer vector length 1 2 giving parameter dimensions. scalar n interpreted c(n, 1). Defaults c(1, 1) (scalar). name Optional character string name. NULL, automatic name \"param\" generated. value Optional initial numeric value. id Optional integer ID. latex_name Optional character string giving custom LaTeX name use visualizations. example, \"\\\\gamma\". NULL (default), visualizations auto-generate LaTeX name. ... Additional attributes: nonneg, nonpos, etc.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Parameter.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Parameter — Parameter","text":"Parameter object (inherits Leaf Expression).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Parameter.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a Parameter — Parameter","text":"","code":"p <- Parameter() value(p) <- 5 p_vec <- Parameter(3, nonneg = TRUE) gamma <- Parameter(1, name = \"gamma\", latex_name = \"\\\\gamma\")"},{"path":"https://www.cvxgrp.org/CVXR/reference/PartialProblem.html","id":null,"dir":"Reference","previous_headings":"","what":"Partial optimization of a Problem — PartialProblem","title":"Partial optimization of a Problem — PartialProblem","text":"PartialProblem Expression represents optimal value inner Problem function variables choose optimise . Build one partial_optimize() rather constructing class directly.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PartialProblem.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Partial optimization of a Problem — PartialProblem","text":"","code":"PartialProblem( prob, opt_vars, dont_opt_vars, solver = NULL, solve_kwargs = list(), id = NULL )"},{"path":"https://www.cvxgrp.org/CVXR/reference/PowCone3D.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a 3D Power Cone Constraint — PowCone3D","title":"Create a 3D Power Cone Constraint — PowCone3D","text":"Constrains \\((x, y, z)\\) lie 3D power cone: $$x^\\alpha \\cdot y^{1-\\alpha} \\ge |z|, \\quad x \\ge 0, \\; y \\ge 0$$","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PowCone3D.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a 3D Power Cone Constraint — PowCone3D","text":"","code":"PowCone3D(x_expr, y_expr, z_expr, alpha, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/PowCone3D.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a 3D Power Cone Constraint — PowCone3D","text":"x_expr CVXR expression. y_expr CVXR expression. z_expr CVXR expression. alpha CVXR expression numeric value \\((0, 1)\\). constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PowCone3D.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a 3D Power Cone Constraint — PowCone3D","text":"PowCone3D constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/PowConeND.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an N-Dimensional Power Cone Constraint — PowConeND","title":"Create an N-Dimensional Power Cone Constraint — PowConeND","text":"Constrains \\((W, z)\\) lie N-dimensional power cone: $$\\prod W_i^{\\alpha_i} \\ge |z|, \\quad W \\ge 0$$ \\(\\alpha_i > 0\\) \\(\\sum \\alpha_i = 1\\).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PowConeND.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an N-Dimensional Power Cone Constraint — PowConeND","text":"","code":"PowConeND(W, z, alpha, axis = 2L, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/PowConeND.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an N-Dimensional Power Cone Constraint — PowConeND","text":"W CVXR expression (vector matrix). z CVXR expression (scalar vector). alpha CVXR expression positive entries summing 1 along specified axis. axis Integer, 2 (default, column-wise) 1 (row-wise). constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PowConeND.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an N-Dimensional Power Cone Constraint — PowConeND","text":"PowConeND constraint object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PowConeND.html","id":"known-limitations","dir":"Reference","previous_headings":"","what":"Known limitations","title":"Create an N-Dimensional Power Cone Constraint — PowConeND","text":"R clarabel solver currently support PowConeND cone specification. Problems involving PowConeND (e.g., exact geometric mean 2 arguments) use SCS MOSEK solver, use approximation-based atoms (e.g., geo_mean(x, approx = TRUE)).","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Problem.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an Optimization Problem — Problem","title":"Create an Optimization Problem — Problem","text":"Constructs convex optimization problem objective list constraints. Use psolve solve problem.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Problem.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an Optimization Problem — Problem","text":"","code":"Problem(objective, constraints = list())"},{"path":"https://www.cvxgrp.org/CVXR/reference/Problem.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an Optimization Problem — Problem","text":"objective Minimize Maximize object. constraints list Constraint objects (e.g., created ==, <=, >= operators expressions). Defaults empty list (unconstrained).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Problem.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an Optimization Problem — Problem","text":"Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Problem.html","id":"known-limitations","dir":"Reference","previous_headings":"","what":"Known limitations","title":"Create an Optimization Problem — Problem","text":"Problems must contain least one Variable. Zero-variable problems (e.g., minimizing constant) cause internal error reduction pipeline.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Problem.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create an Optimization Problem — Problem","text":"","code":"x <- Variable(2) prob <- Problem(Minimize(sum_entries(x)), list(x >= 1))"},{"path":"https://www.cvxgrp.org/CVXR/reference/SOC.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Second-Order Cone Constraint — SOC","title":"Create a Second-Order Cone Constraint — SOC","text":"Constrains \\(\\|X_i\\|_2 \\le t_i\\) column row \\(\\), t vector X matrix.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SOC.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Second-Order Cone Constraint — SOC","text":"","code":"SOC(t, X, axis = 2L, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/SOC.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Second-Order Cone Constraint — SOC","text":"t CVXR expression (scalar vector) representing upper bound. X CVXR expression (vector matrix) whose columns/rows bounded. axis Integer, 2 (default, column-wise) 1 (row-wise). Determines whether columns (2) rows (1) X define individual cones. constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SOC.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Second-Order Cone Constraint — SOC","text":"SOC constraint object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SizeMetrics.html","id":null,"dir":"Reference","previous_headings":"","what":"Problem Size Metrics — SizeMetrics","title":"Problem Size Metrics — SizeMetrics","text":"Reports scalar-counts data-dimension metrics Problem. Constructed size_metrics; end users normally call size_metrics(prob) rather constructor directly.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SizeMetrics.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Problem Size Metrics — SizeMetrics","text":"","code":"SizeMetrics( num_scalar_variables = 0L, num_scalar_data = 0L, num_scalar_eq_constr = 0L, num_scalar_leq_constr = 0L, max_data_dimension = 0L, max_big_small_squared = 0 )"},{"path":"https://www.cvxgrp.org/CVXR/reference/SizeMetrics.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Problem Size Metrics — SizeMetrics","text":"num_scalar_variables Total scalar entries across variables problem. num_scalar_data Total scalar entries across constants parameters. num_scalar_eq_constr Total scalar entries equality (Equality, Zero) constraints. num_scalar_leq_constr Total scalar entries inequality (Inequality, NonNeg, NonPos) constraints. max_data_dimension Largest single dimension across data block (constant parameter). max_big_small_squared Maximum big * small^2 data blocks, big/small larger/ smaller dimension block.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SizeMetrics.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Problem Size Metrics — SizeMetrics","text":"SizeMetrics object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SolverError.html","id":null,"dir":"Reference","previous_headings":"","what":"Solver Error condition — SolverError","title":"Solver Error condition — SolverError","text":"Creates custom R condition class \"SolverError\" solver failures.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SolverError.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Solver Error condition — SolverError","text":"","code":"SolverError(message, call = sys.call(-1L))"},{"path":"https://www.cvxgrp.org/CVXR/reference/SolverError.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Solver Error condition — SolverError","text":"message Character error message call call include condition (default: caller's call)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SolverError.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Solver Error condition — SolverError","text":"condition object class c(\"SolverError\", \"error\", \"condition\")","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Variable.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an Optimization Variable — Variable","title":"Create an Optimization Variable — Variable","text":"Constructs variable used CVXR optimization problem. Variables decision variables solver optimizes .","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Variable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an Optimization Variable — Variable","text":"","code":"Variable( shape = c(1L, 1L), name = NULL, value = NULL, var_id = NULL, latex_name = NULL, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/Variable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an Optimization Variable — Variable","text":"shape Integer vector length 1 2 giving variable dimensions. scalar n interpreted c(n, 1). Defaults c(1, 1) (scalar). name Optional character string name variable. NULL, automatic name \"var\" generated. value Optional numeric initial value (scalar, vector, matrix matching shape). Validated projected onto attribute domain via path value(var) <- val. var_id Optional integer ID. NULL, unique ID generated. latex_name Optional character string giving custom LaTeX name use visualizations. example, \"\\\\mathbf{x}\". NULL (default), visualizations auto-generate LaTeX name. ... Additional attributes: nonneg, nonpos, PSD, NSD, symmetric, boolean, integer, etc.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Variable.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an Optimization Variable — Variable","text":"Variable object (inherits Leaf Expression).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Variable.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create an Optimization Variable — Variable","text":"","code":"x <- Variable(3) # 3x1 column vector X <- Variable(c(2, 3)) # 2x3 matrix y <- Variable(2, nonneg = TRUE) # non-negative variable z <- Variable(3, name = \"z\", latex_name = \"\\\\mathbf{z}\") # custom LaTeX"},{"path":"https://www.cvxgrp.org/CVXR/reference/Xor.html","id":null,"dir":"Reference","previous_headings":"","what":"Logical XOR — Xor","title":"Logical XOR — Xor","text":"two arguments: result 1 iff exactly one 1. n arguments: result 1 iff odd number 1 (parity).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Xor.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logical XOR — Xor","text":"","code":"Xor(..., id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Xor.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logical XOR — Xor","text":"... Two boolean Variables logic expressions. id Optional integer ID (internal use).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Xor.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logical XOR — Xor","text":"Xor expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Xor.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Logical XOR — Xor","text":"Note: R's ^ operator used power(), Xor functional syntax .","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Xor.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Logical XOR — Xor","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(boolean = TRUE) y <- Variable(boolean = TRUE) exclusive <- Xor(x, y) } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/Zero.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Zero Constraint — Zero","title":"Create a Zero Constraint — Zero","text":"Constrains expression equal zero elementwise: \\(x = 0\\).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Zero.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Zero Constraint — Zero","text":"","code":"Zero(expr, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Zero.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Zero Constraint — Zero","text":"expr CVXR expression. constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Zero.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Zero Constraint — Zero","text":"Zero constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/apply_param_jac.html","id":null,"dir":"Reference","previous_headings":"","what":"Adjoint of the parameter -> (c, d, A, b) tensor map — apply_param_jac","title":"Adjoint of the parameter -> (c, d, A, b) tensor map — apply_param_jac","text":"Given derivatives (delc, delA, delb) downstream objective respect conic problem data, returns derivatives respect Parameter (keyed parameter id). Mirrors ParamConeProg.apply_param_jac cone_matrix_stuffing.py:242-280.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/apply_param_jac.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Adjoint of the parameter -> (c, d, A, b) tensor map — apply_param_jac","text":"","code":"apply_param_jac(param_prog, delc, delA, delb, active_params = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/apply_param_jac.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Adjoint of the parameter -> (c, d, A, b) tensor map — apply_param_jac","text":"param_prog ParamConeProg. delc Numeric vector length x_length. delA Sparse matrix shape (m, x_length) (shape conic constraint matrix ). delb Numeric vector length m. active_params Optional character vector parameter ids restrict output . Default: parameters.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/apply_param_jac.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Adjoint of the parameter -> (c, d, A, b) tensor map — apply_param_jac","text":"named list mapping .character(param_id) numeric array parameter's shape.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/apply_param_jac.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Adjoint of the parameter -> (c, d, A, b) tensor map — apply_param_jac","text":"Reusing tensor identity apply_parameters exploits forward direction: c = c_tensor[1:x_length, ] %*% p (omitting offset row), vec() // b = A_tensor %*% p (column-major; b last block), adjoint just transpose tensors applied stacked (delc, vec(delA), delb).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/as_cvxr_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert a value to a CVXR Expression — as_cvxr_expr","title":"Convert a value to a CVXR Expression — as_cvxr_expr","text":"Wraps numeric vectors, matrices, Matrix package objects CVXR Constant objects. Values already CVXR expressions returned unchanged.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/as_cvxr_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert a value to a CVXR Expression — as_cvxr_expr","text":"","code":"as_cvxr_expr(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/as_cvxr_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert a value to a CVXR Expression — as_cvxr_expr","text":"x numeric vector, matrix, Matrix::Matrix object, Matrix::sparseVector object, CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/as_cvxr_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert a value to a CVXR Expression — as_cvxr_expr","text":"CVXR expression (either input unchanged wrapped Constant).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/as_cvxr_expr.html","id":"matrix-package-interoperability","dir":"Reference","previous_headings":"","what":"Matrix package interoperability","title":"Convert a value to a CVXR Expression — as_cvxr_expr","text":"Objects Matrix package (dgCMatrix, dgeMatrix, ddiMatrix, sparseVector, etc.) S4 classes. S4 dispatch preempts S7/S3 dispatch, raw Matrix objects used directly CVXR operators (+, -, *, /, %*%, >=, ==, etc.). Use as_cvxr_expr() wrap Matrix object CVXR Constant combining CVXR variables expressions. preserves sparsity (unlike .matrix(), densifies). Base R matrix numeric objects work natively CVXR operators — wrapping needed.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/as_cvxr_expr.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert a value to a CVXR Expression — as_cvxr_expr","text":"","code":"x <- Variable(3) ## Sparse Matrix needs as_cvxr_expr() for CVXR operator dispatch: A <- Matrix::sparseMatrix(i = 1:3, j = 1:3, x = 1.0) expr <- as_cvxr_expr(A) %*% x ## All operators work with wrapped Matrix objects: y <- Variable(c(3, 3)) expr2 <- as_cvxr_expr(A) + y constr <- as_cvxr_expr(A) >= y ## Base R matrix works natively (no wrapping needed): D <- matrix(1:9, 3, 3) expr3 <- D %*% x"},{"path":"https://www.cvxgrp.org/CVXR/reference/atom_domain.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Atom-Specific Domain Constraints — atom_domain","title":"Get Atom-Specific Domain Constraints — atom_domain","text":"Get Atom-Specific Domain Constraints","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/atom_domain.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Atom-Specific Domain Constraints — atom_domain","text":"","code":"atom_domain(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/atom_domain.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Atom-Specific Domain Constraints — atom_domain","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/atom_domain.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Atom-Specific Domain Constraints — atom_domain","text":"List Constraint objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/atoms.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Atoms in an Expression — atoms","title":"Get the Atoms in an Expression — atoms","text":"Get Atoms Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/atoms.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Atoms in an Expression — atoms","text":"","code":"atoms(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/atoms.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Atoms in an Expression — atoms","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/atoms.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Atoms in an Expression — atoms","text":"List atom objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/available_solvers.html","id":null,"dir":"Reference","previous_headings":"","what":"List available solvers — available_solvers","title":"List available solvers — available_solvers","text":"Returns names installed solvers currently excluded. Use exclude_solvers() temporarily disable solvers.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/available_solvers.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"List available solvers — available_solvers","text":"","code":"available_solvers() exclude_solvers(solvers) include_solvers(solvers) set_excluded_solvers(solvers)"},{"path":"https://www.cvxgrp.org/CVXR/reference/available_solvers.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"List available solvers — available_solvers","text":"solvers character vector solver names.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/available_solvers.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"List available solvers — available_solvers","text":"character vector solver names. current exclusion list (character vector), invisibly.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/available_solvers.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"List available solvers — available_solvers","text":"exclude_solvers(): Add solvers exclusion list include_solvers(): Remove solvers exclusion list set_excluded_solvers(): Replace entire exclusion list","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/backward.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute the gradient of a solution with respect to Parameters — backward","title":"Compute the gradient of a solution with respect to Parameters — backward","text":"Differentiates solution map problem: populates gradient slot Parameter sensitivity scalar-valued function variables (defaulting sum--x loss; override per variable setting gradient(variable) <- calling) respect parameter. Mirrors cvxpy.Problem.backward().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/backward.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute the gradient of a solution with respect to Parameters — backward","text":"","code":"backward(problem)"},{"path":"https://www.cvxgrp.org/CVXR/reference/backward.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute the gradient of a solution with respect to Parameters — backward","text":"problem solved Problem.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/backward.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compute the gradient of a solution with respect to Parameters — backward","text":"problem (piping); side-effect sets gradient(param) parameter.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/backward.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Compute the gradient of a solution with respect to Parameters — backward","text":"Must called psolve() requires_grad = TRUE.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/bmat.html","id":null,"dir":"Reference","previous_headings":"","what":"Construct a Block Matrix — bmat","title":"Construct a Block Matrix — bmat","text":"Takes list lists. internal list stacked horizontally. internal lists stacked vertically.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/bmat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Construct a Block Matrix — bmat","text":"","code":"bmat(block_lists)"},{"path":"https://www.cvxgrp.org/CVXR/reference/bmat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Construct a Block Matrix — bmat","text":"block_lists list lists Expression objects (numerics). inner list forms one block row.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/bmat.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Construct a Block Matrix — bmat","text":"Expression representing block matrix.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/broadcast_args.html","id":null,"dir":"Reference","previous_headings":"","what":"Broadcast two expressions for binary operations — broadcast_args","title":"Broadcast two expressions for binary operations — broadcast_args","text":"Broadcast two expressions binary operations","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/broadcast_args.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Broadcast two expressions for binary operations — broadcast_args","text":"","code":"broadcast_args(lh_expr, rh_expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/broadcast_args.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Broadcast two expressions for binary operations — broadcast_args","text":"lh_expr Left-hand expression rh_expr Right-hand expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/broadcast_args.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Broadcast two expressions for binary operations — broadcast_args","text":"List two expressions compatible shapes","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/canonical_form.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Canonical Form — canonical_form","title":"Get the Canonical Form — canonical_form","text":"Get Canonical Form","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/canonical_form.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Canonical Form — canonical_form","text":"","code":"canonical_form(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/canonical_form.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Canonical Form — canonical_form","text":"x canonicalizable object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/canonical_form.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Canonical Form — canonical_form","text":"List (expression, constraints).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/canonicalize.html","id":null,"dir":"Reference","previous_headings":"","what":"Canonicalize an Expression — canonicalize","title":"Canonicalize an Expression — canonicalize","text":"Canonicalize Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/canonicalize.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Canonicalize an Expression — canonicalize","text":"","code":"canonicalize(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/canonicalize.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Canonicalize an Expression — canonicalize","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/canonicalize.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Canonicalize an Expression — canonicalize","text":"List canonicalized expression constraints.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cdiac.html","id":null,"dir":"Reference","previous_headings":"","what":"Global Monthly and Annual Temperature Anomalies (degrees C), 1850-2015 (Relative to the 1961-1990 Mean) (May 2016) — cdiac","title":"Global Monthly and Annual Temperature Anomalies (degrees C), 1850-2015 (Relative to the 1961-1990 Mean) (May 2016) — cdiac","text":"Global Monthly Annual Temperature Anomalies (degrees C), 1850-2015 (Relative 1961-1990 Mean) (May 2016)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cdiac.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Global Monthly and Annual Temperature Anomalies (degrees C), 1850-2015 (Relative to the 1961-1990 Mean) (May 2016) — cdiac","text":"","code":"cdiac"},{"path":"https://www.cvxgrp.org/CVXR/reference/cdiac.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Global Monthly and Annual Temperature Anomalies (degrees C), 1850-2015 (Relative to the 1961-1990 Mean) (May 2016) — cdiac","text":"data frame 166 rows 14 variables: year Year jan Anomaly month January feb Anomaly month February mar Anomaly month March apr Anomaly month April may Anomaly month May jun Anomaly month June jul Anomaly month July aug Anomaly month August sep Anomaly month September oct Anomaly month October nov Anomaly month November dec Anomaly month December annual Annual anomaly year","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cdiac.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Global Monthly and Annual Temperature Anomalies (degrees C), 1850-2015 (Relative to the 1961-1990 Mean) (May 2016) — cdiac","text":"https://ess-dive.lbl.gov/","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cdiac.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Global Monthly and Annual Temperature Anomalies (degrees C), 1850-2015 (Relative to the 1961-1990 Mean) (May 2016) — cdiac","text":"https://ess-dive.lbl.gov/","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ceil_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Elementwise Ceiling — ceil_expr","title":"Elementwise Ceiling — ceil_expr","text":"Returns ceiling (smallest integer >= x) element. atom quasiconvex quasiconcave convex concave, can used DQCP problems (solved qcp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ceil_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise Ceiling — ceil_expr","text":"","code":"ceil_expr(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/ceil_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise Ceiling — ceil_expr","text":"x CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ceil_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise Ceiling — ceil_expr","text":"Ceil expression.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/condition_number.html","id":null,"dir":"Reference","previous_headings":"","what":"Condition number of a PSD matrix — condition_number","title":"Condition number of a PSD matrix — condition_number","text":"Computes condition number lambda_max() / lambda_min() positive semidefinite matrix . quasiconvex atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/condition_number.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Condition number of a PSD matrix — condition_number","text":"","code":"condition_number(A)"},{"path":"https://www.cvxgrp.org/CVXR/reference/condition_number.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Condition number of a PSD matrix — condition_number","text":"square matrix expression (must PSD)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/condition_number.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Condition number of a PSD matrix — condition_number","text":"expression representing condition number ","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cone_sizes.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Sizes of Individual Cones — cone_sizes","title":"Get the Sizes of Individual Cones — cone_sizes","text":"Get Sizes Individual Cones","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cone_sizes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Sizes of Individual Cones — cone_sizes","text":"","code":"cone_sizes(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cone_sizes.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Sizes of Individual Cones — cone_sizes","text":"x cone constraint object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cone_sizes.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Sizes of Individual Cones — cone_sizes","text":"Integer vector cone sizes.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/conj_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Elementwise Complex Conjugate — conj_expr","title":"Elementwise Complex Conjugate — conj_expr","text":"Returns complex conjugate expression. real expressions -op. R's native Conj() dispatches CVXR expressions via Complex S3 group handler.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/conj_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise Complex Conjugate — conj_expr","text":"","code":"conj_expr(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/conj_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise Complex Conjugate — conj_expr","text":"expr CVXR Expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/conj_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise Complex Conjugate — conj_expr","text":"Conj_ atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constants.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Constants in an Expression — constants","title":"Get the Constants in an Expression — constants","text":"Get Constants Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constants.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Constants in an Expression — constants","text":"","code":"constants(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/constants.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Constants in an Expression — constants","text":"x expression problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constants.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Constants in an Expression — constants","text":"List Constant objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constr_size.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Total Size of a Constraint — constr_size","title":"Get the Total Size of a Constraint — constr_size","text":"Get Total Size Constraint","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constr_size.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Total Size of a Constraint — constr_size","text":"","code":"constr_size(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/constr_size.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Total Size of a Constraint — constr_size","text":"x constraint object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constr_size.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Total Size of a Constraint — constr_size","text":"Integer.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constraints.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Problem Constraints (read-only) — constraints","title":"Get Problem Constraints (read-only) — constraints","text":"Returns copy problem's constraint list.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constraints.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Problem Constraints (read-only) — constraints","text":"","code":"constraints(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/constraints.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Problem Constraints (read-only) — constraints","text":"x Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constraints.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Problem Constraints (read-only) — constraints","text":"list constraint objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constraints.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get Problem Constraints (read-only) — constraints","text":"Problem objects immutable: constraints modified construction. change constraints, create new Problem(). matches CVXPY's design problems immutable except Parameter value changes.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/constraints.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get Problem Constraints (read-only) — constraints","text":"","code":"x <- Variable(2) prob <- Problem(Minimize(sum_entries(x)), list(x >= 1)) length(constraints(prob)) # 1 #> [1] 1"},{"path":"https://www.cvxgrp.org/CVXR/reference/conv.html","id":null,"dir":"Reference","previous_headings":"","what":"1D discrete convolution — conv","title":"1D discrete convolution — conv","text":"1D discrete convolution","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/conv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"1D discrete convolution — conv","text":"","code":"conv(a, b)"},{"path":"https://www.cvxgrp.org/CVXR/reference/conv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"1D discrete convolution — conv","text":"Expression (vector, one must constant) b Expression (vector)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/conv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"1D discrete convolution — conv","text":"Convolve atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/convolve.html","id":null,"dir":"Reference","previous_headings":"","what":"1D discrete convolution (numpy-style) — convolve","title":"1D discrete convolution (numpy-style) — convolve","text":"convolve() CVXPY 1.9's preferred name conv (CVXPY's conv class deprecated favor convolve). CVXR Expression argument builds Convolve atom; plain numeric input computes numpy-style convolution atom (numpy.convolve(, b) == stats::convolve(, rev(b), type = \"open\")), numeric Expression paths agree.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/convolve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"1D discrete convolution (numpy-style) — convolve","text":"","code":"convolve(a, b)"},{"path":"https://www.cvxgrp.org/CVXR/reference/convolve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"1D discrete convolution (numpy-style) — convolve","text":", b Expressions numeric vectors; least one must constant building atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/convolve.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"1D discrete convolution (numpy-style) — convolve","text":"Convolve atom (expressions) numeric vector.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/convolve.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"1D discrete convolution (numpy-style) — convolve","text":"CVXR masks stats::convolve attached (R reports load). specifically want stats' circular cross-correlation options, call convolve directly.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cummax_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Cumulative maximum along an axis — cummax_expr","title":"Cumulative maximum along an axis — cummax_expr","text":"Cumulative maximum along axis","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cummax_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Cumulative maximum along an axis — cummax_expr","text":"","code":"cummax_expr(x, axis = 2L)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cummax_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Cumulative maximum along an axis — cummax_expr","text":"x Expression axis 1 (across rows) 2 (columns, default)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cummax_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Cumulative maximum along an axis — cummax_expr","text":"Cummax atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cumsum_axis.html","id":null,"dir":"Reference","previous_headings":"","what":"Cumulative sum along an axis — cumsum_axis","title":"Cumulative sum along an axis — cumsum_axis","text":"Cumulative sum along axis","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cumsum_axis.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Cumulative sum along an axis — cumsum_axis","text":"","code":"cumsum_axis(x, axis = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cumsum_axis.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Cumulative sum along an axis — cumsum_axis","text":"x Expression axis NULL (), 1 (across rows), 2 (columns)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cumsum_axis.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Cumulative sum along an axis — cumsum_axis","text":"Cumsum atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/curvature.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Expression Curvature — curvature","title":"Get Expression Curvature — curvature","text":"Returns DCP curvature expression string.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/curvature.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Expression Curvature — curvature","text":"","code":"curvature(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/curvature.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Expression Curvature — curvature","text":"x CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/curvature.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Expression Curvature — curvature","text":"Character: \"CONSTANT\", \"AFFINE\", \"CONVEX\", \"CONCAVE\", \"UNKNOWN\".","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/cvar.html","id":null,"dir":"Reference","previous_headings":"","what":"Conditional Value at Risk (CVaR) — cvar","title":"Conditional Value at Risk (CVaR) — cvar","text":"CVaR confidence level beta: average (1-beta) largest values.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvar.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Conditional Value at Risk (CVaR) — cvar","text":"","code":"cvar(x, beta)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvar.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Conditional Value at Risk (CVaR) — cvar","text":"x Expression (vector) beta Confidence level [0, 1)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvar.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Conditional Value at Risk (CVaR) — cvar","text":"Expression representing CVaR","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_diff.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute kth Order Differences of an Expression — cvxr_diff","title":"Compute kth Order Differences of an Expression — cvxr_diff","text":"Takes expression returns expression kth order differences along given axis. output shape input except size along specified axis reduced k.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_diff.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute kth Order Differences of an Expression — cvxr_diff","text":"","code":"cvxr_diff(x, k = 1L, axis = 2L)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_diff.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute kth Order Differences of an Expression — cvxr_diff","text":"x Expression numeric value. k Integer. number times values differenced. Default 1. (Mapped R's lag argument diff.default; use differences repeated differencing maps k .) axis Integer. axis along difference taken. 2 = along rows/columns (default), 1 = along columns/across rows.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_diff.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compute kth Order Differences of an Expression — cvxr_diff","text":"Expression representing kth order differences.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_mean.html","id":null,"dir":"Reference","previous_headings":"","what":"Mean of an expression — cvxr_mean","title":"Mean of an expression — cvxr_mean","text":"Computes arithmetic mean expression along axis.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_mean.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Mean of an expression — cvxr_mean","text":"","code":"cvxr_mean(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_mean.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Mean of an expression — cvxr_mean","text":"x Expression numeric value. axis NULL (), 1 (row-wise), 2 (column-wise). keepdims Logical; keep reduced dimension?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_mean.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Mean of an expression — cvxr_mean","text":"Expression representing mean.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_norm.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute a norm of an expression — cvxr_norm","title":"Compute a norm of an expression — cvxr_norm","text":"Compute norm expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_norm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute a norm of an expression — cvxr_norm","text":"","code":"cvxr_norm(x, p = 2, axis = NULL, keepdims = FALSE, max_denom = 1024L)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_norm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute a norm of an expression — cvxr_norm","text":"x Expression p Norm type: 1, 2, Inf, \"fro\" (Frobenius) axis NULL (), 0 (columns), 1 (rows) keepdims Logical max_denom Integer max denominator","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_norm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compute a norm of an expression — cvxr_norm","text":"norm atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_outer.html","id":null,"dir":"Reference","previous_headings":"","what":"Outer product of two vectors — cvxr_outer","title":"Outer product of two vectors — cvxr_outer","text":"Computes outer product x %*% t(y). inputs must vectors.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_outer.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Outer product of two vectors — cvxr_outer","text":"","code":"cvxr_outer(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_outer.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Outer product of two vectors — cvxr_outer","text":"x Expression numeric value (vector). y Expression numeric value (vector).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_outer.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Outer product of two vectors — cvxr_outer","text":"Expression shape (length(x), length(y)).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_promote.html","id":null,"dir":"Reference","previous_headings":"","what":"Promote a scalar expression to the given shape — cvxr_promote","title":"Promote a scalar expression to the given shape — cvxr_promote","text":"Promote scalar expression given shape","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_promote.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Promote a scalar expression to the given shape — cvxr_promote","text":"","code":"cvxr_promote(expr, shape)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_promote.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Promote a scalar expression to the given shape — cvxr_promote","text":"expr expression shape Target shape","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_promote.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Promote a scalar expression to the given shape — cvxr_promote","text":"expression (unchanged already right shape) Promote atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_std.html","id":null,"dir":"Reference","previous_headings":"","what":"Standard deviation of an expression — cvxr_std","title":"Standard deviation of an expression — cvxr_std","text":"Computes standard deviation expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_std.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Standard deviation of an expression — cvxr_std","text":"","code":"cvxr_std(x, axis = NULL, keepdims = FALSE, ddof = 0) std(x, axis = NULL, keepdims = FALSE, ddof = 0)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_std.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Standard deviation of an expression — cvxr_std","text":"x Expression numeric value. axis NULL (), 1 (row-wise), 2 (column-wise). keepdims Logical; keep reduced dimension? ddof Degrees freedom correction (default 0, population std).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_std.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Standard deviation of an expression — cvxr_std","text":"Expression representing standard deviation.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_var.html","id":null,"dir":"Reference","previous_headings":"","what":"Variance of an expression — cvxr_var","title":"Variance of an expression — cvxr_var","text":"Computes variance. supports full reduction (axis = NULL).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_var.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Variance of an expression — cvxr_var","text":"","code":"cvxr_var(x, axis = NULL, keepdims = FALSE, ddof = 0)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_var.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Variance of an expression — cvxr_var","text":"x Expression numeric value. axis NULL (axis reduction yet supported). keepdims Logical; keep reduced dimension? ddof Degrees freedom correction (default 0, population variance).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_var.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Variance of an expression — cvxr_var","text":"Expression representing variance.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/delta.html","id":null,"dir":"Reference","previous_headings":"","what":"Access the perturbation delta of a Variable or Parameter — delta","title":"Access the perturbation delta of a Variable or Parameter — delta","text":"Used psolve() requires_grad = TRUE Problem$derivative(). Parameter, user sets delta perturbation parameter's value; derivative() reports predicted change Variable's optimal value delta(variable).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/delta.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Access the perturbation delta of a Variable or Parameter — delta","text":"","code":"delta(x) delta(x) <- value"},{"path":"https://www.cvxgrp.org/CVXR/reference/delta.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Access the perturbation delta of a Variable or Parameter — delta","text":"x Variable Parameter. value numeric array shape x, NULL.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/delta.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Access the perturbation delta of a Variable or Parameter — delta","text":"perturbation (numeric array) NULL.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/derivative.html","id":null,"dir":"Reference","previous_headings":"","what":"Apply the derivative of the solution map to perturbations — derivative","title":"Apply the derivative of the solution map to perturbations — derivative","text":"Forward-mode counterpart backward(): reads delta(param) parameter, applies cone-program derivative, writes predicted change variable's optimum delta(var). Mirrors cvxpy.Problem.derivative().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/derivative.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Apply the derivative of the solution map to perturbations — derivative","text":"","code":"derivative(problem)"},{"path":"https://www.cvxgrp.org/CVXR/reference/derivative.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Apply the derivative of the solution map to perturbations — derivative","text":"problem solved Problem.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/derivative.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Apply the derivative of the solution map to perturbations — derivative","text":"problem (piping); side-effect sets delta(variable) variable.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/derivative.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Apply the derivative of the solution map to perturbations — derivative","text":"Must called psolve() requires_grad = TRUE.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/diff_pos.html","id":null,"dir":"Reference","previous_headings":"","what":"The difference x - y with domain x > y > 0 — diff_pos","title":"The difference x - y with domain x > y > 0 — diff_pos","text":"Equivalent x * one_minus_pos(y / x).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/diff_pos.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"The difference x - y with domain x > y > 0 — diff_pos","text":"","code":"diff_pos(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/diff_pos.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"The difference x - y with domain x > y > 0 — diff_pos","text":"x Expression (positive) y Expression (positive, elementwise less x)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/diff_pos.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"The difference x - y with domain x > y > 0 — diff_pos","text":"product expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dist_ratio.html","id":null,"dir":"Reference","previous_headings":"","what":"Distance ratio — dist_ratio","title":"Distance ratio — dist_ratio","text":"Computes norm(x - )_2 / norm(x - b)_2, b constants. quasiconvex atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dist_ratio.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Distance ratio — dist_ratio","text":"","code":"dist_ratio(x, a, b)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dist_ratio.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Distance ratio — dist_ratio","text":"x vector expression numeric constant vector b numeric constant vector","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dist_ratio.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Distance ratio — dist_ratio","text":"expression representing distance ratio","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/domain.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Domain Constraints of an Expression — domain","title":"Get the Domain Constraints of an Expression — domain","text":"Get Domain Constraints Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/domain.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Domain Constraints of an Expression — domain","text":"","code":"domain(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/domain.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Domain Constraints of an Expression — domain","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/domain.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Domain Constraints of an Expression — domain","text":"List constraints defining domain.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-column_grad.html","id":null,"dir":"Reference","previous_headings":"","what":"Per-column Subgradient for AxisAtoms (private) — .column_grad","title":"Per-column Subgradient for AxisAtoms (private) — .column_grad","text":"R counterpart CVXPY's AxisAtom._column_grad(self, value). Receives single column (1-D fiber) input returns gradient atom's reduction column. Used .grad(AxisAtom), walks input fibers assembles full Jacobian.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-column_grad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Per-column Subgradient for AxisAtoms (private) — .column_grad","text":"","code":".column_grad(x, value, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-column_grad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Per-column Subgradient for AxisAtoms (private) — .column_grad","text":"x axis-atom expression. value numeric vector (fiber). ... Reserved future use; method dispatch ignores .","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-column_grad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Per-column Subgradient for AxisAtoms (private) — .column_grad","text":"numeric vector length, NULL gradient undefined fiber.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-constant_grad.html","id":null,"dir":"Reference","previous_headings":"","what":"Gradient of a Constant Expression — .constant_grad","title":"Gradient of a Constant Expression — .constant_grad","text":"Returns Variable -> Jacobian list expression constant variables. Jacobian appropriate-shape zero (scalar 0 scalar/scalar; sparse zero matrix otherwise).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-constant_grad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Gradient of a Constant Expression — .constant_grad","text":"","code":".constant_grad(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-constant_grad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Gradient of a Constant Expression — .constant_grad","text":"expr expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-constant_grad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Gradient of a Constant Expression — .constant_grad","text":"list keyed variable id (character), entry zero Jacobian.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-constant_grad.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Gradient of a Constant Expression — .constant_grad","text":"Mirrors cvxpy/utilities/grad.py:constant_grad.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-error_grad.html","id":null,"dir":"Reference","previous_headings":"","what":"Error Gradient (None for every variable) — .error_grad","title":"Error Gradient (None for every variable) — .error_grad","text":"Returns list keyed variable id every entry NULL. Used chain-rule walker propagate \"compute\" DAG argument value missing.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-error_grad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Error Gradient (None for every variable) — .error_grad","text":"","code":".error_grad(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-error_grad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Error Gradient (None for every variable) — .error_grad","text":"expr expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-error_grad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Error Gradient (None for every variable) — .error_grad","text":"list keyed variable id (character), entry NULL.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-error_grad.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Error Gradient (None for every variable) — .error_grad","text":"Mirrors cvxpy/utilities/grad.py:error_grad.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-grad.html","id":null,"dir":"Reference","previous_headings":"","what":"Per-atom Subgradient Hook (private) — .grad","title":"Per-atom Subgradient Hook (private) — .grad","text":"R counterpart CVXPY's Atom._grad(self, values). Returns list one Jacobian per argument, shape (prod(arg.shape), prod(self.shape)). Called chain-rule walker grad(x). leading dot follows R's private-name convention (cf. .Machine, .libPaths, .cvxr_*); name maps one--one onto CVXPY's _grad.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-grad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Per-atom Subgradient Hook (private) — .grad","text":"","code":".grad(x, values, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-grad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Per-atom Subgradient Hook (private) — .grad","text":"x atom expression. values list numeric values, one per argument. ... Reserved future use; method dispatch ignores .","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-grad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Per-atom Subgradient Hook (private) — .grad","text":"list sparse Jacobians (one per argument).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dotsort.html","id":null,"dir":"Reference","previous_headings":"","what":"Weighted sorted dot product — dotsort","title":"Weighted sorted dot product — dotsort","text":"Computes X expression W constant. generalization sum_largest sum_smallest.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dotsort.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Weighted sorted dot product — dotsort","text":"","code":"dotsort(X, W)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dotsort.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Weighted sorted dot product — dotsort","text":"X Expression numeric value. W constant numeric vector matrix.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dotsort.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Weighted sorted dot product — dotsort","text":"scalar convex Expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dpp_scope_active.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if DPP Scope is Active — dpp_scope_active","title":"Check if DPP Scope is Active — dpp_scope_active","text":"Check DPP Scope Active","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dpp_scope_active.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if DPP Scope is Active — dpp_scope_active","text":"","code":"dpp_scope_active()"},{"path":"https://www.cvxgrp.org/CVXR/reference/dpp_scope_active.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if DPP Scope is Active — dpp_scope_active","text":"Logical; TRUE with_dpp_scope block active.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dspop.html","id":null,"dir":"Reference","previous_headings":"","what":"Direct Standardization: Population — dspop","title":"Direct Standardization: Population — dspop","text":"Randomly generated data direct standardization example. Sex drawn Bernoulli distribution, age drawn uniform distribution \\(10,\\ldots,60\\). response drawn normal distribution mean depends sex age, variance 1.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dspop.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Direct Standardization: Population — dspop","text":"","code":"dspop"},{"path":"https://www.cvxgrp.org/CVXR/reference/dspop.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Direct Standardization: Population — dspop","text":"data frame 1000 rows 3 variables: y Response variable sex Sex individual, coded male (0) female (1) age Age individual","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/dssamp.html","id":null,"dir":"Reference","previous_headings":"","what":"Direct Standardization: Sample — dssamp","title":"Direct Standardization: Sample — dssamp","text":"sample dspop direct standardization example. sample skewed young males overrepresented comparison population.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dssamp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Direct Standardization: Sample — dssamp","text":"","code":"dssamp"},{"path":"https://www.cvxgrp.org/CVXR/reference/dssamp.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Direct Standardization: Sample — dssamp","text":"data frame 100 rows 3 variables: y Response variable sex Sex individual, coded male (0) female (1) age Age individual","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_cone.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Dual Cone Constraint — dual_cone","title":"Get the Dual Cone Constraint — dual_cone","text":"Get Dual Cone Constraint","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_cone.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Dual Cone Constraint — dual_cone","text":"","code":"dual_cone(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_cone.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Dual Cone Constraint — dual_cone","text":"x cone constraint object. ... Optional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_cone.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Dual Cone Constraint — dual_cone","text":"cone constraint representing dual cone.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_residual.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Dual Residual — dual_residual","title":"Get the Dual Residual — dual_residual","text":"Get Dual Residual","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_residual.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Dual Residual — dual_residual","text":"","code":"dual_residual(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_residual.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Dual Residual — dual_residual","text":"x cone constraint object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_residual.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Dual Residual — dual_residual","text":"Numeric residual.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_value.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Dual Value of a Constraint — dual_value","title":"Get the Dual Value of a Constraint — dual_value","text":"Returns dual variable value(s) associated constraint solving. Returns NULL problem solved.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_value.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Dual Value of a Constraint — dual_value","text":"","code":"dual_value(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_value.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Dual Value of a Constraint — dual_value","text":"x Constraint object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_value.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Dual Value of a Constraint — dual_value","text":"numeric matrix (single dual variable) list numeric matrices (multiple dual variables), NULL.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/entr.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an entropy atom -x * log(x) — entr","title":"Create an entropy atom -x * log(x) — entr","text":"Create entropy atom -x * log(x)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/entr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an entropy atom -x * log(x) — entr","text":"","code":"entr(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/entr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an entropy atom -x * log(x) — entr","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/entr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an entropy atom -x * log(x) — entr","text":"Entr atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_H.html","id":null,"dir":"Reference","previous_headings":"","what":"Conjugate-Transpose of an Expression — expr_H","title":"Conjugate-Transpose of an Expression — expr_H","text":"Equivalent CVXPY's .H property. real expressions, returns t(x). complex expressions, returns Conj(t(x)).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_H.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Conjugate-Transpose of an Expression — expr_H","text":"","code":"expr_H(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_H.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Conjugate-Transpose of an Expression — expr_H","text":"x CVXR Expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_H.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Conjugate-Transpose of an Expression — expr_H","text":"conjugate-transpose expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_copy.html","id":null,"dir":"Reference","previous_headings":"","what":"Shallow Copy of an Expression Tree Node — expr_copy","title":"Shallow Copy of an Expression Tree Node — expr_copy","text":"Shallow Copy Expression Tree Node","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_copy.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Shallow Copy of an Expression Tree Node — expr_copy","text":"","code":"expr_copy(x, args = NULL, id_objects = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_copy.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Shallow Copy of an Expression Tree Node — expr_copy","text":"x canonicalizable object. args Optional replacement args. id_objects Optional identity map deduplication.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_copy.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Shallow Copy of an Expression Tree Node — expr_copy","text":"copy object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_name.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Name of an Expression — expr_name","title":"Get the Name of an Expression — expr_name","text":"Get Name Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_name.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Name of an Expression — expr_name","text":"","code":"expr_name(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_name.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Name of an Expression — expr_name","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_name.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Name of an Expression — expr_name","text":"Character string.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_sign.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the DCP Sign of an Expression — expr_sign","title":"Get the DCP Sign of an Expression — expr_sign","text":"Returns sign expression DCP analysis. Use instead sign(), conflicts base R function.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_sign.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the DCP Sign of an Expression — expr_sign","text":"","code":"expr_sign(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_sign.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the DCP Sign of an Expression — expr_sign","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_sign.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the DCP Sign of an Expression — expr_sign","text":"Character string: \"POSITIVE\", \"NEGATIVE\", \"ZERO\", \"UNKNOWN\".","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/eye_minus_inv.html","id":null,"dir":"Reference","previous_headings":"","what":"Unity resolvent (I - X) inverse for positive square matrix X — eye_minus_inv","title":"Unity resolvent (I - X) inverse for positive square matrix X — eye_minus_inv","text":"Log-log convex atom DGP. Solve psolve(problem, gp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/eye_minus_inv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Unity resolvent (I - X) inverse for positive square matrix X — eye_minus_inv","text":"","code":"eye_minus_inv(X)"},{"path":"https://www.cvxgrp.org/CVXR/reference/eye_minus_inv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Unity resolvent (I - X) inverse for positive square matrix X — eye_minus_inv","text":"X Expression (positive square matrix spectral radius < 1)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/eye_minus_inv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Unity resolvent (I - X) inverse for positive square matrix X — eye_minus_inv","text":"EyeMinusInv atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/eye_minus_inv.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Unity resolvent (I - X) inverse for positive square matrix X — eye_minus_inv","text":"","code":"X <- Variable(c(2, 2), pos = TRUE) prob <- Problem(Minimize(sum(eye_minus_inv(X))), list(X <= 0.4)) if (FALSE) psolve(prob, gp = TRUE, solver = \"SCS\") # \\dontrun{}"},{"path":"https://www.cvxgrp.org/CVXR/reference/floor_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Elementwise Floor — floor_expr","title":"Elementwise Floor — floor_expr","text":"Returns floor (largest integer <= x) element. atom quasiconvex quasiconcave convex concave, can used DQCP problems (solved qcp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/floor_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise Floor — floor_expr","text":"","code":"floor_expr(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/floor_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise Floor — floor_expr","text":"x CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/floor_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise Floor — floor_expr","text":"Floor expression.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/format_labeled.html","id":null,"dir":"Reference","previous_headings":"","what":"Pretty-print an expression with labels substituted — format_labeled","title":"Pretty-print an expression with labels substituted — format_labeled","text":"Recursive analogue expr_name() substitutes user-supplied labels (see set_label()) sub-expressions wherever set, falling back structural name unlabelled nodes. Mirrors CVXPY's Expression.format_labeled.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/format_labeled.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pretty-print an expression with labels substituted — format_labeled","text":"","code":"format_labeled(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/format_labeled.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pretty-print an expression with labels substituted — format_labeled","text":"x Expression object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/format_labeled.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Pretty-print an expression with labels substituted — format_labeled","text":"character string.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/gen_lambda_max.html","id":null,"dir":"Reference","previous_headings":"","what":"Maximum generalized eigenvalue — gen_lambda_max","title":"Maximum generalized eigenvalue — gen_lambda_max","text":"Computes maximum generalized eigenvalue lambda_max(, B). Requires symmetric B positive semidefinite. quasiconvex atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gen_lambda_max.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Maximum generalized eigenvalue — gen_lambda_max","text":"","code":"gen_lambda_max(A, B)"},{"path":"https://www.cvxgrp.org/CVXR/reference/gen_lambda_max.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Maximum generalized eigenvalue — gen_lambda_max","text":"square symmetric matrix expression B square PSD matrix expression dimension ","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gen_lambda_max.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Maximum generalized eigenvalue — gen_lambda_max","text":"expression representing maximum generalized eigenvalue","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/geo_mean.html","id":null,"dir":"Reference","previous_headings":"","what":"(Weighted) geometric mean of a vector — geo_mean","title":"(Weighted) geometric mean of a vector — geo_mean","text":"(Weighted) geometric mean vector","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/geo_mean.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"(Weighted) geometric mean of a vector — geo_mean","text":"","code":"geo_mean(x, p = NULL, max_denom = 1024L, approx = TRUE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/geo_mean.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"(Weighted) geometric mean of a vector — geo_mean","text":"x Expression (vector) p Numeric weight vector (default: uniform) max_denom Maximum denominator rational approximation approx TRUE (default), use SOC approximation. FALSE, use exact power cone.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/geo_mean.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"(Weighted) geometric mean of a vector — geo_mean","text":"GeoMean GeoMeanApprox atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_bounds.html","id":null,"dir":"Reference","previous_headings":"","what":"Lower/Upper Bounds of a Leaf — get_bounds","title":"Lower/Upper Bounds of a Leaf — get_bounds","text":"Returns effective (lower, upper) bounds leaf, combining bounds attribute sign (nonneg/pos/nonpos/neg) boolean attributes. Used NLP (DNLP) solve path form variable bounds.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_bounds.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Lower/Upper Bounds of a Leaf — get_bounds","text":"","code":"get_bounds(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/get_bounds.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Lower/Upper Bounds of a Leaf — get_bounds","text":"x expression (Variable/leaf, composite expression whose bounds propagated arguments). ... Passed methods; currently unused.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_bounds.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Lower/Upper Bounds of a Leaf — get_bounds","text":"list list(lower, upper) two real matrices matching expression shape (column-major). leaves come explicit bounds sign attributes; atoms propagated argument bounds via interval arithmetic (see bounds_from_args).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Atom-Specific Data — get_data","title":"Get Atom-Specific Data — get_data","text":"Get Atom-Specific Data","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Atom-Specific Data — get_data","text":"","code":"get_data(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/get_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Atom-Specific Data — get_data","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Atom-Specific Data — get_data","text":"List data.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/get_problem_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Problem Data for a Solver (deprecated) — get_problem_data","text":"","code":"get_problem_data( x, solver = NULL, gp = FALSE, enforce_dpp = FALSE, ignore_dpp = FALSE, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/get_problem_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Problem Data for a Solver (deprecated) — get_problem_data","text":"x Problem object. solver Character string naming solver, NULL automatic selection. gp Logical; TRUE, parse problem geometric program. enforce_dpp Logical; TRUE, raise error parametrized problem DPP instead compiling non-DPP. ignore_dpp Logical; TRUE, treat DPP problem non-DPP (skip DPP fast path). ... Additional solver options.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_problem_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Problem Data for a Solver (deprecated) — get_problem_data","text":"list components data, chain, inverse_data.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_problem_data.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get Problem Data for a Solver (deprecated) — get_problem_data","text":"Use problem_data instead.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/gmatmul.html","id":null,"dir":"Reference","previous_headings":"","what":"Geometric matrix multiplication A diamond X — gmatmul","title":"Geometric matrix multiplication A diamond X — gmatmul","text":"Computes geometric matrix product (diamond X)_ij = prod_k X_kj^A_ik. Log-log affine atom DGP. Solve psolve(problem, gp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gmatmul.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Geometric matrix multiplication A diamond X — gmatmul","text":"","code":"gmatmul(A, X)"},{"path":"https://www.cvxgrp.org/CVXR/reference/gmatmul.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Geometric matrix multiplication A diamond X — gmatmul","text":"constant matrix X Expression (positive matrix)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gmatmul.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Geometric matrix multiplication A diamond X — gmatmul","text":"Gmatmul atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gmatmul.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Geometric matrix multiplication A diamond X — gmatmul","text":"","code":"x <- Variable(2, pos = TRUE) A <- matrix(c(1, 0, 0, 1), 2, 2) prob <- Problem(Minimize(sum(gmatmul(A, x))), list(x >= 0.5)) if (FALSE) psolve(prob, gp = TRUE) # \\dontrun{}"},{"path":"https://www.cvxgrp.org/CVXR/reference/grad.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Gradient of an Expression — grad","title":"Get the Gradient of an Expression — grad","text":"Get Gradient Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/grad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Gradient of an Expression — grad","text":"","code":"grad(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/grad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Gradient of an Expression — grad","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/grad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Gradient of an Expression — grad","text":"Gradient information.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gradient.html","id":null,"dir":"Reference","previous_headings":"","what":"Access the gradient of a Variable or Parameter — gradient","title":"Access the gradient of a Variable or Parameter — gradient","text":"Used psolve() requires_grad = TRUE Problem$backward(). Stores numeric array shape leaf, NULL (default).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gradient.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Access the gradient of a Variable or Parameter — gradient","text":"","code":"gradient(x) gradient(x) <- value"},{"path":"https://www.cvxgrp.org/CVXR/reference/gradient.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Access the gradient of a Variable or Parameter — gradient","text":"x Variable Parameter. value numeric array shape x, NULL.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gradient.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Access the gradient of a Variable or Parameter — gradient","text":"gradient (numeric array) NULL.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-greater-than-greater-than-grapes.html","id":null,"dir":"Reference","previous_headings":"","what":"Positive Semidefinite Constraint Operator — %>>%","title":"Positive Semidefinite Constraint Operator — %>>%","text":"Creates PSD constraint: e1 - e2 positive semidefinite. R equivalent Python's >> B.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-greater-than-greater-than-grapes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Positive Semidefinite Constraint Operator — %>>%","text":"","code":"e1 %>>% e2"},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-greater-than-greater-than-grapes.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Positive Semidefinite Constraint Operator — %>>%","text":"e1, e2 CVXR expressions numeric matrices.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-greater-than-greater-than-grapes.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Positive Semidefinite Constraint Operator — %>>%","text":"PSD constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-greater-than-greater-than-grapes.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Positive Semidefinite Constraint Operator — %>>%","text":"","code":"if (FALSE) { # \\dontrun{ X <- Variable(3, 3, symmetric = TRUE) constr <- X %>>% diag(3) # X - I is PSD } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-less-than-less-than-grapes.html","id":null,"dir":"Reference","previous_headings":"","what":"Negative Semidefinite Constraint Operator — %<<%","title":"Negative Semidefinite Constraint Operator — %<<%","text":"Creates NSD constraint: e2 - e1 positive semidefinite, .e., e1 NSD relative e2. R equivalent Python's << B.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-less-than-less-than-grapes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Negative Semidefinite Constraint Operator — %<<%","text":"","code":"e1 %<<% e2"},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-less-than-less-than-grapes.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Negative Semidefinite Constraint Operator — %<<%","text":"e1, e2 CVXR expressions numeric matrices.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-less-than-less-than-grapes.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Negative Semidefinite Constraint Operator — %<<%","text":"PSD constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-less-than-less-than-grapes.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Negative Semidefinite Constraint Operator — %<<%","text":"","code":"if (FALSE) { # \\dontrun{ X <- Variable(3, 3, symmetric = TRUE) constr <- X %<<% diag(3) # I - X is PSD (X is NSD relative to I) } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/graph_implementation.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Graph Implementation of an Atom — graph_implementation","title":"Get the Graph Implementation of an Atom — graph_implementation","text":"Get Graph Implementation Atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/graph_implementation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Graph Implementation of an Atom — graph_implementation","text":"","code":"graph_implementation(x, arg_objs, shape, data = NULL, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/graph_implementation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Graph Implementation of an Atom — graph_implementation","text":"x atom object. arg_objs List canonicalized argument LinOps. shape Integer vector: target shape. data Optional atom-specific data. ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/graph_implementation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Graph Implementation of an Atom — graph_implementation","text":"List (expression, constraints).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/harmonic_mean.html","id":null,"dir":"Reference","previous_headings":"","what":"Harmonic mean: n / sum(1/x_i) — harmonic_mean","title":"Harmonic mean: n / sum(1/x_i) — harmonic_mean","text":"Harmonic mean: n / sum(1/x_i)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/harmonic_mean.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Harmonic mean: n / sum(1/x_i) — harmonic_mean","text":"","code":"harmonic_mean(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/harmonic_mean.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Harmonic mean: n / sum(1/x_i) — harmonic_mean","text":"x Expression (must positive DCP)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/harmonic_mean.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Harmonic mean: n / sum(1/x_i) — harmonic_mean","text":"Expression representing harmonic mean","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/has_quadratic_term.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression Has a Quadratic Term — has_quadratic_term","title":"Check if Expression Has a Quadratic Term — has_quadratic_term","text":"Check Expression Quadratic Term","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/has_quadratic_term.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression Has a Quadratic Term — has_quadratic_term","text":"","code":"has_quadratic_term(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/has_quadratic_term.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression Has a Quadratic Term — has_quadratic_term","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/has_quadratic_term.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression Has a Quadratic Term — has_quadratic_term","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/hstack.html","id":null,"dir":"Reference","previous_headings":"","what":"Horizontal concatenation of expressions — hstack","title":"Horizontal concatenation of expressions — hstack","text":"Horizontal concatenation expressions","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/hstack.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Horizontal concatenation of expressions — hstack","text":"","code":"hstack(...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/hstack.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Horizontal concatenation of expressions — hstack","text":"... Expressions (number rows)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/hstack.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Horizontal concatenation of expressions — hstack","text":"HStack atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/huber.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Huber loss atom — huber","title":"Create a Huber loss atom — huber","text":"Create Huber loss atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/huber.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Huber loss atom — huber","text":"","code":"huber(x, M = 1)"},{"path":"https://www.cvxgrp.org/CVXR/reference/huber.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Huber loss atom — huber","text":"x Expression M Numeric threshold (default 1)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/huber.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Huber loss atom — huber","text":"Huber atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/id.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Expression ID — id","title":"Get Expression ID — id","text":"Returns unique integer identifier CVXR object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/id.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Expression ID — id","text":"","code":"id(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/id.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Expression ID — id","text":"x CVXR expression, variable, parameter, constraint.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/id.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Expression ID — id","text":"integer.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/iff.html","id":null,"dir":"Reference","previous_headings":"","what":"Logical Biconditional — iff","title":"Logical Biconditional — iff","text":"Logical biconditional: x <=> y. Returns 1 x y value. Equivalent (Xor(x, y)).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/iff.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logical Biconditional — iff","text":"","code":"iff(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/iff.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logical Biconditional — iff","text":"x, y Boolean Variables logic expressions.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/iff.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logical Biconditional — iff","text":"expression wrapping Xor.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/iff.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Logical Biconditional — iff","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(boolean = TRUE) y <- Variable(boolean = TRUE) expr <- iff(x, y) } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/imag_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract Imaginary Part of Expression — imag_expr","title":"Extract Imaginary Part of Expression — imag_expr","text":"Returns imaginary part complex expression. R's native Im() dispatches CVXR expressions via Complex S3 group handler.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/imag_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract Imaginary Part of Expression — imag_expr","text":"","code":"imag_expr(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/imag_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract Imaginary Part of Expression — imag_expr","text":"expr CVXR Expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/imag_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract Imaginary Part of Expression — imag_expr","text":"Imag_ atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/implies.html","id":null,"dir":"Reference","previous_headings":"","what":"Logical Implication — implies","title":"Logical Implication — implies","text":"Logical implication: x => y. Returns 1 unless x = 1 y = 0. Equivalent ((x), y).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/implies.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logical Implication — implies","text":"","code":"implies(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/implies.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logical Implication — implies","text":"x, y Boolean Variables logic expressions.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/implies.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logical Implication — implies","text":"expression representing !x | y.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/implies.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Logical Implication — implies","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(boolean = TRUE) y <- Variable(boolean = TRUE) expr <- implies(x, y) } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/indicator.html","id":null,"dir":"Reference","previous_headings":"","what":"Indicator function for constraints — indicator","title":"Indicator function for constraints — indicator","text":"Creates expression equals 0 constraints satisfied +Inf otherwise. Use embed constraints objective.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/indicator.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Indicator function for constraints — indicator","text":"","code":"indicator(constraints, err_tol = 0.001)"},{"path":"https://www.cvxgrp.org/CVXR/reference/indicator.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Indicator function for constraints — indicator","text":"constraints list constraint objects err_tol Numeric tolerance checking constraint satisfaction (default 1e-3)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/indicator.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Indicator function for constraints — indicator","text":"Indicator expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/installed_solvers.html","id":null,"dir":"Reference","previous_headings":"","what":"List installed solvers — installed_solvers","title":"List installed solvers — installed_solvers","text":"Returns names solvers whose R packages available.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/installed_solvers.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"List installed solvers — installed_solvers","text":"","code":"installed_solvers()"},{"path":"https://www.cvxgrp.org/CVXR/reference/installed_solvers.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"List installed solvers — installed_solvers","text":"character vector solver names.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_convert.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert a value to a numeric matrix or sparse matrix — intf_convert","title":"Convert a value to a numeric matrix or sparse matrix — intf_convert","text":"Normalizes R values rest CVXR can assume consistent type. Scalars -> 1x1 matrix, vectors -> column matrix, logical -> numeric. Sparse matrices kept sparse.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_convert.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert a value to a numeric matrix or sparse matrix — intf_convert","text":"","code":"intf_convert(val)"},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_convert.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert a value to a numeric matrix or sparse matrix — intf_convert","text":"val numeric scalar, vector, matrix, Matrix object","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_convert.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert a value to a numeric matrix or sparse matrix — intf_convert","text":"matrix dgCMatrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_hermitian.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a matrix is symmetric (and Hermitian for real case) — intf_is_hermitian","title":"Check if a matrix is symmetric (and Hermitian for real case) — intf_is_hermitian","text":"Check matrix symmetric (Hermitian real case)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_hermitian.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a matrix is symmetric (and Hermitian for real case) — intf_is_hermitian","text":"","code":"intf_is_hermitian(val)"},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_hermitian.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a matrix is symmetric (and Hermitian for real case) — intf_is_hermitian","text":"val numeric matrix sparse matrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_hermitian.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a matrix is symmetric (and Hermitian for real case) — intf_is_hermitian","text":"List is_symmetric (logical) is_hermitian (logical)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_psd.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a symmetric matrix is PSD within tolerance — intf_is_psd","title":"Check if a symmetric matrix is PSD within tolerance — intf_is_psd","text":"Check symmetric matrix PSD within tolerance","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_psd.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a symmetric matrix is PSD within tolerance — intf_is_psd","text":"","code":"intf_is_psd(val, tol = EIGVAL_TOL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_psd.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a symmetric matrix is PSD within tolerance — intf_is_psd","text":"val symmetric numeric matrix tol Eigenvalue tolerance","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_psd.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a symmetric matrix is PSD within tolerance — intf_is_psd","text":"Logical","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_skew_symmetric.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a matrix is skew-symmetric (A + A^T == 0) — intf_is_skew_symmetric","title":"Check if a matrix is skew-symmetric (A + A^T == 0) — intf_is_skew_symmetric","text":"Check matrix skew-symmetric (+ ^T == 0)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_skew_symmetric.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a matrix is skew-symmetric (A + A^T == 0) — intf_is_skew_symmetric","text":"","code":"intf_is_skew_symmetric(val)"},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_skew_symmetric.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a matrix is skew-symmetric (A + A^T == 0) — intf_is_skew_symmetric","text":"val numeric matrix sparse matrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_skew_symmetric.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a matrix is skew-symmetric (A + A^T == 0) — intf_is_skew_symmetric","text":"Logical scalar","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_sparse.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a value is a sparse matrix — intf_is_sparse","title":"Check if a value is a sparse matrix — intf_is_sparse","text":"Check value sparse matrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_sparse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a value is a sparse matrix — intf_is_sparse","text":"","code":"intf_is_sparse(val)"},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_sparse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a value is a sparse matrix — intf_is_sparse","text":"val value","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_sparse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a value is a sparse matrix — intf_is_sparse","text":"Logical","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_shape.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the shape of a value as an integer vector c(nrow, ncol) — intf_shape","title":"Get the shape of a value as an integer vector c(nrow, ncol) — intf_shape","text":"Get shape value integer vector c(nrow, ncol)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_shape.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the shape of a value as an integer vector c(nrow, ncol) — intf_shape","text":"","code":"intf_shape(val)"},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_shape.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the shape of a value as an integer vector c(nrow, ncol) — intf_shape","text":"val numeric scalar, vector, matrix, Matrix object","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_shape.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the shape of a value as an integer vector c(nrow, ncol) — intf_shape","text":"Integer vector length 2","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_sign.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine the sign of a numeric value — intf_sign","title":"Determine the sign of a numeric value — intf_sign","text":"Determine sign numeric value","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_sign.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine the sign of a numeric value — intf_sign","text":"","code":"intf_sign(val)"},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_sign.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine the sign of a numeric value — intf_sign","text":"val numeric matrix sparse matrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_sign.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Determine the sign of a numeric value — intf_sign","text":"List is_nonneg (logical) is_nonpos (logical)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_pos.html","id":null,"dir":"Reference","previous_headings":"","what":"Inverse position: \\(x^{-1}\\) (for x > 0) — inv_pos","title":"Inverse position: \\(x^{-1}\\) (for x > 0) — inv_pos","text":"Inverse position: \\(x^{-1}\\) (x > 0)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_pos.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Inverse position: \\(x^{-1}\\) (for x > 0) — inv_pos","text":"","code":"inv_pos(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_pos.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Inverse position: \\(x^{-1}\\) (for x > 0) — inv_pos","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_pos.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Inverse position: \\(x^{-1}\\) (for x > 0) — inv_pos","text":"Power atom p=-1","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_prod.html","id":null,"dir":"Reference","previous_headings":"","what":"Reciprocal of product of entries — inv_prod","title":"Reciprocal of product of entries — inv_prod","text":"Computes reciprocal product entries. Equivalent geo_mean(x)^(-n) n number entries.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_prod.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reciprocal of product of entries — inv_prod","text":"","code":"inv_prod(x, approx = TRUE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_prod.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Reciprocal of product of entries — inv_prod","text":"x Expression numeric value (must positive entries). approx Logical; TRUE (default), use SOC approximation.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_prod.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reciprocal of product of entries — inv_prod","text":"convex Expression representing reciprocal product.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_affine.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Affine — is_affine","title":"Check if an Expression is Affine — is_affine","text":"Check Expression Affine","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_affine.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Affine — is_affine","text":"","code":"is_affine(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_affine.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Affine — is_affine","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_affine.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Affine — is_affine","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_concave.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Concave — is_atom_concave","title":"Check if Atom is Concave — is_atom_concave","text":"Check Atom Concave","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_concave.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Concave — is_atom_concave","text":"","code":"is_atom_concave(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_concave.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Concave — is_atom_concave","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_concave.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Concave — is_atom_concave","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_convex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Convex — is_atom_convex","title":"Check if Atom is Convex — is_atom_convex","text":"Check Atom Convex","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_convex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Convex — is_atom_convex","text":"","code":"is_atom_convex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_convex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Convex — is_atom_convex","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_convex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Convex — is_atom_convex","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_concave.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Log-Log Concave — is_atom_log_log_concave","title":"Check if Atom is Log-Log Concave — is_atom_log_log_concave","text":"Check Atom Log-Log Concave","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_concave.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Log-Log Concave — is_atom_log_log_concave","text":"","code":"is_atom_log_log_concave(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_concave.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Log-Log Concave — is_atom_log_log_concave","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_concave.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Log-Log Concave — is_atom_log_log_concave","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_convex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Log-Log Convex — is_atom_log_log_convex","title":"Check if Atom is Log-Log Convex — is_atom_log_log_convex","text":"Check Atom Log-Log Convex","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_convex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Log-Log Convex — is_atom_log_log_convex","text":"","code":"is_atom_log_log_convex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_convex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Log-Log Convex — is_atom_log_log_convex","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_convex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Log-Log Convex — is_atom_log_log_convex","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconcave.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Quasiconcave — is_atom_quasiconcave","title":"Check if Atom is Quasiconcave — is_atom_quasiconcave","text":"Check Atom Quasiconcave","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconcave.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Quasiconcave — is_atom_quasiconcave","text":"","code":"is_atom_quasiconcave(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconcave.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Quasiconcave — is_atom_quasiconcave","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconcave.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Quasiconcave — is_atom_quasiconcave","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconvex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Quasiconvex — is_atom_quasiconvex","title":"Check if Atom is Quasiconvex — is_atom_quasiconvex","text":"Check Atom Quasiconvex","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconvex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Quasiconvex — is_atom_quasiconvex","text":"","code":"is_atom_quasiconvex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconvex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Quasiconvex — is_atom_quasiconvex","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconvex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Quasiconvex — is_atom_quasiconvex","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_smooth.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Atom is Smooth — is_atom_smooth","title":"Check if an Atom is Smooth — is_atom_smooth","text":"Atom-level hook (default FALSE); smooth atoms (e.g. trig/hyperbolic) override TRUE. Mirrors CVXPY's Atom.is_atom_smooth().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_smooth.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Atom is Smooth — is_atom_smooth","text":"","code":"is_atom_smooth(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_smooth.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Atom is Smooth — is_atom_smooth","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_smooth.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Atom is Smooth — is_atom_smooth","text":"Logical scalar.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/is_complex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Complex — is_complex","title":"Check if Expression is Complex — is_complex","text":"Check Expression Complex","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_complex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Complex — is_complex","text":"","code":"is_complex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_complex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Complex — is_complex","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_complex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Complex — is_complex","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_concave.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Concave — is_concave","title":"Check if an Expression is Concave — is_concave","text":"Check Expression Concave","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_concave.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Concave — is_concave","text":"","code":"is_concave(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_concave.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Concave — is_concave","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_concave.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Concave — is_concave","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_constant.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Constant — is_constant","title":"Check if an Expression is Constant — is_constant","text":"Check Expression Constant","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_constant.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Constant — is_constant","text":"","code":"is_constant(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_constant.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Constant — is_constant","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_constant.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Constant — is_constant","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_convex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Convex — is_convex","title":"Check if an Expression is Convex — is_convex","text":"Check Expression Convex","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_convex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Convex — is_convex","text":"","code":"is_convex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_convex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Convex — is_convex","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_convex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Convex — is_convex","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dcp.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is DCP-Compliant — is_dcp","title":"Check if an Expression is DCP-Compliant — is_dcp","text":"Tests whether expression follows Disciplined Convex Programming (DCP) rules.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dcp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is DCP-Compliant — is_dcp","text":"","code":"is_dcp(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dcp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is DCP-Compliant — is_dcp","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dcp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is DCP-Compliant — is_dcp","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_decr.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Decreasing in an Argument — is_decr","title":"Check if Atom is Decreasing in an Argument — is_decr","text":"Check Atom Decreasing Argument","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_decr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Decreasing in an Argument — is_decr","text":"","code":"is_decr(x, idx, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_decr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Decreasing in an Argument — is_decr","text":"x atom object. idx Integer: argument index (1-based, R convention). ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_decr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Decreasing in an Argument — is_decr","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dgp.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a Constraint is DGP-Compliant — is_dgp","title":"Check if a Constraint is DGP-Compliant — is_dgp","text":"Check Constraint DGP-Compliant","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dgp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a Constraint is DGP-Compliant — is_dgp","text":"","code":"is_dgp(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dgp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a Constraint is DGP-Compliant — is_dgp","text":"x constraint object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dgp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a Constraint is DGP-Compliant — is_dgp","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dnlp.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression or Problem is DNLP-Compliant — is_dnlp","title":"Check if an Expression or Problem is DNLP-Compliant — is_dnlp","text":"Tests whether object follows Disciplined Nonlinear Programming (DNLP) rules: smooth representable, .e. linearizable-convex linearizable-concave.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dnlp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression or Problem is DNLP-Compliant — is_dnlp","text":"","code":"is_dnlp(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dnlp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression or Problem is DNLP-Compliant — is_dnlp","text":"x expression, objective, constraint, Problem. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dnlp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression or Problem is DNLP-Compliant — is_dnlp","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dpp.html","id":null,"dir":"Reference","previous_headings":"","what":"Check DPP Compliance — is_dpp","title":"Check DPP Compliance — is_dpp","text":"Determines whether expression problem satisfies rules Disciplined Parameterized Programming (DPP). DPP-compliant problem enables caching compilation across parameter value changes.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dpp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check DPP Compliance — is_dpp","text":"","code":"is_dpp(x, context = \"dcp\")"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dpp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check DPP Compliance — is_dpp","text":"x expression, constraint, problem object. context Either \"dcp\" (default) \"dgp\": discipline check parameterization . Mirrors CVXPY's is_dpp(context=...).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dpp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check DPP Compliance — is_dpp","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dqcp.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is DQCP-Compliant — is_dqcp","title":"Check if Expression is DQCP-Compliant — is_dqcp","text":"Tests whether expression follows Disciplined Quasiconvex Programming (DQCP) rules.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dqcp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is DQCP-Compliant — is_dqcp","text":"","code":"is_dqcp(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dqcp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is DQCP-Compliant — is_dqcp","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dqcp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is DQCP-Compliant — is_dqcp","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_hermitian.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Hermitian — is_hermitian","title":"Check if Expression is Hermitian — is_hermitian","text":"Check Expression Hermitian","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_hermitian.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Hermitian — is_hermitian","text":"","code":"is_hermitian(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_hermitian.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Hermitian — is_hermitian","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_hermitian.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Hermitian — is_hermitian","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_imag.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Imaginary — is_imag","title":"Check if Expression is Imaginary — is_imag","text":"Check Expression Imaginary","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_imag.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Imaginary — is_imag","text":"","code":"is_imag(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_imag.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Imaginary — is_imag","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_imag.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Imaginary — is_imag","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_incr.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Increasing in an Argument — is_incr","title":"Check if Atom is Increasing in an Argument — is_incr","text":"Check Atom Increasing Argument","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_incr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Increasing in an Argument — is_incr","text":"","code":"is_incr(x, idx, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_incr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Increasing in an Argument — is_incr","text":"x atom object. idx Integer: argument index (1-based, R convention). ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_incr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Increasing in an Argument — is_incr","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_concave.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Linearizable-Concave — is_linearizable_concave","title":"Check if an Expression is Linearizable-Concave — is_linearizable_concave","text":"Concave linearizing smooth subexpressions (DNLP composition rule). Mirrors CVXPY's Expression.is_linearizable_concave().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_concave.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Linearizable-Concave — is_linearizable_concave","text":"","code":"is_linearizable_concave(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_concave.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Linearizable-Concave — is_linearizable_concave","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_concave.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Linearizable-Concave — is_linearizable_concave","text":"Logical scalar.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_convex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Linearizable-Convex — is_linearizable_convex","title":"Check if an Expression is Linearizable-Convex — is_linearizable_convex","text":"Convex linearizing smooth subexpressions (DNLP composition rule). Mirrors CVXPY's Expression.is_linearizable_convex().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_convex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Linearizable-Convex — is_linearizable_convex","text":"","code":"is_linearizable_convex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_convex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Linearizable-Convex — is_linearizable_convex","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_convex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Linearizable-Convex — is_linearizable_convex","text":"Logical scalar.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_affine.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Log-Log Affine — is_log_log_affine","title":"Check if Expression is Log-Log Affine — is_log_log_affine","text":"Check Expression Log-Log Affine","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_affine.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Log-Log Affine — is_log_log_affine","text":"","code":"is_log_log_affine(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_affine.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Log-Log Affine — is_log_log_affine","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_affine.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Log-Log Affine — is_log_log_affine","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_concave.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Log-Log Concave — is_log_log_concave","title":"Check if Expression is Log-Log Concave — is_log_log_concave","text":"Check Expression Log-Log Concave","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_concave.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Log-Log Concave — is_log_log_concave","text":"","code":"is_log_log_concave(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_concave.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Log-Log Concave — is_log_log_concave","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_concave.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Log-Log Concave — is_log_log_concave","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_convex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Log-Log Convex — is_log_log_convex","title":"Check if Expression is Log-Log Convex — is_log_log_convex","text":"Check Expression Log-Log Convex","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_convex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Log-Log Convex — is_log_log_convex","text":"","code":"is_log_log_convex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_convex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Log-Log Convex — is_log_log_convex","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_convex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Log-Log Convex — is_log_log_convex","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_lp.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a Problem is a Linear Program — is_lp","title":"Check if a Problem is a Linear Program — is_lp","text":"Check Problem Linear Program","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_lp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a Problem is a Linear Program — is_lp","text":"","code":"is_lp(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_lp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a Problem is a Linear Program — is_lp","text":"x Problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_lp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a Problem is a Linear Program — is_lp","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_matrix.html","id":null,"dir":"Reference","previous_headings":"","what":"Is the Expression a Matrix? — is_matrix","title":"Is the Expression a Matrix? — is_matrix","text":"Returns TRUE expression dimensions greater 1.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_matrix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Is the Expression a Matrix? — is_matrix","text":"","code":"is_matrix(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_matrix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Is the Expression a Matrix? — is_matrix","text":"x CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_matrix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Is the Expression a Matrix? — is_matrix","text":"Logical.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/is_mixed_integer.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a Problem is Mixed-Integer — is_mixed_integer","title":"Check if a Problem is Mixed-Integer — is_mixed_integer","text":"Returns TRUE variable problem boolean integer attribute.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_mixed_integer.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a Problem is Mixed-Integer — is_mixed_integer","text":"","code":"is_mixed_integer(problem)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_mixed_integer.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a Problem is Mixed-Integer — is_mixed_integer","text":"problem Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_mixed_integer.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a Problem is Mixed-Integer — is_mixed_integer","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonneg.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Non-Negative — is_nonneg","title":"Check if Expression is Non-Negative — is_nonneg","text":"Check Expression Non-Negative","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonneg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Non-Negative — is_nonneg","text":"","code":"is_nonneg(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonneg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Non-Negative — is_nonneg","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonneg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Non-Negative — is_nonneg","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonpos.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Non-Positive — is_nonpos","title":"Check if Expression is Non-Positive — is_nonpos","text":"Check Expression Non-Positive","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonpos.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Non-Positive — is_nonpos","text":"","code":"is_nonpos(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonpos.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Non-Positive — is_nonpos","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonpos.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Non-Positive — is_nonpos","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nsd.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Negative Semidefinite — is_nsd","title":"Check if Expression is Negative Semidefinite — is_nsd","text":"Check Expression Negative Semidefinite","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nsd.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Negative Semidefinite — is_nsd","text":"","code":"is_nsd(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nsd.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Negative Semidefinite — is_nsd","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nsd.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Negative Semidefinite — is_nsd","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_affine.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Parameter-Affine — is_param_affine","title":"Check if Expression is Parameter-Affine — is_param_affine","text":"Returns TRUE expression affine parameters contains decision variables.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_affine.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Parameter-Affine — is_param_affine","text":"","code":"is_param_affine(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_affine.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Parameter-Affine — is_param_affine","text":"expr CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_affine.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Parameter-Affine — is_param_affine","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_free.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Parameter-Free — is_param_free","title":"Check if Expression is Parameter-Free — is_param_free","text":"Returns TRUE expression contains parameters.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_free.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Parameter-Free — is_param_free","text":"","code":"is_param_free(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_free.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Parameter-Free — is_param_free","text":"expr CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_free.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Parameter-Free — is_param_free","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pos.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Strictly Positive — is_pos","title":"Check if Expression is Strictly Positive — is_pos","text":"Check Expression Strictly Positive","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pos.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Strictly Positive — is_pos","text":"","code":"is_pos(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pos.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Strictly Positive — is_pos","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pos.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Strictly Positive — is_pos","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_psd.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Positive Semidefinite — is_psd","title":"Check if Expression is Positive Semidefinite — is_psd","text":"Check Expression Positive Semidefinite","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_psd.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Positive Semidefinite — is_psd","text":"","code":"is_psd(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_psd.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Positive Semidefinite — is_psd","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_psd.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Positive Semidefinite — is_psd","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pwl.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Piecewise Linear — is_pwl","title":"Check if Expression is Piecewise Linear — is_pwl","text":"Check Expression Piecewise Linear Expression Piecewise Linear?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pwl.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Piecewise Linear — is_pwl","text":"","code":"is_pwl(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pwl.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Piecewise Linear — is_pwl","text":"x CVXR expression. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pwl.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Piecewise Linear — is_pwl","text":"Logical scalar. Logical.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qp.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a Problem is a Quadratic Program — is_qp","title":"Check if a Problem is a Quadratic Program — is_qp","text":"Check Problem Quadratic Program","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a Problem is a Quadratic Program — is_qp","text":"","code":"is_qp(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a Problem is a Quadratic Program — is_qp","text":"x Problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a Problem is a Quadratic Program — is_qp","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qpwa.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Quadratic or Piecewise Affine — is_qpwa","title":"Check if Expression is Quadratic or Piecewise Affine — is_qpwa","text":"Check Expression Quadratic Piecewise Affine","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qpwa.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Quadratic or Piecewise Affine — is_qpwa","text":"","code":"is_qpwa(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qpwa.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Quadratic or Piecewise Affine — is_qpwa","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qpwa.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Quadratic or Piecewise Affine — is_qpwa","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quadratic.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Quadratic — is_quadratic","title":"Check if an Expression is Quadratic — is_quadratic","text":"Check Expression Quadratic","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quadratic.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Quadratic — is_quadratic","text":"","code":"is_quadratic(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quadratic.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Quadratic — is_quadratic","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quadratic.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Quadratic — is_quadratic","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconcave.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Quasiconcave — is_quasiconcave","title":"Check if Expression is Quasiconcave — is_quasiconcave","text":"Check Expression Quasiconcave","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconcave.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Quasiconcave — is_quasiconcave","text":"","code":"is_quasiconcave(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconcave.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Quasiconcave — is_quasiconcave","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconcave.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Quasiconcave — is_quasiconcave","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconvex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Quasiconvex — is_quasiconvex","title":"Check if Expression is Quasiconvex — is_quasiconvex","text":"Check Expression Quasiconvex","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconvex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Quasiconvex — is_quasiconvex","text":"","code":"is_quasiconvex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconvex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Quasiconvex — is_quasiconvex","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconvex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Quasiconvex — is_quasiconvex","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasilinear.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Quasilinear — is_quasilinear","title":"Check if Expression is Quasilinear — is_quasilinear","text":"Check Expression Quasilinear","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasilinear.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Quasilinear — is_quasilinear","text":"","code":"is_quasilinear(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasilinear.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Quasilinear — is_quasilinear","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasilinear.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Quasilinear — is_quasilinear","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_real.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Real — is_real","title":"Check if Expression is Real — is_real","text":"Check Expression Real","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_real.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Real — is_real","text":"","code":"is_real(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_real.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Real — is_real","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_real.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Real — is_real","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_scalar.html","id":null,"dir":"Reference","previous_headings":"","what":"Is the Expression a Scalar? — is_scalar","title":"Is the Expression a Scalar? — is_scalar","text":"Expression Scalar?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_scalar.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Is the Expression a Scalar? — is_scalar","text":"","code":"is_scalar(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_scalar.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Is the Expression a Scalar? — is_scalar","text":"x CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_scalar.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Is the Expression a Scalar? — is_scalar","text":"Logical.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/is_skew_symmetric.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Skew-Symmetric — is_skew_symmetric","title":"Check if Expression is Skew-Symmetric — is_skew_symmetric","text":"Tests whether X + t(X) == 0 (real matrices ). CVXPY SOURCE: expression.py line 470-473","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_skew_symmetric.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Skew-Symmetric — is_skew_symmetric","text":"","code":"is_skew_symmetric(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_skew_symmetric.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Skew-Symmetric — is_skew_symmetric","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_skew_symmetric.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Skew-Symmetric — is_skew_symmetric","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_smooth.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Smooth — is_smooth","title":"Check if an Expression is Smooth — is_smooth","text":"Smooth = constant, linearizable-convex linearizable-concave. Mirrors CVXPY's Expression.is_smooth().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_smooth.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Smooth — is_smooth","text":"","code":"is_smooth(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_smooth.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Smooth — is_smooth","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_smooth.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Smooth — is_smooth","text":"Logical scalar.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/is_symmetric.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Symmetric — is_symmetric","title":"Check if Expression is Symmetric — is_symmetric","text":"Check Expression Symmetric","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_symmetric.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Symmetric — is_symmetric","text":"","code":"is_symmetric(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_symmetric.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Symmetric — is_symmetric","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_symmetric.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Symmetric — is_symmetric","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_vector.html","id":null,"dir":"Reference","previous_headings":"","what":"Is the Expression a Vector? — is_vector","title":"Is the Expression a Vector? — is_vector","text":"Returns TRUE expression one dimension greater 1.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_vector.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Is the Expression a Vector? — is_vector","text":"","code":"is_vector(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_vector.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Is the Expression a Vector? — is_vector","text":"x CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_vector.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Is the Expression a Vector? — is_vector","text":"Logical.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/is_zero.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Zero — is_zero","title":"Check if Expression is Zero — is_zero","text":"Check Expression Zero","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_zero.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Zero — is_zero","text":"","code":"is_zero(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_zero.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Zero — is_zero","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_zero.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Zero — is_zero","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/kl_div.html","id":null,"dir":"Reference","previous_headings":"","what":"KL Divergence: x*log(x/y) - x + y — kl_div","title":"KL Divergence: x*log(x/y) - x + y — kl_div","text":"KL Divergence: x*log(x/y) - x + y","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/kl_div.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"KL Divergence: x*log(x/y) - x + y — kl_div","text":"","code":"kl_div(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/kl_div.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"KL Divergence: x*log(x/y) - x + y — kl_div","text":"x Expression y Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/kl_div.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"KL Divergence: x*log(x/y) - x + y — kl_div","text":"KlDiv atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/kron.html","id":null,"dir":"Reference","previous_headings":"","what":"Kronecker product of two expressions — kron","title":"Kronecker product of two expressions — kron","text":"Kronecker product two expressions","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/kron.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Kronecker product of two expressions — kron","text":"","code":"kron(a, b)"},{"path":"https://www.cvxgrp.org/CVXR/reference/kron.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Kronecker product of two expressions — kron","text":"Expression (one must constant) b Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/kron.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Kronecker product of two expressions — kron","text":"Kron atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/label-set.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the label of an expression — label<-","title":"Set the label of an expression — label<-","text":"R replacement form set_label(). label(x) <- value stores value (coerced character) x's internal label slot; setting NULL clears label. Equivalent x <- set_label(x, value).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/label-set.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the label of an expression — label<-","text":"","code":"label(x) <- value"},{"path":"https://www.cvxgrp.org/CVXR/reference/label-set.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the label of an expression — label<-","text":"x Expression object. value character string, NULL clear.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/label-set.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set the label of an expression — label<-","text":"x, invisibly, label updated.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/label.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the label of an expression — label","title":"Get the label of an expression — label","text":"Returns human-readable label set via set_label() (label(x) <- ...), NULL label set.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/label.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the label of an expression — label","text":"","code":"label(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/label.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the label of an expression — label","text":"x Expression object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/label.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the label of an expression — label","text":"length-1 character string, NULL.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_max.html","id":null,"dir":"Reference","previous_headings":"","what":"Maximum eigenvalue — lambda_max","title":"Maximum eigenvalue — lambda_max","text":"Maximum eigenvalue","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_max.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Maximum eigenvalue — lambda_max","text":"","code":"lambda_max(A)"},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_max.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Maximum eigenvalue — lambda_max","text":"square matrix expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_max.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Maximum eigenvalue — lambda_max","text":"expression representing maximum eigenvalue ","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_min.html","id":null,"dir":"Reference","previous_headings":"","what":"Minimum eigenvalue — lambda_min","title":"Minimum eigenvalue — lambda_min","text":"Minimum eigenvalue","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_min.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Minimum eigenvalue — lambda_min","text":"","code":"lambda_min(A)"},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_min.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Minimum eigenvalue — lambda_min","text":"square matrix expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_min.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Minimum eigenvalue — lambda_min","text":"expression representing minimum eigenvalue ","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_largest.html","id":null,"dir":"Reference","previous_headings":"","what":"Sum of largest k eigenvalues — lambda_sum_largest","title":"Sum of largest k eigenvalues — lambda_sum_largest","text":"Sum largest k eigenvalues","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_largest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sum of largest k eigenvalues — lambda_sum_largest","text":"","code":"lambda_sum_largest(A, k)"},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_largest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sum of largest k eigenvalues — lambda_sum_largest","text":"square matrix expression k Number largest eigenvalues sum (positive integer)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_largest.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sum of largest k eigenvalues — lambda_sum_largest","text":"expression representing sum k largest eigenvalues","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_smallest.html","id":null,"dir":"Reference","previous_headings":"","what":"Sum of smallest k eigenvalues — lambda_sum_smallest","title":"Sum of smallest k eigenvalues — lambda_sum_smallest","text":"Sum smallest k eigenvalues","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_smallest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sum of smallest k eigenvalues — lambda_sum_smallest","text":"","code":"lambda_sum_smallest(A, k)"},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_smallest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sum of smallest k eigenvalues — lambda_sum_smallest","text":"square matrix expression k Number smallest eigenvalues sum (positive integer)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_smallest.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sum of smallest k eigenvalues — lambda_sum_smallest","text":"expression representing sum k smallest eigenvalues","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/length_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Length of a Vector (Last Nonzero Index) — length_expr","title":"Length of a Vector (Last Nonzero Index) — length_expr","text":"Returns index last nonzero element vector (1-based). atom quasiconvex convex, can used DQCP problems (solved qcp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/length_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Length of a Vector (Last Nonzero Index) — length_expr","text":"","code":"length_expr(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/length_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Length of a Vector (Last Nonzero Index) — length_expr","text":"x CVXR vector expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/length_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Length of a Vector (Last Nonzero Index) — length_expr","text":"Length expression (scalar).","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_args_push_back.html","id":null,"dir":"Reference","previous_headings":"","what":"Append a child LinOp to the args list — linop_args_push_back","title":"Append a child LinOp to the args list — linop_args_push_back","text":"Append child LinOp args list","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_args_push_back.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Append a child LinOp to the args list — linop_args_push_back","text":"","code":"linop_args_push_back(ptr, child_ptr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_args_push_back.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Append a child LinOp to the args list — linop_args_push_back","text":"ptr External pointer parent LinOp. child_ptr External pointer child LinOp.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_new.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a new C++ LinOp external pointer — linop_new","title":"Create a new C++ LinOp external pointer — linop_new","text":"Create new C++ LinOp external pointer","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_new.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a new C++ LinOp external pointer — linop_new","text":"","code":"linop_new()"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_new.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a new C++ LinOp external pointer — linop_new","text":"external pointer C++ LinOp object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_data_ndim.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the data dimensionality on a LinOp — linop_set_data_ndim","title":"Set the data dimensionality on a LinOp — linop_set_data_ndim","text":"Set data dimensionality LinOp","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_data_ndim.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the data dimensionality on a LinOp — linop_set_data_ndim","text":"","code":"linop_set_data_ndim(ptr, value)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_data_ndim.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the data dimensionality on a LinOp — linop_set_data_ndim","text":"ptr External pointer LinOp. value Integer dimensionality (0 = scalar, 2 = matrix).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_dense_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Set dense data on a LinOp — linop_set_dense_data","title":"Set dense data on a LinOp — linop_set_dense_data","text":"Set dense data LinOp","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_dense_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set dense data on a LinOp — linop_set_dense_data","text":"","code":"linop_set_dense_data(ptr, value)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_dense_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set dense data on a LinOp — linop_set_dense_data","text":"ptr External pointer LinOp. value Dense matrix data.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_linop_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Set a LinOp data sub-tree on a LinOp — linop_set_linop_data","title":"Set a LinOp data sub-tree on a LinOp — linop_set_linop_data","text":"Set LinOp data sub-tree LinOp","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_linop_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set a LinOp data sub-tree on a LinOp — linop_set_linop_data","text":"","code":"linop_set_linop_data(ptr, data_ptr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_linop_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set a LinOp data sub-tree on a LinOp — linop_set_linop_data","text":"ptr External pointer LinOp. data_ptr External pointer data LinOp sub-tree.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_sparse_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Set sparse data on a LinOp — linop_set_sparse_data","title":"Set sparse data on a LinOp — linop_set_sparse_data","text":"Set sparse data LinOp","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_sparse_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set sparse data on a LinOp — linop_set_sparse_data","text":"","code":"linop_set_sparse_data(ptr, value)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_sparse_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set sparse data on a LinOp — linop_set_sparse_data","text":"ptr External pointer LinOp. value Sparse matrix data (dgCMatrix similar).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_type.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the type of a LinOp — linop_set_type","title":"Set the type of a LinOp — linop_set_type","text":"Set type LinOp","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_type.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the type of a LinOp — linop_set_type","text":"","code":"linop_set_type(ptr, type)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_type.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the type of a LinOp — linop_set_type","text":"ptr External pointer LinOp. type Character string – one .LINOP_TYPES.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_size_push_back.html","id":null,"dir":"Reference","previous_headings":"","what":"Push a dimension to the LinOp size vector — linop_size_push_back","title":"Push a dimension to the LinOp size vector — linop_size_push_back","text":"Push dimension LinOp size vector","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_size_push_back.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Push a dimension to the LinOp size vector — linop_size_push_back","text":"","code":"linop_size_push_back(ptr, value)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_size_push_back.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Push a dimension to the LinOp size vector — linop_size_push_back","text":"ptr External pointer LinOp. value Integer dimension value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_slice_push_back.html","id":null,"dir":"Reference","previous_headings":"","what":"Push a slice (index vector) to a LinOp — linop_slice_push_back","title":"Push a slice (index vector) to a LinOp — linop_slice_push_back","text":"Push slice (index vector) LinOp","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_slice_push_back.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Push a slice (index vector) to a LinOp — linop_slice_push_back","text":"","code":"linop_slice_push_back(ptr, int_vector)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_slice_push_back.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Push a slice (index vector) to a LinOp — linop_slice_push_back","text":"ptr External pointer LinOp. int_vector Integer vector indices (0-based C++).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log1p_atom.html","id":null,"dir":"Reference","previous_headings":"","what":"Log(1 + x) – elementwise — log1p_atom","title":"Log(1 + x) – elementwise — log1p_atom","text":"Log(1 + x) – elementwise","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log1p_atom.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Log(1 + x) – elementwise — log1p_atom","text":"","code":"log1p_atom(x) log1p_expr(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/log1p_atom.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Log(1 + x) – elementwise — log1p_atom","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log1p_atom.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Log(1 + x) – elementwise — log1p_atom","text":"Log1p atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_det.html","id":null,"dir":"Reference","previous_headings":"","what":"Log-determinant — log_det","title":"Log-determinant — log_det","text":"Computes log(det()) PSD matrix .","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_det.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Log-determinant — log_det","text":"","code":"log_det(A)"},{"path":"https://www.cvxgrp.org/CVXR/reference/log_det.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Log-determinant — log_det","text":"square PSD matrix expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_det.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Log-determinant — log_det","text":"expression representing log(det())","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_normcdf.html","id":null,"dir":"Reference","previous_headings":"","what":"Elementwise log of the standard normal CDF — log_normcdf","title":"Elementwise log of the standard normal CDF — log_normcdf","text":"Quadratic approximation log(pnorm(x)) modest accuracy range -4 4.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_normcdf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise log of the standard normal CDF — log_normcdf","text":"","code":"log_normcdf(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/log_normcdf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise log of the standard normal CDF — log_normcdf","text":"x Expression numeric value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_normcdf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise log of the standard normal CDF — log_normcdf","text":"concave Expression representing log(Phi(x)).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_sum_exp.html","id":null,"dir":"Reference","previous_headings":"","what":"Log-sum-exp: log(sum(exp(x))) — log_sum_exp","title":"Log-sum-exp: log(sum(exp(x))) — log_sum_exp","text":"Log-sum-exp: log(sum(exp(x)))","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_sum_exp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Log-sum-exp: log(sum(exp(x))) — log_sum_exp","text":"","code":"log_sum_exp(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/log_sum_exp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Log-sum-exp: log(sum(exp(x))) — log_sum_exp","text":"x Expression axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical: keep reduced dimensions?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_sum_exp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Log-sum-exp: log(sum(exp(x))) — log_sum_exp","text":"LogSumExp atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/loggamma.html","id":null,"dir":"Reference","previous_headings":"","what":"Elementwise log of the gamma function — loggamma","title":"Elementwise log of the gamma function — loggamma","text":"Piecewise linear approximation log(gamma(x)). modest accuracy full range, approaching perfect accuracy x goes infinity.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/loggamma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise log of the gamma function — loggamma","text":"","code":"loggamma(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/loggamma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise log of the gamma function — loggamma","text":"x Expression numeric value (must positive DCP).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/loggamma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise log of the gamma function — loggamma","text":"convex Expression representing log(gamma(x)).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/logistic.html","id":null,"dir":"Reference","previous_headings":"","what":"Logistic function: log(1 + exp(x)) – elementwise — logistic","title":"Logistic function: log(1 + exp(x)) – elementwise — logistic","text":"Logistic function: log(1 + exp(x)) – elementwise","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/logistic.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logistic function: log(1 + exp(x)) – elementwise — logistic","text":"","code":"logistic(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/logistic.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logistic function: log(1 + exp(x)) – elementwise — logistic","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/logistic.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logistic function: log(1 + exp(x)) – elementwise — logistic","text":"Logistic atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/make_sparse_diagonal_matrix.html","id":null,"dir":"Reference","previous_headings":"","what":"Make a CSC sparse diagonal matrix — make_sparse_diagonal_matrix","title":"Make a CSC sparse diagonal matrix — make_sparse_diagonal_matrix","text":"Make CSC sparse diagonal matrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/make_sparse_diagonal_matrix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Make a CSC sparse diagonal matrix — make_sparse_diagonal_matrix","text":"","code":"make_sparse_diagonal_matrix(size, diagonal = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/make_sparse_diagonal_matrix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Make a CSC sparse diagonal matrix — make_sparse_diagonal_matrix","text":"size number rows columns diagonal specified, diagonal values, case size ignored","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/make_sparse_diagonal_matrix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Make a CSC sparse diagonal matrix — make_sparse_diagonal_matrix","text":"compressed sparse column diagonal matrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":null,"dir":"Reference","previous_headings":"","what":"Standard R Functions for CVXR Expressions — math_atoms","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"CVXR registers methods standard R functions create appropriate atoms applied Expression objects. CVXR expressions, computes matrix/vector norm atom. inputs, falls Matrix::norm dispatches via S4 Matrix base matrix objects. CVXR expressions, computes standard deviation atom (ddof=0 default, matching CVXPY/numpy convention). numeric inputs, falls sd. CVXR expressions, computes variance atom (ddof=0 default). numeric inputs, falls var. CVXR expressions, computes outer product two vectors. inputs, falls outer. CVXR expressions, dispatches DiagVec (vector diagonal matrix) DiagMat (extract diagonal matrix), matching CVXPY's cp.diag() behavior. inputs, falls Matrix::diag dispatches via S4 Matrix base matrix objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"","code":"norm(x, type = \"2\", ...) sd(x, ...) var(x, ...) outer(X, Y, ...) diag(x, nrow, ncol, names = TRUE, k = 0L)"},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"x Expression, matrix, vector, scalar. type Norm type: \"1\", \"2\" (default), \"\"/\"\" (infinity), \"F\"/\"f\" (Frobenius). ... non-Expression inputs: passed outer. X Expression numeric. Y Expression numeric. nrow non-Expression: passed Matrix::diag. ncol non-Expression: passed Matrix::diag. names non-Expression: passed Matrix::diag. k Integer diagonal offset Expressions . k = 0 (default) main diagonal.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"Expression numeric value. Expression numeric value. Expression numeric value. Expression matrix. Expression, matrix, vector.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"k parameter (-diagonal offset) available Expression inputs. full-featured version k non-Expression inputs, use DiagVec DiagMat directly.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"math-group-elementwise-via-s-group-generic-","dir":"Reference","previous_headings":"","what":"Math group (elementwise, via S3 group generic)","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"abs(x) Absolute value (convex, nonneg) exp(x) Exponential (convex, positive) log(x) Natural logarithm (concave, domain x >= 0) sqrt(x) Square root via power(x, 0.5) (concave) log1p(x) log(1+x) compound expression (concave) log2(x), log10(x) Base-2/10 logarithm cumsum(x) Cumulative sum (affine) cummax(x) Cumulative max (convex) cumprod(x) Cumulative product ceiling(x), floor(x) Round /(MIP)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"summary-group-via-s-group-generic-","dir":"Reference","previous_headings":"","what":"Summary group (via S3 group generic)","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"sum(x) Sum entries (affine) max(x) Maximum entry (convex) min(x) Minimum entry (concave)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"s-generic-methods","dir":"Reference","previous_headings":"","what":"S3 generic methods","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"mean(x) Arithmetic mean; pass axis/keepdims via ... diff(x) First-order differences; also cvxr_diff","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"masking-wrappers","dir":"Reference","previous_headings":"","what":"Masking wrappers","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"mask base/stats versions dispatch argument type: norm(x) 2-norm; use type \"1\", \"\" (infinity), \"F\" (Frobenius) sd(x) Standard deviation (ddof=0 expressions) var(x) Variance (ddof=0 expressions) outer(X, Y) Outer product two vector expressions","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"advanced-usage","dir":"Reference","previous_headings":"","what":"Advanced usage","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"axis-aware reductions, keepdims, options available standard interface, use explicit functions: cvxr_norm, cvxr_mean, cvxr_diff, cvxr_std, cvxr_var, cvxr_outer.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_frac.html","id":null,"dir":"Reference","previous_headings":"","what":"Matrix fractional function — matrix_frac","title":"Matrix fractional function — matrix_frac","text":"Computes \\(\\mathrm{trace}(X^T P^{-1} X)\\). P constant matrix, uses QuadForm shortcut efficiency.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_frac.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Matrix fractional function — matrix_frac","text":"","code":"matrix_frac(X, P)"},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_frac.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Matrix fractional function — matrix_frac","text":"X matrix expression (n m) P square matrix expression (n n), must PSD","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_frac.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Matrix fractional function — matrix_frac","text":"expression representing \\(\\mathrm{trace}(X^T P^{-1} X)\\)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_trace.html","id":null,"dir":"Reference","previous_headings":"","what":"Trace of a square matrix expression — matrix_trace","title":"Trace of a square matrix expression — matrix_trace","text":"matrix_trace(%*% B), uses O(n^2) identity trace(%*% B) = sum(* t(B)) instead forming full matrix product.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_trace.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Trace of a square matrix expression — matrix_trace","text":"","code":"matrix_trace(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_trace.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Trace of a square matrix expression — matrix_trace","text":"x Expression (square matrix)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_trace.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Trace of a square matrix expression — matrix_trace","text":"Trace atom equivalent expression (scalar)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/max_elemwise.html","id":null,"dir":"Reference","previous_headings":"","what":"Elementwise maximum of expressions — max_elemwise","title":"Elementwise maximum of expressions — max_elemwise","text":"Elementwise maximum expressions","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/max_elemwise.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise maximum of expressions — max_elemwise","text":"","code":"max_elemwise(...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/max_elemwise.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise maximum of expressions — max_elemwise","text":"... Expressions (least 2)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/max_elemwise.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise maximum of expressions — max_elemwise","text":"Maximum atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/max_entries.html","id":null,"dir":"Reference","previous_headings":"","what":"Maximum entry of an expression — max_entries","title":"Maximum entry of an expression — max_entries","text":"Maximum entry expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/max_entries.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Maximum entry of an expression — max_entries","text":"","code":"max_entries(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/max_entries.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Maximum entry of an expression — max_entries","text":"x Expression axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/max_entries.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Maximum entry of an expression — max_entries","text":"MaxEntries atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/min_elemwise.html","id":null,"dir":"Reference","previous_headings":"","what":"Elementwise minimum of expressions — min_elemwise","title":"Elementwise minimum of expressions — min_elemwise","text":"Elementwise minimum expressions","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/min_elemwise.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise minimum of expressions — min_elemwise","text":"","code":"min_elemwise(...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/min_elemwise.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise minimum of expressions — min_elemwise","text":"... Expressions (least 2)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/min_elemwise.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise minimum of expressions — min_elemwise","text":"Minimum atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/min_entries.html","id":null,"dir":"Reference","previous_headings":"","what":"Minimum entry of an expression — min_entries","title":"Minimum entry of an expression — min_entries","text":"Minimum entry expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/min_entries.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Minimum entry of an expression — min_entries","text":"","code":"min_entries(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/min_entries.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Minimum entry of an expression — min_entries","text":"x Expression axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/min_entries.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Minimum entry of an expression — min_entries","text":"MinEntries atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/mixed_norm.html","id":null,"dir":"Reference","previous_headings":"","what":"Mixed norm (\\(L_{p,q}\\) norm): column-wise p-norm, then q-norm — mixed_norm","title":"Mixed norm (\\(L_{p,q}\\) norm): column-wise p-norm, then q-norm — mixed_norm","text":"Mixed norm (\\(L_{p,q}\\) norm): column-wise p-norm, q-norm","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/mixed_norm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Mixed norm (\\(L_{p,q}\\) norm): column-wise p-norm, then q-norm — mixed_norm","text":"","code":"mixed_norm(X, p = 2, q = 1)"},{"path":"https://www.cvxgrp.org/CVXR/reference/mixed_norm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Mixed norm (\\(L_{p,q}\\) norm): column-wise p-norm, then q-norm — mixed_norm","text":"X Expression (matrix) p Inner norm parameter (default 2) q Outer norm parameter (default 1)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/mixed_norm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Mixed norm (\\(L_{p,q}\\) norm): column-wise p-norm, then q-norm — mixed_norm","text":"Expression representing mixed norm","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/mul_sign.html","id":null,"dir":"Reference","previous_headings":"","what":"Sign of a product of two expressions — mul_sign","title":"Sign of a product of two expressions — mul_sign","text":"Determines whether product two expressions nonnegative, nonpositive, unknown, using sign multiplication table.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/mul_sign.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sign of a product of two expressions — mul_sign","text":"","code":"mul_sign(lh_expr, rh_expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/mul_sign.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sign of a product of two expressions — mul_sign","text":"lh_expr Expression object (left-hand operand) rh_expr Expression object (right-hand operand)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/mul_sign.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sign of a product of two expressions — mul_sign","text":"Named logical vector c(is_nonneg, is_nonpos)","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/multiply.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise multiplication (deprecated) — multiply","text":"","code":"multiply(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/multiply.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise multiplication (deprecated) — multiply","text":"x, y Expressions numeric values.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/multiply.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise multiplication (deprecated) — multiply","text":"Expression representing elementwise product.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/multiply.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Elementwise multiplication (deprecated) — multiply","text":"Use * operator instead: x * y.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/name.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Expression Name — name","title":"Get Expression Name — name","text":"Returns human-readable string representation CVXR expression, variable, constraint.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/name.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Expression Name — name","text":"","code":"name(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/name.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Expression Name — name","text":"x CVXR expression, variable, parameter, constant, constraint.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/name.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Expression Name — name","text":"character string.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/name.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get Expression Name — name","text":"","code":"x <- Variable(2, name = \"x\") name(x) # \"x\" #> [1] \"x\" name(x + 1) # \"x + 1\" #> [1] \"x + 1\""},{"path":"https://www.cvxgrp.org/CVXR/reference/neg.html","id":null,"dir":"Reference","previous_headings":"","what":"Negative part: -min(x, 0) — neg","title":"Negative part: -min(x, 0) — neg","text":"Negative part: -min(x, 0)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/neg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Negative part: -min(x, 0) — neg","text":"","code":"neg(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/neg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Negative part: -min(x, 0) — neg","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/neg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Negative part: -min(x, 0) — neg","text":"negated Minimum atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm1.html","id":null,"dir":"Reference","previous_headings":"","what":"L1 norm of an expression — norm1","title":"L1 norm of an expression — norm1","text":"L1 norm expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm1.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"L1 norm of an expression — norm1","text":"","code":"norm1(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/norm1.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"L1 norm of an expression — norm1","text":"x Expression axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical: keep reduced dimensions?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm1.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"L1 norm of an expression — norm1","text":"Norm1 atom","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/norm2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Euclidean norm (deprecated alias) — norm2","text":"","code":"norm2(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/norm2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Euclidean norm (deprecated alias) — norm2","text":"x Expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Euclidean norm (deprecated alias) — norm2","text":"Expression representing L2 norm.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm2.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Euclidean norm (deprecated alias) — norm2","text":"Use p_norm(x, 2) instead.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_inf.html","id":null,"dir":"Reference","previous_headings":"","what":"L-infinity norm of an expression — norm_inf","title":"L-infinity norm of an expression — norm_inf","text":"L-infinity norm expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_inf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"L-infinity norm of an expression — norm_inf","text":"","code":"norm_inf(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_inf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"L-infinity norm of an expression — norm_inf","text":"x Expression axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical: keep reduced dimensions?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_inf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"L-infinity norm of an expression — norm_inf","text":"NormInf atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_nuc.html","id":null,"dir":"Reference","previous_headings":"","what":"Nuclear norm (sum of singular values) — norm_nuc","title":"Nuclear norm (sum of singular values) — norm_nuc","text":"Nuclear norm (sum singular values)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_nuc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Nuclear norm (sum of singular values) — norm_nuc","text":"","code":"norm_nuc(A)"},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_nuc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Nuclear norm (sum of singular values) — norm_nuc","text":"matrix expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_nuc.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Nuclear norm (sum of singular values) — norm_nuc","text":"expression representing nuclear norm ","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/normcdf.html","id":null,"dir":"Reference","previous_headings":"","what":"Standard Normal Cumulative Distribution Function — normcdf","title":"Standard Normal Cumulative Distribution Function — normcdf","text":"Elementwise standard normal CDF \\(\\Phi(x)\\). smooth (DNLP) atom: neither convex concave, usable disciplined-nonlinear- programming path.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/normcdf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Standard Normal Cumulative Distribution Function — normcdf","text":"","code":"normcdf(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/normcdf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Standard Normal Cumulative Distribution Function — normcdf","text":"x Expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/normcdf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Standard Normal Cumulative Distribution Function — normcdf","text":"Normcdf atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/num_cones.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Number of Cones in a Constraint — num_cones","title":"Get the Number of Cones in a Constraint — num_cones","text":"Get Number Cones Constraint","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/num_cones.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Number of Cones in a Constraint — num_cones","text":"","code":"num_cones(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/num_cones.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Number of Cones in a Constraint — num_cones","text":"x cone constraint object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/num_cones.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Number of Cones in a Constraint — num_cones","text":"Integer.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/numeric_value.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute the Numeric Value of an Atom — numeric_value","title":"Compute the Numeric Value of an Atom — numeric_value","text":"Compute Numeric Value Atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/numeric_value.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute the Numeric Value of an Atom — numeric_value","text":"","code":"numeric_value(x, values, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/numeric_value.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute the Numeric Value of an Atom — numeric_value","text":"x atom object. values List numeric values atom's arguments. ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/numeric_value.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compute the Numeric Value of an Atom — numeric_value","text":"Numeric value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/objective.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Problem Objective (read-only) — objective","title":"Get Problem Objective (read-only) — objective","text":"Returns problem's objective.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/objective.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Problem Objective (read-only) — objective","text":"","code":"objective(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/objective.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Problem Objective (read-only) — objective","text":"x Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/objective.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Problem Objective (read-only) — objective","text":"Minimize Maximize object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/objective.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get Problem Objective (read-only) — objective","text":"Problem objects immutable: objective modified construction. change objective, create new Problem().","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/objective.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get Problem Objective (read-only) — objective","text":"","code":"x <- Variable(2) prob <- Problem(Minimize(sum_entries(x)), list(x >= 1)) objective(prob) #> minimize SumEntries(var82, NULL, FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/one_minus_pos.html","id":null,"dir":"Reference","previous_headings":"","what":"The difference 1 - x with domain (0, 1) — one_minus_pos","title":"The difference 1 - x with domain (0, 1) — one_minus_pos","text":"Log-log concave atom DGP. Solve psolve(problem, gp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/one_minus_pos.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"The difference 1 - x with domain (0, 1) — one_minus_pos","text":"","code":"one_minus_pos(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/one_minus_pos.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"The difference 1 - x with domain (0, 1) — one_minus_pos","text":"x Expression (elementwise (0, 1))","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/one_minus_pos.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"The difference 1 - x with domain (0, 1) — one_minus_pos","text":"OneMInusPos atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/one_minus_pos.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"The difference 1 - x with domain (0, 1) — one_minus_pos","text":"","code":"x <- Variable(pos = TRUE) prob <- Problem(Maximize(one_minus_pos(x)), list(x >= 0.1, x <= 0.5)) if (FALSE) psolve(prob, gp = TRUE) # \\dontrun{}"},{"path":"https://www.cvxgrp.org/CVXR/reference/p_norm.html","id":null,"dir":"Reference","previous_headings":"","what":"General p-norm of an expression — p_norm","title":"General p-norm of an expression — p_norm","text":"General p-norm expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/p_norm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"General p-norm of an expression — p_norm","text":"","code":"p_norm( x, p = 2, axis = NULL, keepdims = FALSE, max_denom = 1024L, approx = TRUE )"},{"path":"https://www.cvxgrp.org/CVXR/reference/p_norm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"General p-norm of an expression — p_norm","text":"x Expression p Numeric exponent (default 2) axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical max_denom Integer max denominator rational approx approx TRUE (default), use SOC approximation. FALSE, use exact power cone.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/p_norm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"General p-norm of an expression — p_norm","text":"Pnorm, PnormApprox, Norm1, NormInf atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/param_dict.html","id":null,"dir":"Reference","previous_headings":"","what":"Get all Parameters of a Problem as a Named List — param_dict","title":"Get all Parameters of a Problem as a Named List — param_dict","text":"Mirrors CVXPY's Problem.param_dict property (cvxpy/problems/problem.py:260-264): returns named list keyed parameter's name, value Parameter object .","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/param_dict.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get all Parameters of a Problem as a Named List — param_dict","text":"","code":"param_dict(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/param_dict.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get all Parameters of a Problem as a Named List — param_dict","text":"x Problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/param_dict.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get all Parameters of a Problem as a Named List — param_dict","text":"Named list Parameter objects, keyed name.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/parameters.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Parameters in an Expression — parameters","title":"Get the Parameters in an Expression — parameters","text":"Get Parameters Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/parameters.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Parameters in an Expression — parameters","text":"","code":"parameters(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/parameters.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Parameters in an Expression — parameters","text":"x expression problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/parameters.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Parameters in an Expression — parameters","text":"List Parameter objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_optimize.html","id":null,"dir":"Reference","previous_headings":"","what":"Partial optimization transform — partial_optimize","title":"Partial optimization transform — partial_optimize","text":"Builds Expression representing optimal value prob function variables choose optimise . Useful two-stage / hierarchical optimisation, custom atom definitions, embedding sub-problems inside larger problems.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_optimize.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Partial optimization transform — partial_optimize","text":"","code":"partial_optimize( prob, opt_vars = NULL, dont_opt_vars = NULL, solver = NULL, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_optimize.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Partial optimization transform — partial_optimize","text":"prob Problem partially optimise. opt_vars Optional list Variables optimise . dont_opt_vars Optional list Variables keep free arguments resulting expression. solver Optional solver name (passed psolve() PartialProblem evaluated via value() grad()). ... Additional named arguments forwarded psolve() value() / grad() called.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_optimize.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Partial optimization transform — partial_optimize","text":"PartialProblem expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_optimize.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Partial optimization transform — partial_optimize","text":"Exactly one opt_vars dont_opt_vars may NULL; missing list taken complement (relative full list variables prob). supplied, must together cover every variable prob. returned PartialProblem Expression scalar shape: convex prob DCP Minimize objective concave DCP Maximize. Embed like expression larger Problem; larger problem's canonicalizer pull inner objective constraints outer cone form single solve handles layers.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_optimize.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Partial optimization transform — partial_optimize","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(3) t <- Variable(3) abs_x <- partial_optimize( Problem(Minimize(sum_entries(t)), list(-t <= x, x <= t)), opt_vars = list(t) ) ## abs_x is now an expression of x alone, equivalent to sum(abs(x)). } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_trace.html","id":null,"dir":"Reference","previous_headings":"","what":"Partial trace of a tensor product expression — partial_trace","title":"Partial trace of a tensor product expression — partial_trace","text":"Assumes expr 2D square matrix representing Kronecker product length(dims) subsystems. Returns partial trace subsystem index axis (1-indexed).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_trace.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Partial trace of a tensor product expression — partial_trace","text":"","code":"partial_trace(expr, dims, axis = 1L)"},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_trace.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Partial trace of a tensor product expression — partial_trace","text":"expr Expression (2D square matrix) dims Integer vector subsystem dimensions axis Integer (1-indexed) subsystem trace ","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_trace.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Partial trace of a tensor product expression — partial_trace","text":"Expression representing partial trace","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_transpose.html","id":null,"dir":"Reference","previous_headings":"","what":"Partial transpose of a tensor product expression — partial_transpose","title":"Partial transpose of a tensor product expression — partial_transpose","text":"Assumes expr 2D square matrix representing Kronecker product length(dims) subsystems. Returns partial transpose transpose applied subsystem index axis (1-indexed).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_transpose.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Partial transpose of a tensor product expression — partial_transpose","text":"","code":"partial_transpose(expr, dims, axis = 1L)"},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_transpose.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Partial transpose of a tensor product expression — partial_transpose","text":"expr Expression (2D square matrix) dims Integer vector subsystem dimensions axis Integer (1-indexed) subsystem transpose","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_transpose.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Partial transpose of a tensor product expression — partial_transpose","text":"Expression representing partial transpose","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/perspective.html","id":null,"dir":"Reference","previous_headings":"","what":"Perspective Transform — perspective","title":"Perspective Transform — perspective","text":"Creates perspective transform scalar convex concave expression. Given scalar expression f(x) nonneg variable s, perspective s * f(x/s).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/perspective.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Perspective Transform — perspective","text":"","code":"perspective(f, s, f_recession = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/perspective.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Perspective Transform — perspective","text":"f scalar convex concave Expression. s nonneg Variable (scalar). f_recession Optional recession function handling s = 0.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/perspective.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Perspective Transform — perspective","text":"Perspective expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/pf_eigenvalue.html","id":null,"dir":"Reference","previous_headings":"","what":"Perron-Frobenius eigenvalue of a positive matrix — pf_eigenvalue","title":"Perron-Frobenius eigenvalue of a positive matrix — pf_eigenvalue","text":"Log-log convex atom DGP. Solve psolve(problem, gp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/pf_eigenvalue.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Perron-Frobenius eigenvalue of a positive matrix — pf_eigenvalue","text":"","code":"pf_eigenvalue(X)"},{"path":"https://www.cvxgrp.org/CVXR/reference/pf_eigenvalue.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Perron-Frobenius eigenvalue of a positive matrix — pf_eigenvalue","text":"X Expression (positive square matrix)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/pf_eigenvalue.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Perron-Frobenius eigenvalue of a positive matrix — pf_eigenvalue","text":"PfEigenvalue atom (scalar)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/pf_eigenvalue.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Perron-Frobenius eigenvalue of a positive matrix — pf_eigenvalue","text":"","code":"X <- Variable(c(2, 2), pos = TRUE) prob <- Problem(Minimize(pf_eigenvalue(X)), list(X[1,1] >= 0.1, X[2,2] >= 0.1)) if (FALSE) psolve(prob, gp = TRUE) # \\dontrun{}"},{"path":"https://www.cvxgrp.org/CVXR/reference/pos.html","id":null,"dir":"Reference","previous_headings":"","what":"Positive part: max(x, 0) — pos","title":"Positive part: max(x, 0) — pos","text":"Positive part: max(x, 0)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/pos.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Positive part: max(x, 0) — pos","text":"","code":"pos(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/pos.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Positive part: max(x, 0) — pos","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/pos.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Positive part: max(x, 0) — pos","text":"Maximum atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/power.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Power atom — power","title":"Create a Power atom — power","text":"Create Power atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/power.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Power atom — power","text":"","code":"power(x, p, max_denom = 1024L, approx = TRUE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/power.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Power atom — power","text":"x Expression (base), positive constant p variable (identity b^x = exp(x * log(b)) used). p Numeric exponent, Parameter, Expression. p non-constant Expression x positive constant, dispatches exp(p * log(x)). max_denom Maximum denominator rational approximation approx TRUE (default), use SOC approximation. FALSE, use exact power cone.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/power.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Power atom — power","text":"Power PowerApprox atom, exp expression const-base case.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/power.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Create a Power atom — power","text":"sqrt(x) CVXR expression dispatches Power(x, 0.5) via Math group generic. See math_atoms standard R function dispatch.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Problem Data for a Solver — problem_data","title":"Get Problem Data for a Solver — problem_data","text":"Returns problem data passed specific solver, along reduction chain inverse data solution retrieval.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Problem Data for a Solver — problem_data","text":"","code":"problem_data( x, solver = NULL, gp = FALSE, enforce_dpp = FALSE, ignore_dpp = FALSE, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Problem Data for a Solver — problem_data","text":"x Problem object. solver Character string naming solver, NULL automatic selection. gp Logical; TRUE, parse problem geometric program. enforce_dpp Logical; TRUE, raise error parametrized problem DPP instead compiling non-DPP. ignore_dpp Logical; TRUE, treat DPP problem non-DPP (skip DPP fast path). ... Additional solver options.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Problem Data for a Solver — problem_data","text":"list components data, chain, inverse_data.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_solution.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Raw Solution Object (deprecated) — problem_solution","text":"","code":"problem_solution(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_solution.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Raw Solution Object (deprecated) — problem_solution","text":"x Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_solution.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Raw Solution Object (deprecated) — problem_solution","text":"Solution object, NULL problem solved.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_solution.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get the Raw Solution Object (deprecated) — problem_solution","text":"Use solution instead.","code":""},{"path":[]},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_status.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Solution Status of a Problem (deprecated) — problem_status","text":"","code":"problem_status(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_status.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Solution Status of a Problem (deprecated) — problem_status","text":"x Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_status.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Solution Status of a Problem (deprecated) — problem_status","text":"Character string, NULL problem solved.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_status.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get the Solution Status of a Problem (deprecated) — problem_status","text":"Use status instead.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_unpack_results.html","id":null,"dir":"Reference","previous_headings":"","what":"Unpack Solver Results into a Problem — problem_unpack_results","title":"Unpack Solver Results into a Problem — problem_unpack_results","text":"Inverts reduction chain unpacks raw solver solution original problem's variables constraints. step 3 decomposed solve pipeline: problem_data() – compile problem solve_via_data(chain, data) – call solver problem_unpack_results() – invert unpack","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_unpack_results.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Unpack Solver Results into a Problem — problem_unpack_results","text":"","code":"problem_unpack_results(problem, solution, chain, inverse_data)"},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_unpack_results.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Unpack Solver Results into a Problem — problem_unpack_results","text":"problem Problem object. solution raw solver result solve_via_data(). chain SolvingChain problem_data(). inverse_data inverse data list problem_data().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_unpack_results.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Unpack Solver Results into a Problem — problem_unpack_results","text":"problem object (invisibly), solution unpacked.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_unpack_results.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Unpack Solver Results into a Problem — problem_unpack_results","text":"calling function, variable values available via value() constraint duals via dual_value().","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/prod_entries.html","id":null,"dir":"Reference","previous_headings":"","what":"Product of entries along an axis — prod_entries","title":"Product of entries along an axis — prod_entries","text":"Used DGP (geometric programming) context. Solve psolve(problem, gp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/prod_entries.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Product of entries along an axis — prod_entries","text":"","code":"prod_entries(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/prod_entries.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Product of entries along an axis — prod_entries","text":"x Expression axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Whether keep reduced dimensions","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/prod_entries.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Product of entries along an axis — prod_entries","text":"Prod atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/prod_entries.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Product of entries along an axis — prod_entries","text":"","code":"x <- Variable(3, pos = TRUE) prob <- Problem(Minimize(prod_entries(x)), list(x >= 2)) if (FALSE) psolve(prob, gp = TRUE) # \\dontrun{}"},{"path":"https://www.cvxgrp.org/CVXR/reference/project.html","id":null,"dir":"Reference","previous_headings":"","what":"Project a Value onto the Domain of a Leaf — project","title":"Project a Value onto the Domain of a Leaf — project","text":"Project Value onto Domain Leaf","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/project.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Project a Value onto the Domain of a Leaf — project","text":"","code":"project(x, val, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/project.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Project a Value onto the Domain of a Leaf — project","text":"x leaf expression object. val value project. ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/project.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Project a Value onto the Domain of a Leaf — project","text":"projected value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/psolve.html","id":null,"dir":"Reference","previous_headings":"","what":"Solve a Convex Optimization Problem — psolve","title":"Solve a Convex Optimization Problem — psolve","text":"Solves problem returns optimal objective value. solving, variable values can retrieved value, constraint dual values dual_value, solver information solver_stats.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/psolve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Solve a Convex Optimization Problem — psolve","text":"","code":"psolve( problem, solver = NULL, gp = FALSE, qcp = FALSE, verbose = FALSE, warm_start = FALSE, requires_grad = FALSE, nlp = FALSE, enforce_dpp = FALSE, ignore_dpp = FALSE, solver_path = NULL, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/psolve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Solve a Convex Optimization Problem — psolve","text":"problem Problem object. solver Character string naming solver use (e.g., \"CLARABEL\", \"SCS\", \"OSQP\", \"HIGHS\"), NULL automatic selection. gp Logical; TRUE, solve geometric program (DGP). qcp Logical; TRUE, solve quasiconvex program (DQCP) via bisection. needed non-DCP DQCP problems. verbose Logical; TRUE, print solver output. warm_start Logical; TRUE, use current variable values warm-start point solver. requires_grad Logical; TRUE, route solve DIFFCP wrapper backward() / derivative() can recover gradients. nlp Logical; TRUE, solve problem disciplined nonlinear program (DNLP) using NLP reduction chain NLP solver (e.g. \"UNO\"). problem must satisfy is_dnlp(). enforce_dpp Logical; TRUE, raise error parametrized problem DPP instead compiling non-DPP. ignore_dpp Logical; TRUE, treat DPP problem non-DPP (skip DPP fast path). solver_path Optional fallback chain. character vector solver names list whose entries either character names length-2 list(name, opts) pairs. solver tried sequence; first succeeds returns result. every solver fails, SolverError-classed condition raised per-solver error messages. combined solver. Mirrors CVXPY's solver_path argument. ... Solver options passed solver_opts(). Includes chain-construction options (use_quad_obj), standard tolerances (feastol, reltol, abstol, num_iter), solver-specific parameters (e.g., eps_abs, scip_params). See solver_opts details. DQCP problems (qcp = TRUE), additional arguments include low, high, eps, max_iters, max_iters_interval_search.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/psolve.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Solve a Convex Optimization Problem — psolve","text":"optimal objective value (numeric scalar), Inf / -Inf infeasible / unbounded problems.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/psolve.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Solve a Convex Optimization Problem — psolve","text":"","code":"x <- Variable() prob <- Problem(Minimize(x), list(x >= 5)) result <- psolve(prob, solver = \"CLARABEL\")"},{"path":"https://www.cvxgrp.org/CVXR/reference/ptp.html","id":null,"dir":"Reference","previous_headings":"","what":"Peak-to-peak (range): max(x) - min(x) — ptp","title":"Peak-to-peak (range): max(x) - min(x) — ptp","text":"Computes range values along axis: max(x) - min(x). result always nonnegative.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ptp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Peak-to-peak (range): max(x) - min(x) — ptp","text":"","code":"ptp(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/ptp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Peak-to-peak (range): max(x) - min(x) — ptp","text":"x Expression numeric value. axis NULL (), 0 (columns), 1 (rows). keepdims Logical; keep reduced dimension?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ptp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Peak-to-peak (range): max(x) - min(x) — ptp","text":"Expression representing max(x) - min(x).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_form.html","id":null,"dir":"Reference","previous_headings":"","what":"Quadratic form x^T P x — quad_form","title":"Quadratic form x^T P x — quad_form","text":"x constant, returns t(Conj(x)) %*% P %*% x (affine P). P constant, returns QuadForm atom (quadratic x). least one x P must constant.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_form.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Quadratic form x^T P x — quad_form","text":"","code":"quad_form(x, P, assume_PSD = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_form.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Quadratic form x^T P x — quad_form","text":"x Expression (vector) P Expression (square matrix, symmetric/Hermitian) assume_PSD TRUE, assume P PSD without checking (P constant).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_form.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Quadratic form x^T P x — quad_form","text":"QuadForm atom affine Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_form_dpp_scope_active.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a quad_form DPP Scope is Active — quad_form_dpp_scope_active","title":"Check if a quad_form DPP Scope is Active — quad_form_dpp_scope_active","text":"Check quad_form DPP Scope Active","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_form_dpp_scope_active.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a quad_form DPP Scope is Active — quad_form_dpp_scope_active","text":"","code":"quad_form_dpp_scope_active()"},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_form_dpp_scope_active.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a quad_form DPP Scope is Active — quad_form_dpp_scope_active","text":"Logical; TRUE with_quad_form_dpp_scope block active.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_over_lin.html","id":null,"dir":"Reference","previous_headings":"","what":"Sum of squares divided by a scalar — quad_over_lin","title":"Sum of squares divided by a scalar — quad_over_lin","text":"Sum squares divided scalar","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_over_lin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sum of squares divided by a scalar — quad_over_lin","text":"","code":"quad_over_lin(x, y, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_over_lin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sum of squares divided by a scalar — quad_over_lin","text":"x Expression y Expression (scalar, positive) axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical: keep reduced dimensions?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_over_lin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sum of squares divided by a scalar — quad_over_lin","text":"QuadOverLin atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/real_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract Real Part of Expression — real_expr","title":"Extract Real Part of Expression — real_expr","text":"Returns real part complex expression. R's native Re() dispatches CVXR expressions via Complex S3 group handler.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/real_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract Real Part of Expression — real_expr","text":"","code":"real_expr(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/real_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract Real Part of Expression — real_expr","text":"expr CVXR Expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/real_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract Real Part of Expression — real_expr","text":"Real_ atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-chain-rule.html","id":null,"dir":"Reference","previous_headings":"","what":"Reduction chain-rule hooks (dict-in / dict-out) — reduction-chain-rule","title":"Reduction chain-rule hooks (dict-in / dict-out) — reduction-chain-rule","text":"Walk solving chain Problem$backward() / Problem$derivative(). hook takes returns named list keyed .character(leaf@id) whose values shaped arrays (leaf's dim). base Reduction methods identity pass-throughs.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-chain-rule.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reduction chain-rule hooks (dict-in / dict-out) — reduction-chain-rule","text":"","code":"var_backward(x, del_vars) var_forward(x, dvars) param_backward(x, dparams) param_forward(x, param_deltas)"},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-chain-rule.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Reduction chain-rule hooks (dict-in / dict-out) — reduction-chain-rule","text":"x Reduction. del_vars Named list var-id -> gradient array (outer representation). dvars Named list var-id -> delta array (inner representation). dparams Named list param-id -> gradient array (inner representation). param_deltas Named list param-id -> delta array (outer representation).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-chain-rule.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reduction chain-rule hooks (dict-in / dict-out) — reduction-chain-rule","text":"var_backward: map inner (reduced) representation. var_forward: map outer (original) representation. param_backward: map outer (original) representation. param_forward: map inner (transformed) representation.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-id-map.html","id":null,"dir":"Reference","previous_headings":"","what":"Reduction leaf-id maps — reduction-id-map","title":"Reduction leaf-id maps — reduction-id-map","text":"Reduction leaf-id maps","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-id-map.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reduction leaf-id maps — reduction-id-map","text":"","code":"var_id_map(x) param_id_map(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-id-map.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Reduction leaf-id maps — reduction-id-map","text":"x Reduction.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-id-map.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reduction leaf-id maps — reduction-id-map","text":"named list orig-id -> character vector reduced-id(s); empty default (reduction replaces leaves).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_accepts.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a Reduction Accepts a Problem — reduction_accepts","title":"Check if a Reduction Accepts a Problem — reduction_accepts","text":"Check Reduction Accepts Problem","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_accepts.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a Reduction Accepts a Problem — reduction_accepts","text":"","code":"reduction_accepts(x, problem, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_accepts.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a Reduction Accepts a Problem — reduction_accepts","text":"x Reduction object. problem Problem object. ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_accepts.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a Reduction Accepts a Problem — reduction_accepts","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_apply.html","id":null,"dir":"Reference","previous_headings":"","what":"Apply a Reduction to a Problem — reduction_apply","title":"Apply a Reduction to a Problem — reduction_apply","text":"Apply Reduction Problem","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_apply.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Apply a Reduction to a Problem — reduction_apply","text":"","code":"reduction_apply(x, problem, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_apply.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Apply a Reduction to a Problem — reduction_apply","text":"x Reduction object. problem Problem object. ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_apply.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Apply a Reduction to a Problem — reduction_apply","text":"List (new_problem, inverse_data).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_invert.html","id":null,"dir":"Reference","previous_headings":"","what":"Invert a Solution through a Reduction — reduction_invert","title":"Invert a Solution through a Reduction — reduction_invert","text":"Invert Solution Reduction","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_invert.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Invert a Solution through a Reduction — reduction_invert","text":"","code":"reduction_invert(x, solution, inverse_data, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_invert.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Invert a Solution through a Reduction — reduction_invert","text":"x Reduction object. solution solution object. inverse_data Inverse data apply. ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_invert.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Invert a Solution through a Reduction — reduction_invert","text":"solution original problem.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/rel_entr.html","id":null,"dir":"Reference","previous_headings":"","what":"Relative Entropy: x*log(x/y) — rel_entr","title":"Relative Entropy: x*log(x/y) — rel_entr","text":"Relative Entropy: x*log(x/y)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/rel_entr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Relative Entropy: x*log(x/y) — rel_entr","text":"","code":"rel_entr(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/rel_entr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Relative Entropy: x*log(x/y) — rel_entr","text":"x Expression y Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/rel_entr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Relative Entropy: x*log(x/y) — rel_entr","text":"RelEntr atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reshape_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Reshape an expression to a new shape — reshape_expr","title":"Reshape an expression to a new shape — reshape_expr","text":"Reshape expression new shape","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reshape_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reshape an expression to a new shape — reshape_expr","text":"","code":"reshape_expr(x, dim, order = \"F\")"},{"path":"https://www.cvxgrp.org/CVXR/reference/reshape_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Reshape an expression to a new shape — reshape_expr","text":"x Expression numeric value. dim Integer vector length 2: target shape c(nrow, ncol). single integer treated c(dim, 1). Use -1 infer dimension. order Character: \"F\" (column-major, default) \"C\" (row-major).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reshape_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reshape an expression to a new shape — reshape_expr","text":"Reshape expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/residual.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Residual of a Constraint — residual","title":"Get the Residual of a Constraint — residual","text":"Returns residual constraint, measuring much constraint violated satisfied.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/residual.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Residual of a Constraint — residual","text":"","code":"residual(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/residual.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Residual of a Constraint — residual","text":"x constraint object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/residual.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Residual of a Constraint — residual","text":"Numeric array, NULL expression value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/resolvent.html","id":null,"dir":"Reference","previous_headings":"","what":"Resolvent inverse(sI - X) — resolvent","title":"Resolvent inverse(sI - X) — resolvent","text":"Equivalent (1/s) * eye_minus_inv(X / s).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/resolvent.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Resolvent inverse(sI - X) — resolvent","text":"","code":"resolvent(X, s)"},{"path":"https://www.cvxgrp.org/CVXR/reference/resolvent.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Resolvent inverse(sI - X) — resolvent","text":"X Expression (positive square matrix) s positive scalar","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/resolvent.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Resolvent inverse(sI - X) — resolvent","text":"expression resolvent","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sample_bounds.html","id":null,"dir":"Reference","previous_headings":"","what":"Sampling Bounds for NLP Random Restarts — sample_bounds","title":"Sampling Bounds for NLP Random Restarts — sample_bounds","text":"Get set Variable's sample_bounds – (low, high) region used draw random initial points best_of NLP solves (psolve(prob, nlp = TRUE, best_of = n)). set, overrides variable's value random initialization; NULL (default) finite variable bounds used instead. Supply pair c(low, high) (scalars broadcast variable shape) list(low, high) per-entry vectors; set NULL clear.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sample_bounds.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sampling Bounds for NLP Random Restarts — sample_bounds","text":"","code":"sample_bounds(x, ...) sample_bounds(x) <- value"},{"path":"https://www.cvxgrp.org/CVXR/reference/sample_bounds.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sampling Bounds for NLP Random Restarts — sample_bounds","text":"x Variable. ... used. value (low, high) pair, NULL clear.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sample_bounds.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sampling Bounds for NLP Random Restarts — sample_bounds","text":"sample_bounds(x) returns stored list(low, high) NULL; setter returns modified variable.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/save_dual_value.html","id":null,"dir":"Reference","previous_headings":"","what":"Save Dual Variable Values from Solver Output — save_dual_value","title":"Save Dual Variable Values from Solver Output — save_dual_value","text":"Save Dual Variable Values Solver Output","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/save_dual_value.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Save Dual Variable Values from Solver Output — save_dual_value","text":"","code":"save_dual_value(x, val)"},{"path":"https://www.cvxgrp.org/CVXR/reference/save_dual_value.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Save Dual Variable Values from Solver Output — save_dual_value","text":"x constraint object. val dual value solver.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/save_dual_value.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Save Dual Variable Values from Solver Output — save_dual_value","text":"Invisible constraint (side effect: sets dual variable values).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalar_product.html","id":null,"dir":"Reference","previous_headings":"","what":"Scalar product (alias for vdot) — scalar_product","title":"Scalar product (alias for vdot) — scalar_product","text":"Scalar product (alias vdot)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalar_product.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Scalar product (alias for vdot) — scalar_product","text":"","code":"scalar_product(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/scalar_product.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Scalar product (alias for vdot) — scalar_product","text":"x Expression numeric value. y Expression numeric value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalar_product.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Scalar product (alias for vdot) — scalar_product","text":"scalar Expression representing sum(x * y).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalarize.html","id":null,"dir":"Reference","previous_headings":"","what":"Scalarize multiple objectives into a single objective — scalarize","title":"Scalarize multiple objectives into a single objective — scalarize","text":"Transforms combining several Minimize/Maximize objectives one objective multi-objective optimization. Mirrors CVXPY's cvxpy.transforms.scalarize submodule; access members $:","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalarize.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Scalarize multiple objectives into a single objective — scalarize","text":"","code":"scalarize"},{"path":"https://www.cvxgrp.org/CVXR/reference/scalarize.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Scalarize multiple objectives into a single objective — scalarize","text":"named list four functions.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalarize.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Scalarize multiple objectives into a single objective — scalarize","text":"scalarize$weighted_sum(objectives, weights) – weighted sum objectives. scalarize$targets_and_priorities(objectives, priorities, targets, limits = NULL, off_target = 1e-5) – penalize objective within [target, limit] range; negative priority flips objective sense. scalarize$max(objectives, weights) – minimize largest weighted objective term. scalarize$log_sum_exp(objectives, weights, gamma = 1.0) – smooth maximum; gamma -> 0 approaches weighted_sum, gamma -> Inf approaches max.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalarize.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Scalarize multiple objectives into a single objective — scalarize","text":"","code":"x <- Variable() objs <- list(Minimize(square(x)), Minimize(square(x - 1))) obj <- scalarize$weighted_sum(objs, c(1, 1)) if (FALSE) psolve(Problem(obj)) # \\dontrun{}"},{"path":"https://www.cvxgrp.org/CVXR/reference/scalene.html","id":null,"dir":"Reference","previous_headings":"","what":"Scalene penalty: alpha * pos(x) + beta * neg(x) — scalene","title":"Scalene penalty: alpha * pos(x) + beta * neg(x) — scalene","text":"Scalene penalty: alpha * pos(x) + beta * neg(x)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalene.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Scalene penalty: alpha * pos(x) + beta * neg(x) — scalene","text":"","code":"scalene(x, alpha, beta)"},{"path":"https://www.cvxgrp.org/CVXR/reference/scalene.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Scalene penalty: alpha * pos(x) + beta * neg(x) — scalene","text":"x Expression alpha Coefficient positive part beta Coefficient negative part","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalene.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Scalene penalty: alpha * pos(x) + beta * neg(x) — scalene","text":"Expression representing scalene penalty","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/set_label.html","id":null,"dir":"Reference","previous_headings":"","what":"Attach a label to an expression — set_label","title":"Attach a label to an expression — set_label","text":"CVXPY-parity setter returns first argument calls can chained (e.g. sum_squares(x) |> set_label(\"cost\")). See format_labeled() pretty-printer consumes labels.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/set_label.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Attach a label to an expression — set_label","text":"","code":"set_label(x, value)"},{"path":"https://www.cvxgrp.org/CVXR/reference/set_label.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Attach a label to an expression — set_label","text":"x Expression object. value label (character; coerced via .character). Pass NULL clear existing label.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/set_label.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Attach a label to an expression — set_label","text":"x label updated.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/shape_from_args.html","id":null,"dir":"Reference","previous_headings":"","what":"Infer Shape from Arguments — shape_from_args","title":"Infer Shape from Arguments — shape_from_args","text":"Infer Shape Arguments","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/shape_from_args.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Infer Shape from Arguments — shape_from_args","text":"","code":"shape_from_args(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/shape_from_args.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Infer Shape from Arguments — shape_from_args","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/shape_from_args.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Infer Shape from Arguments — shape_from_args","text":"Integer vector shape dimensions.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sigma_max.html","id":null,"dir":"Reference","previous_headings":"","what":"Maximum singular value — sigma_max","title":"Maximum singular value — sigma_max","text":"Maximum singular value","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sigma_max.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Maximum singular value — sigma_max","text":"","code":"sigma_max(A)"},{"path":"https://www.cvxgrp.org/CVXR/reference/sigma_max.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Maximum singular value — sigma_max","text":"matrix expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sigma_max.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Maximum singular value — sigma_max","text":"expression representing maximum singular value ","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sign_from_args.html","id":null,"dir":"Reference","previous_headings":"","what":"Infer Sign from Arguments — sign_from_args","title":"Infer Sign from Arguments — sign_from_args","text":"Infer Sign Arguments","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sign_from_args.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Infer Sign from Arguments — sign_from_args","text":"","code":"sign_from_args(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/sign_from_args.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Infer Sign from Arguments — sign_from_args","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sign_from_args.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Infer Sign from Arguments — sign_from_args","text":"Character string: sign constant.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/size.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Expression Size — size","title":"Get Expression Size — size","text":"Returns total number elements expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/size.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Expression Size — size","text":"","code":"size(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/size.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Expression Size — size","text":"x CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/size.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Expression Size — size","text":"integer (product shape dimensions).","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/size_metrics.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Size Metrics for a Problem — size_metrics","title":"Get Size Metrics for a Problem — size_metrics","text":"Mirrors CVXPY's Problem.size_metrics property (cvxpy/problems/problem.py:486-490, class lines 1690-1752): returns SizeMetrics object summarising problem's scale.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/size_metrics.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Size Metrics for a Problem — size_metrics","text":"","code":"size_metrics(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/size_metrics.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Size Metrics for a Problem — size_metrics","text":"x Problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/size_metrics.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Size Metrics for a Problem — size_metrics","text":"SizeMetrics object seven numeric fields.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/smith_annotation.html","id":null,"dir":"Reference","previous_headings":"","what":"Smith Form Annotation for an Expression Node — smith_annotation","title":"Smith Form Annotation for an Expression Node — smith_annotation","text":"Returns LaTeX-math annotation data visualizing canonicalization pipeline. atom class can override provide custom LaTeX name, definition, conic form. default stub auto-generates class metadata.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/smith_annotation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Smith Form Annotation for an Expression Node — smith_annotation","text":"","code":"smith_annotation(expr, aux_var = \"t\", child_vars = character(0), ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/smith_annotation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Smith Form Annotation for an Expression Node — smith_annotation","text":"expr Expression, Atom, Leaf. aux_var Character: auxiliary variable name assigned node (e.g., \"t_3\"). child_vars Character vector: auxiliary variable names children. ... Reserved future use.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/smith_annotation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Smith Form Annotation for an Expression Node — smith_annotation","text":"list components: latex_name, latex_definition, conic, doc_topic, developer.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solution.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Raw Solution Object — solution","title":"Get the Raw Solution Object — solution","text":"Returns raw Solution object recent solve, containing primal dual variable values, status, solver attributes.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solution.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Raw Solution Object — solution","text":"","code":"solution(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/solution.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Raw Solution Object — solution","text":"x Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solution.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Raw Solution Object — solution","text":"Solution object, NULL problem solved.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solve_via_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Solve via Raw Data — solve_via_data","title":"Solve via Raw Data — solve_via_data","text":"Calls solver pre-compiled problem data (step 2 decomposed solve pipeline). Dispatches x: x SolvingChain, delegates terminal solver proper cache management.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solve_via_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Solve via Raw Data — solve_via_data","text":"","code":"solve_via_data( x, data, warm_start = FALSE, verbose = FALSE, solver_opts = list(), ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/solve_via_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Solve via Raw Data — solve_via_data","text":"x SolvingChain (preferred) Solver object. data Named list solver data problem_data(). warm_start Logical; use warm-start supported. verbose Logical; print solver output. solver_opts Named list solver-specific options. ... Additional arguments forwarded method (e.g. problem SolvingChain method, solver_cache Solver method).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solve_via_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Solve via Raw Data — solve_via_data","text":"Solver-specific result (named list).","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/solver-constants.html","id":null,"dir":"Reference","previous_headings":"","what":"Solver Name Constants — solver-constants","title":"Solver Name Constants — solver-constants","text":"Character string constants identifying available solvers.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver-constants.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Solver Name Constants — solver-constants","text":"","code":"SCS_SOLVER OSQP_SOLVER CLARABEL_SOLVER DIFFCP_SOLVER HIGHS_SOLVER MOSEK_SOLVER GUROBI_SOLVER GLPK_SOLVER GLPK_MI_SOLVER ECOS_SOLVER ECOS_BB_SOLVER CPLEX_SOLVER CVXOPT_SOLVER PIQP_SOLVER SCIP_SOLVER XPRESS_SOLVER IPOPT_SOLVER KNITRO_SOLVER UNO_SOLVER COPT_SOLVER"},{"path":"https://www.cvxgrp.org/CVXR/reference/solver-constants.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Solver Name Constants — solver-constants","text":"character string.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_default_param.html","id":null,"dir":"Reference","previous_headings":"","what":"Standard Solver Parameter Mappings — solver_default_param","title":"Standard Solver Parameter Mappings — solver_default_param","text":"Returns named list mapping standard CVXR parameter names (reltol, abstol, feastol, num_iter) solver-specific parameter names default values. Used internally psolve translate standard parameters solver-native names.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_default_param.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Standard Solver Parameter Mappings — solver_default_param","text":"","code":"solver_default_param()"},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_default_param.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Standard Solver Parameter Mappings — solver_default_param","text":"named list keyed solver name (e.g. \"CLARABEL\", \"OSQP\"). element list standard parameter mappings, mapping name (solver-native parameter name) value (default value).","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_name.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Solver Name — solver_name","title":"Get Solver Name — solver_name","text":"Get Solver Name","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_name.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Solver Name — solver_name","text":"","code":"solver_name(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_name.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Solver Name — solver_name","text":"x Solver object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_name.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Solver Name — solver_name","text":"Character string solver name.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_opts.html","id":null,"dir":"Reference","previous_headings":"","what":"Create Solver Options — solver_opts","title":"Create Solver Options — solver_opts","text":"Constructs structured list solver options use psolve problem_data. Known parameters sorted named slots; solver-specific parameters collected $solver_specific.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_opts.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create Solver Options — solver_opts","text":"","code":"solver_opts( use_quad_obj = TRUE, feastol = NULL, reltol = NULL, abstol = NULL, num_iter = NULL, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_opts.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create Solver Options — solver_opts","text":"use_quad_obj Logical. TRUE (default), quadratic objectives use QP matrix path. FALSE, forces conic decomposition via quad_form_canon. feastol Feasibility tolerance (solver-agnostic). Translated solver-native name internal mapping. NULL uses solver default. reltol Relative tolerance. NULL uses solver default. abstol Absolute tolerance. NULL uses solver default. num_iter Maximum iterations. NULL uses solver default. ... Solver-specific parameters passed directly solver (e.g., eps_abs, scip_params, mosek_params).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_opts.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create Solver Options — solver_opts","text":"named list class \"solver_opts\".","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_opts.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create Solver Options — solver_opts","text":"","code":"solver_opts(feastol = 1e-6) #> $use_quad_obj #> [1] TRUE #> #> $feastol #> [1] 1e-06 #> #> $reltol #> NULL #> #> $abstol #> NULL #> #> $num_iter #> NULL #> #> $solver_specific #> list() #> #> attr(,\"class\") #> [1] \"solver_opts\" solver_opts(use_quad_obj = FALSE, eps_abs = 1e-7) #> $use_quad_obj #> [1] FALSE #> #> $feastol #> NULL #> #> $reltol #> NULL #> #> $abstol #> NULL #> #> $num_iter #> NULL #> #> $solver_specific #> $solver_specific$eps_abs #> [1] 1e-07 #> #> #> attr(,\"class\") #> [1] \"solver_opts\" solver_opts(scip_params = list(\"limits/time\" = 10)) #> $use_quad_obj #> [1] TRUE #> #> $feastol #> NULL #> #> $reltol #> NULL #> #> $abstol #> NULL #> #> $num_iter #> NULL #> #> $solver_specific #> $solver_specific$scip_params #> $solver_specific$scip_params$`limits/time` #> [1] 10 #> #> #> #> attr(,\"class\") #> [1] \"solver_opts\""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_stats.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Solver Statistics — solver_stats","title":"Get Solver Statistics — solver_stats","text":"Returns solver statistics recent solve, including solve time, setup time, iteration count.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_stats.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Solver Statistics — solver_stats","text":"","code":"solver_stats(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_stats.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Solver Statistics — solver_stats","text":"x Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_stats.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Solver Statistics — solver_stats","text":"SolverStats object, NULL problem solved.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/split_adjoint.html","id":null,"dir":"Reference","previous_headings":"","what":"Adjoint of split_solution — split_adjoint","title":"Adjoint of split_solution — split_adjoint","text":"Given named list mapping variable ids (shape-aligned) deltas, packs single length-x_length numeric vector var_id_to_col order. Mirrors ParamConeProg.split_adjoint cone_matrix_stuffing.py:304-318.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/split_adjoint.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Adjoint of split_solution — split_adjoint","text":"","code":"split_adjoint(param_prog, del_vars)"},{"path":"https://www.cvxgrp.org/CVXR/reference/split_adjoint.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Adjoint of split_solution — split_adjoint","text":"param_prog ParamConeProg. del_vars named list .character(var_id) -> array.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/split_adjoint.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Adjoint of split_solution — split_adjoint","text":"Numeric vector length x_length.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/split_solution.html","id":null,"dir":"Reference","previous_headings":"","what":"Split a primal solution into per-variable arrays — split_solution","title":"Split a primal solution into per-variable arrays — split_solution","text":"Mirrors ParamConeProg.split_solution cone_matrix_stuffing.py:282-302.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/split_solution.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Split a primal solution into per-variable arrays — split_solution","text":"","code":"split_solution(param_prog, sltn, active_vars = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/split_solution.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Split a primal solution into per-variable arrays — split_solution","text":"param_prog ParamConeProg. sltn Numeric vector length x_length – primal x conic forward solve. active_vars Optional character vector variable ids restrict output . Default: variables.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/split_solution.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Split a primal solution into per-variable arrays — split_solution","text":"named list mapping .character(var_id) numeric array variable's shape.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/square.html","id":null,"dir":"Reference","previous_headings":"","what":"Square of an expression: x^2 — square","title":"Square of an expression: x^2 — square","text":"Square expression: x^2","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/square.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Square of an expression: x^2 — square","text":"","code":"square(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/square.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Square of an expression: x^2 — square","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/square.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Square of an expression: x^2 — square","text":"Power atom p=2","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/status-constants.html","id":null,"dir":"Reference","previous_headings":"","what":"Solution Status Constants — status-constants","title":"Solution Status Constants — status-constants","text":"Character string constants representing possible solution statuses returned problem_status.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/status-constants.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Solution Status Constants — status-constants","text":"","code":"OPTIMAL INFEASIBLE UNBOUNDED SOLVER_ERROR OPTIMAL_INACCURATE INFEASIBLE_INACCURATE UNBOUNDED_INACCURATE USER_LIMIT INFEASIBLE_OR_UNBOUNDED"},{"path":"https://www.cvxgrp.org/CVXR/reference/status-constants.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Solution Status Constants — status-constants","text":"character string.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/status.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Solution Status of a Problem — status","title":"Get the Solution Status of a Problem — status","text":"Returns status string recent solve, \"optimal\", \"infeasible\", \"unbounded\".","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/status.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Solution Status of a Problem — status","text":"","code":"status(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/status.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Solution Status of a Problem — status","text":"x Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/status.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Solution Status of a Problem — status","text":"Character string, NULL problem solved.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_entries.html","id":null,"dir":"Reference","previous_headings":"","what":"Sum the entries of an expression — sum_entries","title":"Sum the entries of an expression — sum_entries","text":"Sum entries expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_entries.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sum the entries of an expression — sum_entries","text":"","code":"sum_entries(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_entries.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sum the entries of an expression — sum_entries","text":"x Expression numeric value. axis NULL (sum ), 1 (row-wise, like apply(X,1,sum)), 2 (column-wise, like apply(X,2,sum)). keepdims Logical: TRUE, keep reduced dimension size 1.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_entries.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sum the entries of an expression — sum_entries","text":"SumEntries expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_largest.html","id":null,"dir":"Reference","previous_headings":"","what":"Sum of k largest entries — sum_largest","title":"Sum of k largest entries — sum_largest","text":"Sum k largest entries","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_largest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sum of k largest entries — sum_largest","text":"","code":"sum_largest(x, k, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_largest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sum of k largest entries — sum_largest","text":"x Expression k Number largest entries sum axis NULL (entries), 1 (row-wise), 2 (column-wise) keepdims Logical; keep reduced dimension size 1","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_largest.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sum of k largest entries — sum_largest","text":"SumLargest atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_signs.html","id":null,"dir":"Reference","previous_headings":"","what":"Sign of a sum of expressions — sum_signs","title":"Sign of a sum of expressions — sum_signs","text":"Determines whether sum list expressions nonnegative, nonpositive, unknown.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_signs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sign of a sum of expressions — sum_signs","text":"","code":"sum_signs(exprs)"},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_signs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sign of a sum of expressions — sum_signs","text":"exprs List Expression objects","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_signs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sign of a sum of expressions — sum_signs","text":"Named logical vector c(is_nonneg, is_nonpos)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_smallest.html","id":null,"dir":"Reference","previous_headings":"","what":"Sum of k smallest entries — sum_smallest","title":"Sum of k smallest entries — sum_smallest","text":"Sum k smallest entries","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_smallest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sum of k smallest entries — sum_smallest","text":"","code":"sum_smallest(x, k, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_smallest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sum of k smallest entries — sum_smallest","text":"x Expression k Number smallest entries sum axis NULL (entries), 1 (row-wise), 2 (column-wise) keepdims Logical; keep reduced dimension size 1","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_smallest.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sum of k smallest entries — sum_smallest","text":"Expression equal -SumLargest(-x, k)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_squares.html","id":null,"dir":"Reference","previous_headings":"","what":"Sum of squares (= quad_over_lin(x, 1)) — sum_squares","title":"Sum of squares (= quad_over_lin(x, 1)) — sum_squares","text":"Sum squares (= quad_over_lin(x, 1))","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_squares.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sum of squares (= quad_over_lin(x, 1)) — sum_squares","text":"","code":"sum_squares(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_squares.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sum of squares (= quad_over_lin(x, 1)) — sum_squares","text":"x Expression axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical: keep reduced dimensions?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_squares.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sum of squares (= quad_over_lin(x, 1)) — sum_squares","text":"QuadOverLin atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/supports_quad_obj.html","id":null,"dir":"Reference","previous_headings":"","what":"Does Solver Support Quadratic Objectives? — supports_quad_obj","title":"Does Solver Support Quadratic Objectives? — supports_quad_obj","text":"CVXPY v1.8.2: controls whether conic path keeps quadratic objective P matrix decomposes cones.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/supports_quad_obj.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Does Solver Support Quadratic Objectives? — supports_quad_obj","text":"","code":"supports_quad_obj(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/supports_quad_obj.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Does Solver Support Quadratic Objectives? — supports_quad_obj","text":"x solver object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/supports_quad_obj.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Does Solver Support Quadratic Objectives? — supports_quad_obj","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/to_latex.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert CVXR Object to LaTeX — to_latex","title":"Convert CVXR Object to LaTeX — to_latex","text":"Renders CVXR Problem, Expression, Constraint LaTeX string. Problem-level output uses optidef package (mini*/maxi* environments) atom macros dcp.sty (shipped system.file(\"sty\", \"dcp.sty\", package = \"CVXR\")).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/to_latex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert CVXR Object to LaTeX — to_latex","text":"","code":"to_latex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/to_latex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert CVXR Object to LaTeX — to_latex","text":"x Problem, Expression, Constraint, Objective. ... Reserved future options.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/to_latex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert CVXR Object to LaTeX — to_latex","text":"character string containing LaTeX code.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/to_latex.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert CVXR Object to LaTeX — to_latex","text":"","code":"x <- Variable(3, name = \"x\") cat(to_latex(p_norm(x, 2))) #> \\cvxnorm{x}_{2} # \\cvxnorm{x}_2"},{"path":"https://www.cvxgrp.org/CVXR/reference/total_variation.html","id":null,"dir":"Reference","previous_headings":"","what":"Total variation of a vector or matrix — total_variation","title":"Total variation of a vector or matrix — total_variation","text":"Computes total variation using L1 norm discrete gradients vectors L2 norm discrete gradients matrices.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/total_variation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Total variation of a vector or matrix — total_variation","text":"","code":"total_variation(value, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/total_variation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Total variation of a vector or matrix — total_variation","text":"value Expression numeric constant (vector matrix) ... Additional matrix expressions extending third dimension","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/total_variation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Total variation of a vector or matrix — total_variation","text":"Expression representing total variation","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/tr_inv.html","id":null,"dir":"Reference","previous_headings":"","what":"Trace of matrix inverse — tr_inv","title":"Trace of matrix inverse — tr_inv","text":"Computes \\(\\mathrm{tr}(X^{-1})\\) PSD matrix X.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/tr_inv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Trace of matrix inverse — tr_inv","text":"","code":"tr_inv(X)"},{"path":"https://www.cvxgrp.org/CVXR/reference/tr_inv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Trace of matrix inverse — tr_inv","text":"X square PSD matrix expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/tr_inv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Trace of matrix inverse — tr_inv","text":"expression representing \\(\\mathrm{tr}(X^{-1})\\)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/tree_copy.html","id":null,"dir":"Reference","previous_headings":"","what":"Deep Copy of an Expression Tree — tree_copy","title":"Deep Copy of an Expression Tree — tree_copy","text":"Deep Copy Expression Tree","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/tree_copy.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Deep Copy of an Expression Tree — tree_copy","text":"","code":"tree_copy(x, id_objects = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/tree_copy.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Deep Copy of an Expression Tree — tree_copy","text":"x canonicalizable object. id_objects Optional identity map deduplication.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/tree_copy.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Deep Copy of an Expression Tree — tree_copy","text":"deep copy entire expression tree.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/tv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Total variation (deprecated alias) — tv","text":"","code":"tv(...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/tv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Total variation (deprecated alias) — tv","text":"... Arguments passed total_variation().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/tv.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Total variation (deprecated alias) — tv","text":"Use total_variation() instead.","code":""},{"path":[]},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/unpack_results.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Unpack Results (backward-compatible alias) — unpack_results","text":"","code":"unpack_results(problem, solution, chain, inverse_data)"},{"path":"https://www.cvxgrp.org/CVXR/reference/unpack_results.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Unpack Results (backward-compatible alias) — unpack_results","text":"problem Problem object. solution raw solver result solve_via_data(). chain SolvingChain problem_data(). inverse_data inverse data list problem_data().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/unpack_results.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Unpack Results (backward-compatible alias) — unpack_results","text":"problem object (invisibly), solution unpacked.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/unpack_results.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Unpack Results (backward-compatible alias) — unpack_results","text":"Use problem_unpack_results() instead. alias exists backward compatibility older CVXR examples.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/update_parameters.html","id":null,"dir":"Reference","previous_headings":"","what":"Update Parameters for DPP Fast Path — update_parameters","title":"Update Parameters for DPP Fast Path — update_parameters","text":"Update Parameters DPP Fast Path","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/update_parameters.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Update Parameters for DPP Fast Path — update_parameters","text":"","code":"update_parameters(x, problem, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/update_parameters.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Update Parameters for DPP Fast Path — update_parameters","text":"x Reduction object. problem Problem object. ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/update_parameters.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Update Parameters for DPP Fast Path — update_parameters","text":"NULL (called side effects).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/upper_tri.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract strict upper triangle of a square matrix — upper_tri","title":"Extract strict upper triangle of a square matrix — upper_tri","text":"Extract strict upper triangle square matrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/upper_tri.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract strict upper triangle of a square matrix — upper_tri","text":"","code":"upper_tri(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/upper_tri.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract strict upper triangle of a square matrix — upper_tri","text":"x Expression (square matrix)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/upper_tri.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract strict upper triangle of a square matrix — upper_tri","text":"UpperTri atom (column vector)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/validate_arguments.html","id":null,"dir":"Reference","previous_headings":"","what":"Validate Arguments to an Atom — validate_arguments","title":"Validate Arguments to an Atom — validate_arguments","text":"Validate Arguments Atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/validate_arguments.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate Arguments to an Atom — validate_arguments","text":"","code":"validate_arguments(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/validate_arguments.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate Arguments to an Atom — validate_arguments","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/validate_arguments.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Validate Arguments to an Atom — validate_arguments","text":"Invisible NULL (error invalid).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/value-set.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the Value of a Leaf Expression — value<-","title":"Set the Value of a Leaf Expression — value<-","text":"Assigns numeric value Variable Parameter.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/value-set.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the Value of a Leaf Expression — value<-","text":"","code":"value(x) <- value"},{"path":"https://www.cvxgrp.org/CVXR/reference/value-set.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the Value of a Leaf Expression — value<-","text":"x leaf expression object. value value assign.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/value-set.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set the Value of a Leaf Expression — value<-","text":"modified object (invisibly).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/value.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Numeric Value of an Expression — value","title":"Get the Numeric Value of an Expression — value","text":"Returns numeric value CVXR expression, variable, constant. variables, value set solving problem.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/value.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Numeric Value of an Expression — value","text":"","code":"value(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/value.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Numeric Value of an Expression — value","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/value.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Numeric Value of an Expression — value","text":"numeric matrix, NULL value set.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/var_dict.html","id":null,"dir":"Reference","previous_headings":"","what":"Get all Variables of a Problem as a Named List — var_dict","title":"Get all Variables of a Problem as a Named List — var_dict","text":"Mirrors CVXPY's Problem.var_dict property (cvxpy/problems/problem.py:267-271): returns named list keyed variable's name, value Variable object .","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/var_dict.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get all Variables of a Problem as a Named List — var_dict","text":"","code":"var_dict(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/var_dict.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get all Variables of a Problem as a Named List — var_dict","text":"x Problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/var_dict.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get all Variables of a Problem as a Named List — var_dict","text":"Named list Variable objects, keyed name.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/variables.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Variables in an Expression — variables","title":"Get the Variables in an Expression — variables","text":"Get Variables Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/variables.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Variables in an Expression — variables","text":"","code":"variables(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/variables.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Variables in an Expression — variables","text":"x expression problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/variables.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Variables in an Expression — variables","text":"List Variable objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vdot.html","id":null,"dir":"Reference","previous_headings":"","what":"Vector dot product (inner product) — vdot","title":"Vector dot product (inner product) — vdot","text":"Computes inner product: sum element-wise products flattening. Returns scalar expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vdot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Vector dot product (inner product) — vdot","text":"","code":"vdot(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/vdot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Vector dot product (inner product) — vdot","text":"x Expression numeric value. y Expression numeric value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vdot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Vector dot product (inner product) — vdot","text":"scalar Expression representing sum(x * y).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vec.html","id":null,"dir":"Reference","previous_headings":"","what":"Vectorize an expression (column vector) — vec","title":"Vectorize an expression (column vector) — vec","text":"Reshapes expression column vector shape (n*m, 1).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vec.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Vectorize an expression (column vector) — vec","text":"","code":"vec(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/vec.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Vectorize an expression (column vector) — vec","text":"x Expression numeric value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vec.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Vectorize an expression (column vector) — vec","text":"Reshape atom (column vector).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vec_to_upper_tri.html","id":null,"dir":"Reference","previous_headings":"","what":"Reshape a vector into an upper triangular matrix — vec_to_upper_tri","title":"Reshape a vector into an upper triangular matrix — vec_to_upper_tri","text":"Inverts upper_tri. Takes flat vector returns upper triangular matrix (row-major order, matching CVXPY convention).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vec_to_upper_tri.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reshape a vector into an upper triangular matrix — vec_to_upper_tri","text":"","code":"vec_to_upper_tri(expr, strict = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/vec_to_upper_tri.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Reshape a vector into an upper triangular matrix — vec_to_upper_tri","text":"expr Expression (vector). strict Logical. TRUE, returns strictly upper triangular matrix (diagonal zero). FALSE, includes diagonal. Default FALSE.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vec_to_upper_tri.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reshape a vector into an upper triangular matrix — vec_to_upper_tri","text":"Expression representing upper triangular matrix.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/violation.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Violation of a Constraint — violation","title":"Get the Violation of a Constraint — violation","text":"Returns scalar violation (distance feasibility) constraint.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/violation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Violation of a Constraint — violation","text":"","code":"violation(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/violation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Violation of a Constraint — violation","text":"x constraint object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/violation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Violation of a Constraint — violation","text":"Numeric scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/visualize.html","id":null,"dir":"Reference","previous_headings":"","what":"Visualize the Canonicalization Pipeline of a CVXR Problem — visualize","title":"Visualize the Canonicalization Pipeline of a CVXR Problem — visualize","text":"Displays Smith form decomposition convex optimization problem, showing stage DCP canonicalization pipeline: expression tree, Smith form, relaxed Smith form, conic form, (optionally) standard cone form solver data.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/visualize.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Visualize the Canonicalization Pipeline of a CVXR Problem — visualize","text":"","code":"visualize( problem, output = c(\"text\", \"json\", \"html\", \"latex\", \"tikz\"), solver = NULL, digits = 4L, file = NULL, open = interactive(), doc_base = \"https://cvxr.rbind.io/reference/\" )"},{"path":"https://www.cvxgrp.org/CVXR/reference/visualize.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Visualize the Canonicalization Pipeline of a CVXR Problem — visualize","text":"problem Problem object. output Character: output format. \"text\" Console display (default). \"json\" JSON data model (interop HTML/Python). \"html\" Interactive D3+KaTeX HTML (Phase 2). \"latex\" LaTeX align* environments (Phase 3). \"tikz\" TikZ forest tree diagrams (Phase 3). solver Solver specification matrix stuffing stages (4-5). NULL (default) shows Stages 0-3 zero overhead. TRUE uses default solver (psolve()). character string (e.g., \"Clarabel\") uses specific solver. digits Integer: significant digits displaying scalar constants. Integer-valued constants (0, 1, -3) always display without decimals regardless setting. Defaults 4. file Character: path HTML output file. NULL (default), temporary file used. open Logical: whether open HTML file browser. Defaults TRUE interactive sessions. doc_base Character: base URL atom documentation links. Defaults CVXR pkgdown site.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/visualize.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Visualize the Canonicalization Pipeline of a CVXR Problem — visualize","text":"\"text\": invisible model list. \"json\": JSON string (list jsonlite available). \"html\": file path (invisibly). formats: rendered output (Phase 2+).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/visualize.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Visualize the Canonicalization Pipeline of a CVXR Problem — visualize","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(3, name = \"x\") prob <- Problem(Minimize(p_norm(x, 2)), list(x >= 1)) visualize(prob) # Stages 0-3 only visualize(prob, solver = TRUE) # Stages 0-5, default solver visualize(prob, solver = \"Clarabel\") # Stages 0-5, specific solver visualize(prob, output = \"html\", solver = TRUE) } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/vstack.html","id":null,"dir":"Reference","previous_headings":"","what":"Vertical concatenation of expressions — vstack","title":"Vertical concatenation of expressions — vstack","text":"Vertical concatenation expressions","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vstack.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Vertical concatenation of expressions — vstack","text":"","code":"vstack(...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/vstack.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Vertical concatenation of expressions — vstack","text":"... Expressions (number columns)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vstack.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Vertical concatenation of expressions — vstack","text":"VStack atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/with_dpp_scope.html","id":null,"dir":"Reference","previous_headings":"","what":"Execute Expression Within DPP Scope — with_dpp_scope","title":"Execute Expression Within DPP Scope — with_dpp_scope","text":"Within scope, Parameter objects treated affine (constant) curvature analysis. used internally is_dpp() check DPP compliance.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/with_dpp_scope.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Execute Expression Within DPP Scope — with_dpp_scope","text":"","code":"with_dpp_scope(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/with_dpp_scope.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Execute Expression Within DPP Scope — with_dpp_scope","text":"expr R expression evaluate within DPP scope.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/with_dpp_scope.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Execute Expression Within DPP Scope — with_dpp_scope","text":"result evaluating expr.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/with_quad_form_dpp_scope.html","id":null,"dir":"Reference","previous_headings":"","what":"Execute Expression Within a quad_form DPP Scope — with_quad_form_dpp_scope","title":"Execute Expression Within a quad_form DPP Scope — with_quad_form_dpp_scope","text":"Execute Expression Within quad_form DPP Scope","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/with_quad_form_dpp_scope.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Execute Expression Within a quad_form DPP Scope — with_quad_form_dpp_scope","text":"","code":"with_quad_form_dpp_scope(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/with_quad_form_dpp_scope.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Execute Expression Within a quad_form DPP Scope — with_quad_form_dpp_scope","text":"expr R expression evaluate within quad_form DPP scope.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/with_quad_form_dpp_scope.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Execute Expression Within a quad_form DPP Scope — with_quad_form_dpp_scope","text":"result evaluating expr.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/xexp.html","id":null,"dir":"Reference","previous_headings":"","what":"x * exp(x) – elementwise — xexp","title":"x * exp(x) – elementwise — xexp","text":"x * exp(x) – elementwise","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/xexp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"x * exp(x) – elementwise — xexp","text":"","code":"xexp(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/xexp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"x * exp(x) – elementwise — xexp","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/xexp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"x * exp(x) – elementwise — xexp","text":"Xexp atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-191","dir":"Changelog","previous_headings":"","what":"CVXR 1.9.1","title":"CVXR 1.9.1","text":"first CRAN release since 1.8.2 large one: tracks CVXPY 1.9.1 folds changes internal 1.8.2-1 1.9.0 development cycles. headline additions derivative API differentiable convex programs, disciplined nonlinear programming (DNLP), interval-bounds propagation native solver-bound support.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"disciplined-nonlinear-programming-dnlp-1-9-1","dir":"Changelog","previous_headings":"","what":"Disciplined nonlinear programming (DNLP)","title":"CVXR 1.9.1","text":"Solve smooth nonlinear programs psolve(prob, nlp = TRUE). problem must satisfy new is_dnlp() grammar (disciplined nonlinear program); DCP problems subset, DCP problem also valid DNLP. New smooth atoms usable DNLPs: sin(), cos(), tan(), sinh(), tanh(), asinh(), atanh(), normcdf(). prod() now recognized smooth atom, problems involving products entries (including prod_entries(X, axis = ...)) DNLP solvable NLP path. classically-differentiable atoms now report is_atom_smooth() matching CVXPY 1.9: affine atoms, exp, log, entr, logistic, kl_div, rel_entr, xexp, power (constant exponent), geo_mean, log_sum_exp, quad_form, quad_over_lin, prod. result smooth convex/concave functions sum_squares() linearizable directions (is_smooth() TRUE), piecewise atoms (abs, min, max) remain convex/concave-. New predicate exports: is_smooth(), is_atom_smooth(), is_linearizable_convex(), is_linearizable_concave(). Piecewise-linear atoms used DNLP (abs, max, max_elemwise, norm_inf, sum_largest, sum_smallest) now initialize epigraph variables canonicalization, NLP backend complete starting point. sum_largest initializes threshold (k+1)-th largest entry, matching CVXPY’s warm-start fix. New convolve() atom, CVXPY 1.9’s preferred (numpy-style) name 1-D discrete-convolution conv() atom. numeric input falls stats::convolve(). DNLP path powered derivatives optional sparsediff package can solve optional ipopt Uno R packages. NLP solver names: \"IPOPT\", \"UNO\" (variants \"uno_ipm\" / \"uno_sqp\"), \"KNITRO\", \"COPT\"; \"KNITRO\" \"COPT\" registered require solver bindings yet available R. installed, IPOPT first automatic NLP solver, matching CVXPY’s preference order. quad_over_lin() sum_squares() now canonicalize axis-aware reductions (axis = 1 axis = 2) batched second-order cone constraints, closing CVXPY parity gap sum_squares(..., axis = ...) objectives constraints. UNO interface defaults interior-point ipopt preset (plus MUMPS), differs CVXPY’s filtersqp default. CVXPY’s filtersqp uses BQPD active-set solver quadratic subproblems, handles indefinite Hessians. bundled Uno build HiGHS-(BQPD bundled CRAN-license compatible), HiGHS solves convex quadratic subproblems, filtersqp fails nonconvex DNLPs. interior-point ipopt preset factors regularized KKT system MUMPS robust convex nonconvex problems. Force SQP path solver = \"uno_sqp\" (preset = \"filtersqp\"); reliable problems whose subproblem Hessians stay positive semidefinite. Best--N random restarts nonconvex DNLPs: psolve(prob, nlp = TRUE, best_of = n) solves n random initial points keeps best result. Random initialization draws variable’s sample_bounds(var) <- c(low, high) (set) finite variable bounds. per-run objectives available via solver_stats(prob)@extra_stats$all_objs_from_best_of. NLP solve, dual_value() returns constraint duals recovered solver (CVXR addition; duals exposed CVXPY’s NLP interface).","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"derivative-api-for-differentiable-convex-programs-1-9-1","dir":"Changelog","previous_headings":"","what":"Derivative API for differentiable convex programs","title":"CVXR 1.9.1","text":"New derivative API backed diffcp R package: psolve(prob, requires_grad = TRUE) followed backward(prob) derivative(prob); gradient(x)<- delta(x)<- set tangent / cotangent values leaves. chain rule wired Dgp2Dcp (log/exp) Complex2Real (real/imag split).","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"bounds-propagation-1-9-1","dir":"Changelog","previous_headings":"","what":"Bounds propagation","title":"CVXR 1.9.1","text":"get_bounds() now works expression, just variables: propagates interval bounds affine, elementwise, piecewise-linear atoms (e.g. get_bounds(%*% x + b), get_bounds(abs(x)), get_bounds(sum(x))). Bounds returned shaped expression’s dimensions. Variable bounds may now sparse Matrix objects symbolic bounds involving Parameters. get_bounds() preserves sparse numeric bounds skips symbolic bounds, solve-time attribute lowering enforces symbolic constraints. Parameter values containing matching Inf entries now validate correctly. Solvers expose native variable bounds now consume dense numeric bounds directly instead adding bound constraints: HiGHS (LP/MILP QP paths), Gurobi (QP/MIQP conic/SOCP), CPLEX (QP/MIQP), XPRESS (QP/MIQP conic/SOCP), PIQP (QP), SCIP (conic). Sparse bounds continue constraint lowering. Parametric variable bounds use bound tensors (HiGHS), changing Parameter bounds updates native solver bounds DPP re-solves. Bounds inferred DCP auxiliary variables now preserved solvers consume native variable bounds. Attribute reduction now compacts 2D symmetric, PSD, NSD, diagonal Parameters rebuilding full expressions. Variables now report Parameters embedded expression bounds include bounds DPP/DGP compliance checks.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"geometric-and-parameterized-programming-1-9-1","dir":"Changelog","previous_headings":"","what":"Geometric and parameterized programming","title":"CVXR 1.9.1","text":"Positive (DGP) variables now accept numeric parametric bounds gp = TRUE (e.g. Variable(pos = TRUE, bounds = list(lb, ub)) lb/ub Parameters). DGP reduction log-transforms bounds log domain lowers constraints; parametric bounds canonicalize DGP tree without eagerly evaluating log(value(param)), DPP re-solves changed bound parameters work. is_dpp() gains context argument (\"dcp\" \"dgp\"), matching CVXPY’s is_dpp(context=...). \"dgp\" context variable’s symbolic bounds must log-log-affine (e.g. product positive Parameters DGP-DPP though DCP-DPP; norm()/sum() bounds rejected). New partial_optimize() transform. CPLEX now solves LP/SOCP/MI-LP/MI-SOCP problems conic path translating SOC blocks Rcplex quadratic constraints.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"new-atoms-transforms-and-accessors-1-9-1","dir":"Changelog","previous_headings":"","what":"New atoms, transforms, and accessors","title":"CVXR 1.9.1","text":"New sign() atom (DQCP, scalar input). psolve() gains solver_path argument solver fallback chains. New set_label() / label<- / format_labeled() attaching user-supplied labels expressions. power(), geo_mean(), p_norm() approx = TRUE now warn selected solver supports power cones (approx = FALSE uses exact PowCone3D / PowConeND form). MOSEK now supports mixed-integer programs (requires Rmosek 11.1.1+). solver_stats() MOSEK now populates solve_time, num_iters, extra_stats. New param_dict(), var_dict(), size_metrics() accessors Problem. Variable(value = ...) accepts initial value construction. New CallbackParam class — Parameter subclass whose value computed every read user-supplied callback. project() accepts index-based boolean = c(, j, ...) integer = c(, j, ...) attributes (1-based). validate_arguments() now called Cummax, Cumprod, MinEntries constructors.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"performance-1-9-1","dir":"Changelog","previous_headings":"","what":"Performance","title":"CVXR 1.9.1","text":"Problem canonicalization solving faster 1.8.2 CRAN release wide range problems. Two changes account gain: new .fast_new helper S7 expression construction (roughly 40% lower wall-clock atom-dense PSD-heavy problems), routing S7 class-membership checks hot canonicalization path cached check object’s class vector instead S7::S7_inherits() (rebuilt class name every call; per-node cone-detection scan benefits ). Deterministic memory allocation unchanged. internal changes user-visible API difference.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"bug-fixes-1-9-1","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"CVXR 1.9.1","text":"Bug fix (also affected 1.8.x): problem_data() get_problem_data() now take explicit gp argument. Previously gp = TRUE passed ... silently ignored, compiling geometric program DCP problem. Bug fix (also affected 1.8.x): psolve() now takes explicit enforce_dpp ignore_dpp arguments, matching CVXPY’s solve(). Previously silently swallowed ...; enforce_dpp = TRUE now raises non-DPP parametrized problem instead falling back non-DPP compile. Fixed QP-path canonicalization quad_over_lin(expr, constant) decision uses canonicalized denominator, matching CVXPY 1.9 behavior cases quad_over_lin(exp(x), 1) keep ExpCone without adding SOC block. Fix Variable(c(n, n), diag = TRUE) handling CvxAttr2Constr. Fix perspective() canonicalizer PSD, NSD, diag matrix variables. Fix project() sparse Matrix-package objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"notes-1-9-1","dir":"Changelog","previous_headings":"","what":"Notes","title":"CVXR 1.9.1","text":"Complex-parameter DPP fast-path parity remains deliberate feature gap: complex parameters evaluated Complex2Real CVXR’s R sparse-matrix backend carry complex sparse parameter tensors. Ordinary complex expression solving still supported Complex2Real. CVXR’s 2-D positive-dimensional model support zero-sized expressions, constraints, solves. Generated data-dependent models skip vacuous constraints use explicit zero contributions mask filter selects entries.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-182","dir":"Changelog","previous_headings":"","what":"CVXR 1.8.2","title":"CVXR 1.8.2","text":"CRAN release: 2026-04-04","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"new-solvers-scip-and-xpress-total-1-8-2","dir":"Changelog","previous_headings":"","what":"New solvers: SCIP and XPRESS (15 total)","title":"CVXR 1.8.2","text":"Added SCIP solver (14th solver) via R scip package. Supports LP, SOCP, MI-LP, MI-SOCP problems. SCIP registered conic solver path SUPPORTED_CONSTRAINTS = list(Zero, NonNeg, SOC) MIP_CAPABLE = TRUE. SCIP solver parameters can passed via scip_params sub-list (matching CVXPY convention) path-style parameter names like \"limits/time\", \"limits/gap\". Duals currently extracted (R scip package lacks dual API). 29 tests mirroring CVXPY’s TestSCIP class. Added XPRESS solver (15th solver) via R xpress package dual-interface architecture: QP path (XPRESS_QP_Solver) LP/QP conic path (XPRESS_Conic_Solver) SOCP/MI-LP/MI-SOCP. paths support Zero NonNeg constraints; conic path also supports SOC. MIP warm-start supported.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"diag-and-norm-dispatch-fixes-1-8-2","dir":"Changelog","previous_headings":"","what":"diag() and norm() dispatch fixes","title":"CVXR 1.8.2","text":"diag() now works CVXR expressions: diag(vector_expr) creates diagonal matrix (DiagVec), diag(square_matrix_expr) extracts diagonal (DiagMat). Falls Matrix::diag() non-Expression inputs, correctly handling Matrix S4 objects base R matrices. norm() fallthrough now delegates Matrix::norm() instead base::norm(), fixing norm(sparse_matrix) CVXR loaded. t() mean() switched S7 method() registerS3method() avoid demoting Matrix’s S4 generics.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxpy-parity-1-8-2","dir":"Changelog","previous_headings":"","what":"CVXPY 1.8.2 parity","title":"CVXR 1.8.2","text":"applicable bug fixes CVXPY v1.8.2 ported, annotated ## CVXPY v1.8.2 fix: source.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"solver_opts-and-use_quad_obj-1-8-2","dir":"Changelog","previous_headings":"","what":"solver_opts() and use_quad_obj","title":"CVXR 1.8.2","text":"New solver_opts() constructor unified solver options. Standard tolerance parameters (feastol, reltol, abstol, num_iter) solver-specific parameters now flow psolve(...) via solver_opts() constructor. New use_quad_obj option (default TRUE): FALSE, forces conic decomposition path instead QP, enabling quad_form_canon detect indefinite P matrices. New supports_quad_obj() generic conic solvers (Clarabel SCS return TRUE, others FALSE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"element-wise-matrix-indexing-specialindex-1-8-2","dir":"Changelog","previous_headings":"","what":"Element-wise matrix indexing (SpecialIndex)","title":"CVXR 1.8.2","text":"New SpecialIndex atom (mirroring CVXPY’s special_index) enables R-idiomatic element-wise selection matrix expressions: 2-column matrix indexing: x[cbind(rows, cols)] Logical matrix indexing: x[mask] Linear integer indexing: x[c(1, 5, 9)] Logical vector indexing: x[c(TRUE, FALSE, ...)] makes natural constrain specific entries matrix variable, e.g., fixing observed entries partially-known matrix: Previously, x[] matrix expression errored “Single-index selection matrices supported.” workaround required element-wise multiply binary mask, unintuitive. Internally uses sparse selection matrix multiplication (reshape → sparse matmul), requiring C++ changes.","code":"ind <- which(!is.na(Rmiss), arr.ind = TRUE) prob <- Problem(Minimize(obj), list(X[ind] == Rmiss[ind]))"},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"bug-fixes-1-8-2","dir":"Changelog","previous_headings":"","what":"Bug Fixes","title":"CVXR 1.8.2","text":"Fixed O(n²) memory usage sum_squares(), power(x, 2), quad_over_lin(), huber() first argument many elements (e.g., regression residuals thousands observations). quadratic canonicalizer converting sparse identity matrix dense form. Memory now scales linearly problem size.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-181","dir":"Changelog","previous_headings":"","what":"CVXR 1.8.1","title":"CVXR 1.8.1","text":"CRAN release: 2026-03-06","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"complete-rewrite-using-s7-object-system-1-8-1","dir":"Changelog","previous_headings":"","what":"Complete rewrite using S7 object system","title":"CVXR 1.8.1","text":"ground-rewrite CVXR using R’s S7 object system, designed isomorphic CVXPY 1.8.1 long-term maintainability. ~4-5x faster CVXR 1.0-15 typical problems.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"new-features-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"New features","title":"CVXR 1.8.1","text":"S7 class system replaces S4 expression, constraint, problem classes. Significantly faster construction method dispatch. 13 solvers initial release: Clarabel (default), SCS, OSQP, HiGHS, MOSEK, Gurobi, GLPK, GLPK_MI, ECOS, ECOS_BB, CPLEX, CVXOPT, PIQP. Mixed-integer programming via GLPK_MI, ECOS_BB, Gurobi, HiGHS (boolean = TRUE integer = TRUE Variable()). Parameter support via Parameter() class DPP (Disciplined Parameterized Programming) efficient re-solves parameter values change. 50+ atom classes covering LP, QP, SOCP, SDP, exponential cone, power cone problems. psolve() primary solve interface, returning optimal value directly. solve() backward-compatibility wrapper returning cvxr_result list $value, $status, $solver, $getValue(), $getDualValue(). verbose = TRUE option psolve() structured solve output timing information. Standard solver parameters (feastol, reltol, abstol, num_iter) psolve() automatic translation solver-native names via solver_default_param(). Solver-native parameters ... take priority. Automatic solver selection based problem type. Warm-start support 7 solvers (OSQP, SCS, Clarabel, Gurobi, MOSEK, PIQP; HiGHS blocked R package limitation). Decomposed solve API: problem_data(), solve_via_data(), problem_unpack_results() compile-/solve-many workflows. visualize() problem introspection: text display Smith form annotations, interactive HTML output (D3 tree + KaTeX), -demand DCP violation analysis non-compliant problems, curvature coloring constraint nodes, matrix stuffing visualization (Stages 4-5: Standard Form + Solver Data) via new solver parameter. Matrix package interoperability via as_cvxr_expr(). Sparse Matrix objects (dgCMatrix, dgeMatrix, etc.) use S4 dispatch preempts S7/S3, direct arithmetic like sparseA %*% x fails. Wrapping as_cvxr_expr(sparseA) %*% x converts CVXR Constant preserving sparsity. Base R matrix numeric work natively without wrapping. Full 2D broadcasting + - operators, matching CVXPY’s Expression.broadcast(). Expressions compatible different shapes (e.g., (1, n) + (m, 1) → (m, n)) now work correctly constraints objectives. Previously scalar promotion supported. Correct solver-cone routing matching CVXPY’s atom classifications. Atoms canonicalize PSD cones (MatrixFrac, TrInv, SigmaMax, NormNuc, LambdaSumLargest) now correctly classified, ensuring solvers like ECOS don’t support SDP rejected clear error message instead cryptic dimension mismatch. Approximate variants (PnormApprox, PowerApprox, GeoMeanApprox) correctly route SOC; exact variants route native cone types (PowCone3D, PowConeND).","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"breaking-changes-from-cvxrx-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"Breaking changes from CVXR 1.x","title":"CVXR 1.8.1","text":"S7 classes replace S4. Use Variable(n) instead new(\"Variable\", n). Requires R >= 4.3.0 (chooseOpsMethod() S7 @ support). solve() now returns cvxr_result S3 list, S4 object. Use psolve() direct numeric return value. getValue(x) getDualValue(con) deprecated. Use value(x) dual_value(con) solving instead. problem_status(), problem_solution(), get_problem_data() deprecated. Use status(), solution(), problem_data() instead. axis parameter uses 1-based indexing matching R’s apply() MARGIN convention: axis = 1 row-wise (reduce columns), axis = 2 column-wise (reduce rows), axis = NULL entries. Internal class structure completely changed (S7 instead S4). Code accessed slots directly need updating. S4 class checks like (x, \"Variable\") longer work. Use S7_inherits(x, Variable).","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"convenience-atoms-and-functions-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"Convenience atoms and functions","title":"CVXR 1.8.1","text":"ptp(x, axis, keepdims) – peak--peak (range): max(x) - min(x). cvxr_mean(x, axis, keepdims) – arithmetic mean along axis. cvxr_std(x, axis, keepdims, ddof) – standard deviation. cvxr_var(x, axis, keepdims, ddof) – variance. vdot(x, y) – vector dot product (inner product). scalar_product(x, y) – alias vdot. cvxr_outer(x, y) – outer product two vectors. inv_prod(x) – reciprocal product entries. loggamma(x) – elementwise log gamma function (piecewise linear approximation). log_normcdf(x) – elementwise log standard normal CDF (quadratic approximation). cummax_expr(x, axis) – cumulative maximum along axis. dotsort(X, W) – weighted sorted dot product (generalization sum_largest/sum_smallest). diff_pos(), resolvent() – DGP convenience functions.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"clean-api-names-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"Clean API names","title":"CVXR 1.8.1","text":"status(prob) – returns solution status (replaces problem_status()). solution(prob) – returns raw Solution object (replaces problem_solution()). problem_data(prob, solver) – returns solver-ready data (replaces get_problem_data()). Old names still work emit -per-session deprecation warnings.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"backward-compatibility-aliases-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"Backward-compatibility aliases","title":"CVXR 1.8.1","text":"tv() deprecated alias total_variation(). norm2(x) deprecated alias p_norm(x, 2). multiply(x, y) deprecated alias x * y. installed_solvers() lists available solver packages.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"advanced-features-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"Advanced features","title":"CVXR 1.8.1","text":"DPP (Disciplined Parameterized Programming) efficient parameter re-solve compilation caching. DGP (Disciplined Geometric Programming) via psolve(prob, gp = TRUE). New atoms: prod_entries(), cumprod(), one_minus_pos(), eye_minus_inv(), pf_eigenvalue(), gmatmul(). DQCP (Disciplined Quasiconvex Programming) via psolve(prob, qcp = TRUE). New atoms: ceil_expr(), floor_expr(), condition_number(), gen_lambda_max(), dist_ratio(). Complex variable support via Variable(n, complex = TRUE) Complex2Real reduction. Atoms: Conj_(), Real_(), Imag_(), expr_H() conjugate transpose. perspective(f, s) atom perspective functions. FiniteSet(expr, values) constraint discrete optimization. Boolean logic atoms: (), (), (), Xor(), implies(), iff(). %>>% %<<% operators PSD NSD constraints. as_cvxr_expr() helper wrapping R objects CVXR constants. Required Matrix package objects (dgCMatrix, dgeMatrix, etc.) use S4 dispatch preempts S7/S3. Preserves sparsity (unlike .matrix()). Base R matrix/numeric work natively without wrapping.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"bug-fixes-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"Bug fixes","title":"CVXR 1.8.1","text":"Fixed kron() KRON_L coefficient matrix construction. Fixed CvxAttr2Constr index type matrix variable handling. Fixed Clarabel PowConeND bridge uniquely-named cones. Fixed C++ diag offset super/sub-diagonals (k != 0). Fixed DQCP bisection: infinity check, stale bounds Maximize, conditional high-endpoint seeding. Fixed MOSEK dual extraction (suc - slc reconstruction). Fixed OSQP/HiGHS inequality dual sign convention.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"known-limitations-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"Known limitations","title":"CVXR 1.8.1","text":"Matrix package objects (dgCMatrix, dgeMatrix, ddiMatrix, sparseVector) used directly CVXR operators due S4 dispatch preempting S7/S3. Wrap as_cvxr_expr() first. Base R matrix/numeric work natively. R dispatch limitation requiring upstream changes S7 /Matrix. Warm-start HiGHS implemented (works highs 1.14) upstream R highs PR exposing setSolution() yet actioned maintainers; lives branch highs-warm-start. Complex SOC dual variables recovered (CVXPY implement — complex2real.py:56 declares UNIMPLEMENTED_COMPLEX_DUALS = (SOC, OpRelEntrConeQuad)). Complex SOC primal canonicalization works. Deferred future release: RelEntrConeQuad / OpRelEntrConeQuad, quantum atoms, CPLEX conic (SOC) path.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-15","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-15","title":"CVXR 1.0-15","text":"CRAN release: 2024-11-07 Revert clarabel requirement use enhance rather import really necessary (Issue 142). Update return codes user_limit etc infeasible_inaccurate match CVXPY gurobi Add S3 print method result solve(). Move upper_tri_to_full C++ Drop use R6 classes Address bug copying Power object (Issue 145).","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-14","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-14","title":"CVXR 1.0-14","text":"CRAN release: 2024-06-27 Address inefficiency use diagonal matrices qp2quad_form.R Add initial interface clarabel solver","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-13","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-13","title":"CVXR 1.0-13","text":"CRAN release: 2024-06-01 Address inefficient processing cones MOSEK (Issue 137 reported aszekMosek) Fix extract_quadratic_coeffs use sparse matrix sweep place better memory use (reported Marissa Reitsma)","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-12","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-12","title":"CVXR 1.0-12","text":"CRAN release: 2024-02-01 Rmosek removed CRAN, moved drat repo Cleaned problematic Rd files shown CRAN results","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-11","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-11","title":"CVXR 1.0-11","text":"CRAN release: 2022-10-30 careful coercing dgCMatrix via (((, \"CsparseMatrix\"), \"generalMatrix\")) Modify class inheritance checks use inherits()","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-10","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-10","title":"CVXR 1.0-10","text":"CRAN release: 2021-11-10 Now requiring updated scs 3.0 import","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-9","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-9","title":"CVXR 1.0-9","text":"CRAN release: 2021-01-19 Now importing ECOSolveR version 0.5.4 higher Added fixes Matrix 1.3 update Somewhat better typesetting Power class documentation (Issue #86)","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-8-to-10-3","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-8 to 1.0-3","title":"CVXR 1.0-8 to 1.0-3","text":"CRAN release: 2020-09-13 Conforming CRAN suggestions non-CRAN packages, actual changes.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-2","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-2","title":"CVXR 1.0-2","text":"Added exponential cone support MOSEK uncommented associated test. Added JSS publication DOI.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-1","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-1","title":"CVXR 1.0-1","text":"CRAN release: 2020-04-02 Many small fixes solver interfaces Reference semantics Parameter Warm start OSQP updates solver cache Solver parameter defaults explicit now New tests added solver combinations","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10","dir":"Changelog","previous_headings":"","what":"CVXR 1.0","title":"CVXR 1.0","text":"CRAN release: 2020-02-02 Major release implementing reductions, many new solvers.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-099","dir":"Changelog","previous_headings":"","what":"CVXR 0.99","title":"CVXR 0.99","text":"CRAN release: 2018-05-26 Bug fix: duplicated integer boolean indices. Bug fix: correct typo constraint specification GLPK. Added tutorial articles based v0.99 CVXR website using solvers, integer programming, MOSEK GUROBI examples.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-098-1","dir":"Changelog","previous_headings":"","what":"CVXR 0.98-1","title":"CVXR 0.98-1","text":"Minor typographical fixes.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-098","dir":"Changelog","previous_headings":"","what":"CVXR 0.98","title":"CVXR 0.98","text":"Dropped delay_load parameter dropped reticulate::import_from_path, per changes reticulate. Cleaned hooks reticulate commercial solvers.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-097-1","dir":"Changelog","previous_headings":"","what":"CVXR 0.97-1","title":"CVXR 0.97-1","text":"Minor typo documentation fixes.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-097","dir":"Changelog","previous_headings":"","what":"CVXR 0.97","title":"CVXR 0.97","text":"Added LPSOLVE via lpSolveAPI Added GLPK via Rglpk Added MOSEK Added GUROBI Bug fix: issue #25. CVXR expressions retain dimensions. Culprit drop = FALSE (function Index.get_special_slice) suspected.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-096","dir":"Changelog","previous_headings":"","what":"CVXR 0.96","title":"CVXR 0.96","text":"Added note CVXR can probably compiled source earlier versions R. issue #24 Using pkgdown. also addresses issue #23 Bug fix: issue #28 Function intf_sign (interface.R) unnecessarily using tolerance parameter, now eliminated.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-095","dir":"Changelog","previous_headings":"","what":"CVXR 0.95","title":"CVXR 0.95","text":"CRAN release: 2018-02-20 Updated Solver.solve adapt new ECOSolveR. Require version 0.4 ECOSolveR now. Updated unpack_results behave exactly like CVXPY. Added documentation testthat tests. Documented Speed.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-094-4","dir":"Changelog","previous_headings":"","what":"CVXR 0.94-4","title":"CVXR 0.94-4","text":"CRAN release: 2017-11-20 First CRAN release 2017-11-20.","code":""}] +[{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"overview","dir":"Articles","previous_headings":"","what":"Overview","title":"Introduction to CVXR","text":"CVXR R package provides object-oriented modeling language convex optimization, similar CVXPY Python. allows formulate solve convex optimization problems natural mathematical syntax.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"a-simple-example-least-squares","dir":"Articles","previous_headings":"","what":"A Simple Example: Least Squares","title":"Introduction to CVXR","text":"Consider simple linear regression problem want estimate parameters using least squares criterion. generate synthetic data know true model: Y=Xβ+ϵ Y = X\\beta + \\epsilon YY 100×1100 \\times 1 vector, XX 100×10100 \\times 10 matrix, β=(−4,−3,…,5)⊤\\beta = (-4, -3, \\ldots, 5)^\\top 10×110 \\times 1 vector, ϵ∼N(0,1)\\epsilon \\sim N(0, 1). Using base R, can estimate β\\beta via lm:","code":"set.seed(123) n <- 100 p <- 10 beta <- -4:5 X <- matrix(rnorm(n * p), nrow = n) Y <- X %*% beta + rnorm(n) ls.model <- lm(Y ~ 0 + X)"},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"the-cvxr-formulation","dir":"Articles","previous_headings":"A Simple Example: Least Squares","what":"The CVXR formulation","title":"Introduction to CVXR","text":"problem can expressed : minimizeβ∥Y−Xβ∥22 \\underset{\\beta}{\\text{minimize}} \\quad \\|Y - X\\beta\\|_2^2 CVXR, translates directly: optimal value estimated coefficients:","code":"library(CVXR) #> #> Attaching package: 'CVXR' #> The following objects are masked from 'package:stats': #> #> convolve, power, sd, var #> The following objects are masked from 'package:base': #> #> diag, norm, outer betaHat <- Variable(p) objective <- Minimize(sum((Y - X %*% betaHat)^2)) problem <- Problem(objective) result <- psolve(problem) ## use default solver cat(\"Optimal value:\", result, \"\\n\") #> Optimal value: 97.84759 cbind(CVXR = round(value(betaHat), 3), lm = round(coef(ls.model), 3)) #> lm #> X1 -3.920 -3.920 #> X2 -3.012 -3.012 #> X3 -2.125 -2.125 #> X4 -0.867 -0.867 #> X5 0.091 0.091 #> X6 0.949 0.949 #> X7 2.076 2.076 #> X8 3.127 3.127 #> X9 3.961 3.961 #> X10 5.135 5.135"},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"adding-constraints","dir":"Articles","previous_headings":"","what":"Adding Constraints","title":"Introduction to CVXR","text":"real power CVXR ability add constraints easily.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"nonnegative-least-squares","dir":"Articles","previous_headings":"Adding Constraints","what":"Nonnegative Least Squares","title":"Introduction to CVXR","text":"Suppose know β\\betas nonnegative:","code":"problem <- Problem(objective, constraints = list(betaHat >= 0)) result <- psolve(problem, solver = \"CLARABEL\") round(value(betaHat), 3) #> [,1] #> [1,] 0.000 #> [2,] 0.000 #> [3,] 0.000 #> [4,] 0.000 #> [5,] 1.237 #> [6,] 0.623 #> [7,] 2.123 #> [8,] 2.804 #> [9,] 4.445 #> [10,] 5.207"},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"custom-constraints","dir":"Articles","previous_headings":"Adding Constraints","what":"Custom Constraints","title":"Introduction to CVXR","text":"Now suppose β2+β3≤0\\beta_2 + \\beta_3 \\le 0 β\\betas nonnegative: demonstrates chief advantage CVXR: flexibility. Users can quickly modify re-solve problem, making package ideal prototyping new statistical methods. syntax simple mathematically intuitive.","code":"A <- matrix(c(0, 1, 1, rep(0, 7)), nrow = 1) B <- diag(c(1, 0, 0, rep(1, 7))) constraint1 <- A %*% betaHat <= 0 constraint2 <- B %*% betaHat >= 0 problem <- Problem(objective, constraints = list(constraint1, constraint2)) result <- psolve(problem, solver = \"CLARABEL\", verbose = TRUE) ## verbose = TRUE for details #> ────────────────────────────────── CVXR v1.9.1 ───────────────────────────────── #> ℹ Problem: 1 variable, 2 constraints (QP) #> ℹ Compilation: \"CLARABEL\" via CVXR::Dcp2Cone -> CVXR::CvxAttr2Constr -> CVXR::ConeMatrixStuffing -> CVXR::Clarabel_Solver #> ℹ Compile time: 0.022s #> ─────────────────────────────── Numerical solver ─────────────────────────────── #> ──────────────────────────────────── Summary ─────────────────────────────────── #> ✔ Status: optimal #> ✔ Optimal value: 1287.63 #> ℹ Compile time: 0.022s #> ℹ Solver time: 0.017s round(value(betaHat), 3) #> [,1] #> [1,] 0.000 #> [2,] -2.845 #> [3,] -1.711 #> [4,] 0.000 #> [5,] 0.664 #> [6,] 1.178 #> [7,] 2.329 #> [8,] 2.414 #> [9,] 4.212 #> [10,] 4.948"},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"available-solvers","dir":"Articles","previous_headings":"","what":"Available Solvers","title":"Introduction to CVXR","text":"CVXR supports 15 solvers, open source commercial: Clarabel, SCS, OSQP, HiGHS, MOSEK, Gurobi, GLPK, GLPK_MI, ECOS, ECOS_BB, CPLEX, CVXOPT, PIQP, SCIP, XPRESS. Smooth nonlinear programs additionally use IPOPT UNO solvers. can specify solver explicitly:","code":"installed_solvers() #> [1] \"CLARABEL\" \"SCS\" \"OSQP\" \"HIGHS\" \"MOSEK\" \"GUROBI\" #> [7] \"GLPK\" \"GLPK_MI\" \"ECOS\" \"ECOS_BB\" \"CPLEX\" \"CVXOPT\" #> [13] \"PIQP\" \"SCIP\" \"XPRESS\" psolve(problem, solver = \"CLARABEL\")"},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"whats-new","dir":"Articles","previous_headings":"","what":"What’s New","title":"Introduction to CVXR","text":"Recent releases add disciplined nonlinear programming (psolve(prob, nlp = TRUE)), bounds propagation expressions (get_bounds()), derivative / sensitivity-analysis API (requires_grad = TRUE), new atoms convolve(). CVXR also supports element-wise matrix indexing using R’s native idioms: release--release summary see vignette(\"whats_new\"), news(package = \"CVXR\") full details.","code":"ind <- which(!is.na(Rmiss), arr.ind = TRUE) prob <- Problem(Minimize(obj), list(X[ind] == Rmiss[ind]))"},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"further-reading","dir":"Articles","previous_headings":"","what":"Further Reading","title":"Introduction to CVXR","text":"CVXR website many worked examples CVXPY documentation covers underlying mathematical framework published paper: Fu, Narasimhan, Boyd (2020). “CVXR: R Package Disciplined Convex Optimization.” Journal Statistical Software, 94(14), DOI:10.18637/jss.v094.i14.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/cvxr_intro.html","id":"session-info","dir":"Articles","previous_headings":"","what":"Session Info","title":"Introduction to CVXR","text":"","code":"sessionInfo() #> R version 4.6.0 (2026-04-24) #> Platform: aarch64-apple-darwin23 #> Running under: macOS Tahoe 26.5.1 #> #> Matrix products: default #> BLAS: /Library/Frameworks/R.framework/Versions/4.6/Resources/lib/libRblas.0.dylib #> LAPACK: /Library/Frameworks/R.framework/Versions/4.6/Resources/lib/libRlapack.dylib; LAPACK version 3.12.1 #> #> locale: #> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 #> #> time zone: America/Los_Angeles #> tzcode source: internal #> #> attached base packages: #> [1] stats graphics grDevices utils datasets methods base #> #> other attached packages: #> [1] CVXR_1.9.1 #> #> loaded via a namespace (and not attached): #> [1] Matrix_1.7-5 piqp_0.6.2 jsonlite_2.0.0 compiler_4.6.0 #> [5] highs_1.14.0-2 Rcpp_1.1.1-1.1 slam_0.1-55 cccp_0.3-3 #> [9] jquerylib_0.1.4 systemfonts_1.3.2 textshaping_1.0.5 yaml_2.3.12 #> [13] fastmap_1.2.0 clarabel_0.11.2 lattice_0.22-9 R6_2.6.1 #> [17] scip_1.10.0-3 knitr_1.51 htmlwidgets_1.6.4 backports_1.5.1 #> [21] Rcplex_0.3-8 checkmate_2.3.4 gurobi_13.0-1 desc_1.4.3 #> [25] osqp_1.0.0 bslib_0.11.0 rlang_1.2.0 cachem_1.1.0 #> [29] xfun_0.57 fs_2.1.0 sass_0.4.10 S7_0.2.2 #> [33] otel_0.2.0 cli_3.6.6 pkgdown_2.2.0 Rglpk_0.6-5.1 #> [37] digest_0.6.39 grid_4.6.0 xpress_9.8.2 gmp_0.7-5.1 #> [41] lifecycle_1.0.5 ECOSolveR_0.6.1 scs_3.2.7 evaluate_1.0.5 #> [45] codetools_0.2-20 Rmosek_11.1.2 ragg_1.5.2 rmarkdown_2.31 #> [49] tools_4.6.0 htmltools_0.5.9"},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"cvxr-19x","dir":"Articles","previous_headings":"","what":"CVXR 1.9.1","title":"What's New in CVXR","text":"CVXR 1.9.1 first CRAN release since 1.8.2 large one: folds internal 1.8.2-1 1.9.0 development cycles. headline additions disciplined nonlinear programming, derivative / sensitivity-analysis API, interval-bounds propagation native solver-bound support.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"disciplined-nonlinear-programming-dnlp","dir":"Articles","previous_headings":"CVXR 1.9.1","what":"Disciplined Nonlinear Programming (DNLP)","title":"What's New in CVXR","text":"CVXR 1.9.1 extends modeling beyond convex optimization smooth nonlinear programs, need convex. build problem differentiable atoms, check is_dnlp(), solve psolve(prob, nlp = TRUE). Every DCP problem also DNLP, disciplined nonlinear grammar additionally allows smooth atoms forms DCP forbids (example, product two variable-dependent expressions). New smooth atoms usable anywhere DNLP: sin(), cos(), tan(), sinh(), tanh(), asinh(), atanh(), normcdf(), prod(). Nonconvex problems may several local optima. best_of = n solves n random initial points (drawn variable bounds sample_bounds()) keeps best. NLP path powered automatic derivatives optional sparsediff package nonlinear solver. Two supported, Enhances (guard use requireNamespace()): UNO (Uno package — headed CRAN, self-contained, practical default R users) IPOPT (ipopt package — CRAN owing licensing, rarely installed). nlp = TRUE, IPOPT preferred present (matching CVXPY), otherwise UNO used. UNO path also recovers constraint duals via dual_value(); IPOPT path returns none, matching CVXPY. See DNLP Tutorial worked examples.","code":"x <- Variable(2) prob <- Problem(Minimize(sum_squares(x - c(1, 2)))) is_dnlp(prob) # TRUE psolve(prob, nlp = TRUE) # solved through the NLP path"},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"derivatives-and-sensitivity-analysis","dir":"Articles","previous_headings":"CVXR 1.9.1","what":"Derivatives and sensitivity analysis","title":"What's New in CVXR","text":"CVXR 1.9.1 adds ability differentiate solution map disciplined problem — see optimal solution responds small changes parameters (sensitivity analysis) compute gradients scalar functions solution. Request derivatives solve time requires_grad = TRUE. Forward mode (perturb parameters, see change solution): Reverse mode (gradient solution respect parameters): chain rule wired Dgp2Dcp (log/exp) Complex2Real reductions, geometric complex problems differentiate . derivative API backed optional diffcp R package. See Derivatives examples Sensitivity Analysis.","code":"psolve(problem, requires_grad = TRUE) delta(a) <- da # perturbation of parameter a derivative(problem) # propagate forward delta(x) # resulting change in variable x psolve(problem, requires_grad = TRUE) backward(problem) # propagate backward gradient(a) # d(solution) / d(a)"},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"bounds-propagation-and-richer-variable-bounds","dir":"Articles","previous_headings":"CVXR 1.9.1","what":"Bounds propagation and richer variable bounds","title":"What's New in CVXR","text":"get_bounds() now works expression, just variables, propagating interval bounds affine, elementwise, piecewise-linear atoms: Variable bounds may also sparse Matrix objects symbolic bounds involving Parameters; symbolic bounds enforced solve time update DPP re-solves. Positive (DGP) variables accept numeric parametric bounds gp = TRUE.","code":"x <- Variable(3, bounds = list(-1, 2)) get_bounds(A %*% x + b) # bounds propagated through the affine map get_bounds(abs(x)) # and through atoms"},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"new-atoms-and-dpp-refinements","dir":"Articles","previous_headings":"CVXR 1.9.1","what":"New atoms and DPP refinements","title":"What's New in CVXR","text":"convolve() — (numpy-style) name 1-D discrete-convolution conv() atom; falls stats::convolve() numeric input. is_dpp() gains context argument (\"dcp\" \"dgp\"), matching CVXPY’s is_dpp(context = ...).","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"solvers","dir":"Articles","previous_headings":"CVXR 1.9.1","what":"Solvers","title":"What's New in CVXR","text":"CPLEX now solves LP / SOCP / MI-LP / MI-SOCP conic path. Native variable bounds: HiGHS, Gurobi, CPLEX, XPRESS, PIQP, SCIP now consume dense numeric variable bounds directly (including parametric bounds HiGHS), avoiding extra bound constraints speeding DPP re-solves.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"bug-fixes-also-affected-1-8-x","dir":"Articles","previous_headings":"CVXR 1.9.1","what":"Bug fixes (also affected 1.8.x)","title":"What's New in CVXR","text":"problem_data() / get_problem_data() now take explicit gp argument; previously gp = TRUE passed ... silently ignored, compiling geometric program DCP problem. psolve() now takes explicit enforce_dpp ignore_dpp arguments, matching CVXPY’s solve(); previously silently swallowed ....","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"performance","dir":"Articles","previous_headings":"CVXR 1.9.1","what":"Performance","title":"What's New in CVXR","text":"Canonicalization solving now faster 1.8.2 CRAN release (roughly 5–13% lower wall-clock solve-dominated problems many small constraints, SOCPs, Kalman smoothing), deterministic memory allocation unchanged.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"complete-rewrite-using-s7","dir":"Articles","previous_headings":"CVXR 1.8.x","what":"Complete Rewrite Using S7","title":"What's New in CVXR","text":"CVXR 1.8.x ground-rewrite using R’s S7 object system, designed isomorphic CVXPY 1.8.2 long-term maintainability. approximately 4–5x faster previous S4-based release. section summarizes key changes CVXR 1.x may affect users.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"new-features","dir":"Articles","previous_headings":"CVXR 1.8.x","what":"New Features","title":"What's New in CVXR","text":"S7 class system replaces S4 expression, constraint, problem classes. Significantly faster construction method dispatch. 15 solvers: CLARABEL (default), SCS, OSQP, HiGHS, MOSEK, Gurobi, GLPK, GLPK_MI, ECOS, ECOS_BB, CPLEX, CVXOPT, PIQP, SCIP, XPRESS. Mixed-integer programming via GLPK_MI, ECOS_BB, Gurobi, CPLEX, HiGHS, SCIP, XPRESS (boolean = TRUE integer = TRUE Variable()). Parameter support via Parameter() class EvalParams reduction. 50+ atom classes covering LP, QP, SOCP, SDP, exponential cone, power cone problems. DPP (Disciplined Parameterized Programming) efficient parameter re-solve compilation caching. DGP (Disciplined Geometric Programming) via psolve(prob, gp = TRUE). DQCP (Disciplined Quasiconvex Programming) via psolve(prob, qcp = TRUE). Complex variable support via Variable(n, complex = TRUE). Warm-start support several solvers (OSQP, SCS, Gurobi, MOSEK, CLARABEL, HiGHS). Matrix package interoperability via as_cvxr_expr(). Matrix package objects (dgCMatrix, dgeMatrix, dsCMatrix, ddiMatrix, sparseVector) use S4 dispatch preempts S7/S3, used directly CVXR operators. Wrapping as_cvxr_expr() converts CVXR Constant objects preserving sparsity (unlike .matrix() densifies). Base R matrix numeric objects work natively without wrapping.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"new-solve-interface","dir":"Articles","previous_headings":"CVXR 1.8.x","what":"New solve interface","title":"What's New in CVXR","text":"primary solve function now psolve(), returns optimal value directly: old solve() still works returns backward-compatible list:","code":"library(CVXR) x <- Variable(2) prob <- Problem(Minimize(sum_squares(x)), list(x >= 1)) opt_val <- psolve(prob) # returns optimal value directly x_val <- value(x) # extract variable value prob_status <- status(prob) # check status result <- solve(prob) result$value # optimal value result$getValue(x) # variable value (deprecated) result$status # problem status"},{"path":[]},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"axis-parameter-changes","dir":"Articles","previous_headings":"CVXR 1.8.x > Breaking Changes from CVXR 1.x","what":"Axis parameter changes","title":"What's New in CVXR","text":"axis parameter now uses R’s apply() convention (1-based indexing): Passing axis = 0 now produces informative error migration guidance.","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"psd-constraints","dir":"Articles","previous_headings":"CVXR 1.8.x > Breaking Changes from CVXR 1.x","what":"PSD constraints","title":"What's New in CVXR","text":"PSD constraints use PSD(- B) instead %>>% B (though %>>% %<<% operators still available backward compatibility).","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"solver-changes","dir":"Articles","previous_headings":"CVXR 1.8.x > Breaking Changes from CVXR 1.x","what":"Solver changes","title":"What's New in CVXR","text":"Removed: CBC Added: HiGHS (LP, QP, MILP), Gurobi (LP, QP, SOCP, MIP), CVXOPT (LP, SOCP), PIQP (QP), SCIP, XPRESS Default solver: CLARABEL (replaces ECOS)","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"supported-solvers","dir":"Articles","previous_headings":"CVXR 1.8.x > Breaking Changes from CVXR 1.x","what":"Supported solvers","title":"What's New in CVXR","text":"Smooth nonlinear programs additionally use IPOPT UNO NLP solvers (see CVXR 1.9.1).","code":""},{"path":[]},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"math-function-dispatch","dir":"Articles","previous_headings":"CVXR 1.8.x > New Atoms and Functions","what":"Math function dispatch","title":"What's New in CVXR","text":"Standard R math functions work directly CVXR expressions:","code":"x <- Variable(3) abs(x) # elementwise absolute value sqrt(x) # elementwise square root sum(x) # sum of entries max(x) # maximum entry norm(x, \"2\") # Euclidean norm"},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"boolean-logic-atoms","dir":"Articles","previous_headings":"CVXR 1.8.x > New Atoms and Functions","what":"Boolean logic atoms","title":"What's New in CVXR","text":"mixed-integer programming: (), (), (), Xor(), implies(), iff().","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"other-new-atoms","dir":"Articles","previous_headings":"CVXR 1.8.x > New Atoms and Functions","what":"Other new atoms","title":"What's New in CVXR","text":"perspective(f, s) perspective functions FiniteSet(expr, values) constraint discrete optimization ceil_expr(), floor_expr() DQCP problems condition_number(), gen_lambda_max(), dist_ratio() DQCP","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"backward-compatibility-aliases","dir":"Articles","previous_headings":"CVXR 1.8.x","what":"Backward-Compatibility Aliases","title":"What's New in CVXR","text":"tv() deprecated; use total_variation() (still works warns ) norm2(x) deprecated; use p_norm(x, 2) (still works warns ) multiply(x, y) deprecated; use x * y elementwise multiplication Old solve() still works returns compatibility list Old function names (problem_status, getValue, etc.) still work emit -per-session deprecation warnings","code":""},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"migration-guide","dir":"Articles","previous_headings":"CVXR 1.8.x","what":"Migration Guide","title":"What's New in CVXR","text":"migrate code CVXR 1.x 1.8.x: Replace result <- solve(problem) opt_val <- psolve(problem) Replace result$getValue(x) value(x) Replace result$value return value psolve() Replace result$status status(problem) Replace result$getDualValue(con) dual_value(con) Update solver names: \"ECOS\" → \"CLARABEL\", \"GLPK\" → \"HIGHS\" Update axis arguments: axis = NA → axis = NULL (row/column axis values 1 2 unchanged) Replace %>>% B PSD(- B) desired Wrap Matrix package objects as_cvxr_expr() using CVXR expressions (e.g., as_cvxr_expr() %*% x instead %*% x dgCMatrix Matrix class). preserves sparsity. Base R matrices need wrapping. Dimension-preserving operations. CVXR 1.8 preserves 2D shapes throughout, matching CVXPY. particular, axis reductions like sum_entries(X, axis = 2) now return proper row vector shape (1, n) rather collapsing 1D vector. comparing result R numeric vector (CVXR treats column), may need use t() matrix(..., nrow = 1) match shapes: Similarly, extract scalar CVXR result need plain numeric value, use .numeric() drop matrix dimensions.","code":"## Old (worked in CVXR 1.x because axis reductions were 1D): sum_entries(X, axis = 2) == target_vec ## New (wrap target as row vector to match the (1, n) shape): sum_entries(X, axis = 2) == t(target_vec)"},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"cran-submission-tip","dir":"Articles","previous_headings":"CVXR 1.8.x","what":"CRAN Submission Tip","title":"What's New in CVXR","text":"encounter issues involving Rmosek package submitting package CRAN, include following code /R/zzz.R resolve issue.","code":"## Content of /R/zzz.R .onLoad <- function(libname, pkgname) { CVXR::exclude_solvers(\"MOSEK\") } .onUnload <- function(libname, pkgname) { CVXR::include_solvers(\"MOSEK\") }"},{"path":"https://www.cvxgrp.org/CVXR/articles/whats_new.html","id":"further-reading","dir":"Articles","previous_headings":"CVXR 1.8.x","what":"Further Reading","title":"What's New in CVXR","text":"CVXR website — worked examples Package reference — full API documentation CVXPY documentation — mathematical framework Fu, Narasimhan, Boyd (2020). “CVXR: R Package Disciplined Convex Optimization.” Journal Statistical Software, 94(14). doi:10.18637/jss.v094.i14","code":""},{"path":"https://www.cvxgrp.org/CVXR/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Anqi Fu. Author, maintainer. Balasubramanian Narasimhan. Author. Steven Diamond. Author. John Miller. Author. Stephen Boyd. Contributor.","code":""},{"path":"https://www.cvxgrp.org/CVXR/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Fu , Narasimhan B, Boyd S (2020). “CVXR: R Package Disciplined Convex Optimization.” Journal Statistical Software, 94(14), 1–34. doi:10.18637/jss.v094.i14.","code":"@Article{, title = {{CVXR}: An {R} Package for Disciplined Convex Optimization}, author = {Anqi Fu and Balasubramanian Narasimhan and Stephen Boyd}, journal = {Journal of Statistical Software}, year = {2020}, volume = {94}, number = {14}, pages = {1--34}, doi = {10.18637/jss.v094.i14}, }"},{"path":"https://www.cvxgrp.org/CVXR/index.html","id":"cvxr-","dir":"","previous_headings":"","what":"Disciplined Convex Optimization","title":"Disciplined Convex Optimization","text":"CVXR provides object-oriented modeling language convex optimization, similar CVXPY, CVX, YALMIP, Convex.jl. allows formulate convex optimization problems natural mathematical syntax rather restrictive standard form required solvers. specify objective set constraints combining constants, variables, parameters using library functions known mathematical properties. CVXR applies signed disciplined convex programming (DCP) verify problem’s convexity. verified, problem converted standard conic form passed appropriate backend solver. version ground-rewrite built S7 object system, designed mirror CVXPY 1.9.1 closely. ~4–5x faster previous S4-based release, ships 15 solvers (4 built-), supports DCP, DGP, DQCP, disciplined nonlinear programming (DNLP), complex variables, mixed-integer programming, warm-starting, derivative / sensitivity-analysis API. tutorials, worked examples, full story, visit CVXR website.","code":""},{"path":"https://www.cvxgrp.org/CVXR/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Disciplined Convex Optimization","text":"Install released version CRAN: install development version GitHub:","code":"install.packages(\"CVXR\") # install.packages(\"pak\") pak::pak(\"cvxgrp/CVXR\")"},{"path":"https://www.cvxgrp.org/CVXR/index.html","id":"quick-example","dir":"","previous_headings":"","what":"Quick example","title":"Disciplined Convex Optimization","text":"","code":"library(CVXR) # Data set.seed(42) n <- 50; p <- 10 X <- matrix(rnorm(n * p), n, p) beta_true <- c(rep(1, 5), rep(0, 5)) y <- X %*% beta_true + rnorm(n, sd = 0.5) # Problem beta <- Variable(p) objective <- Minimize(sum_squares(y - X %*% beta) + 0.1 * p_norm(beta, 1)) prob <- Problem(objective) # Solve (Clarabel is the default solver) result <- psolve(prob) result # optimal value estimated <- value(beta) # coefficient estimates"},{"path":"https://www.cvxgrp.org/CVXR/index.html","id":"documentation","dir":"","previous_headings":"","what":"Documentation","title":"Disciplined Convex Optimization","text":"Tutorials examples: https://cvxr.rbind.io Package reference: https://www.cvxgrp.org/CVXR/ Paper: Fu, Narasimhan, Boyd (2020). “CVXR: R Package Disciplined Convex Optimization.” Journal Statistical Software, 94(14), 1–34. doi:10.18637/jss.v094.i14 use CVXR work, please cite paper (citation(\"CVXR\")).","code":""},{"path":"https://www.cvxgrp.org/CVXR/index.html","id":"license","dir":"","previous_headings":"","what":"License","title":"Disciplined Convex Optimization","text":"Apache License 2.0","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/And.html","id":null,"dir":"Reference","previous_headings":"","what":"Logical AND — And","title":"Logical AND — And","text":"Returns 1 arguments equal 1, 0 otherwise. two operands, can also written & operator: x & y.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/And.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logical AND — And","text":"","code":"And(..., id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/And.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logical AND — And","text":"... Two boolean Variables logic expressions. id Optional integer ID (internal use).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/And.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logical AND — And","text":"expression.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/And.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Logical AND — And","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(boolean = TRUE) y <- Variable(boolean = TRUE) both <- x & y # operator syntax both <- And(x, y) # functional syntax all3 <- And(x, y, z) # n-ary } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/CVXR-package.html","id":null,"dir":"Reference","previous_headings":"","what":"CVXR: Disciplined Convex Optimization — CVXR-package","title":"CVXR: Disciplined Convex Optimization — CVXR-package","text":"object-oriented modeling language disciplined convex programming (DCP) described Fu, Narasimhan, Boyd (2020, doi:10.18637/jss.v094.i14 ). allows user formulate convex optimization problems natural way following mathematical convention DCP rules. system analyzes problem, verifies convexity, converts canonical form, hands appropriate solver obtain solution. version uses S7 object system improved performance maintainability.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/CVXR-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"CVXR: Disciplined Convex Optimization — CVXR-package","text":"Maintainer: Anqi Fu anqif@alumni.stanford.edu Authors: Anqi Fu anqif@alumni.stanford.edu Balasubramanian Narasimhan naras@stat.stanford.edu Steven Diamond John Miller contributors: Stephen Boyd boyd@stanford.edu [contributor]","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/CallbackParam.html","id":null,"dir":"Reference","previous_headings":"","what":"Callback Parameter — CallbackParam","title":"Callback Parameter — CallbackParam","text":"Parameter whose value computed user-supplied callback function rather stored explicitly. Mirrors CVXPY's cp.CallbackParam (cvxpy/expressions/constants/callback_param.py).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/CallbackParam.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Callback Parameter — CallbackParam","text":"","code":"CallbackParam( callback, shape = c(1L, 1L), name = NULL, id = NULL, latex_name = NULL, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/CallbackParam.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Callback Parameter — CallbackParam","text":"callback function (arguments) returning parameter's numeric value. Re-evaluated every read value(param). shape Integer vector length 1 2 giving parameter dimensions. Defaults c(1, 1) (scalar). name Optional character string name. id Optional integer ID. NULL, unique ID generated. latex_name Optional LaTeX name visualisation. ... Parameter attributes (e.g., nonneg, nonpos).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/CallbackParam.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Callback Parameter — CallbackParam","text":"CallbackParam object (subclass Parameter).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/CallbackParam.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Callback Parameter — CallbackParam","text":"call value(param) re-evaluates callback validates returned numeric parameter's shape attribute domain. Setting via value(param) <- v allowed signals error.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/CallbackParam.html","id":"dpp-use","dir":"Reference","previous_headings":"","what":"DPP use","title":"Callback Parameter — CallbackParam","text":"p q scalar Parameters, expression p * q DPP. Wrapping CallbackParam, yields DPP-compliant Parameter whose value tracks p q automatically.","code":"pq <- CallbackParam(callback = function() value(p) * value(q))"},{"path":"https://www.cvxgrp.org/CVXR/reference/CallbackParam.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Callback Parameter — CallbackParam","text":"","code":"p <- Parameter(); value(p) <- 2 q <- Parameter(); value(q) <- 3 pq <- CallbackParam(callback = function() value(p) * value(q)) value(pq) # evaluates the callback => 6 #> [,1] #> [1,] 6"},{"path":"https://www.cvxgrp.org/CVXR/reference/Constant.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Constant Expression — Constant","title":"Create a Constant Expression — Constant","text":"Wraps numeric value CVXR constant use optimization expressions. Constants typically created implicitly combining numeric values CVXR expressions via arithmetic operators.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Constant.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Constant Expression — Constant","text":"","code":"Constant(value, name = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Constant.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Constant Expression — Constant","text":"value numeric scalar, vector, matrix, sparse matrix. name Optional character string name.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Constant.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Constant Expression — Constant","text":"Constant object (inherits Leaf Expression).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Constant.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a Constant Expression — Constant","text":"","code":"c1 <- Constant(5) c2 <- Constant(matrix(1:6, 2, 3))"},{"path":"https://www.cvxgrp.org/CVXR/reference/DCPError.html","id":null,"dir":"Reference","previous_headings":"","what":"DCP Error condition — DCPError","title":"DCP Error condition — DCPError","text":"Creates custom R condition class \"DCPError\" disciplined convex programming violations.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/DCPError.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"DCP Error condition — DCPError","text":"","code":"DCPError(message, call = sys.call(-1L))"},{"path":"https://www.cvxgrp.org/CVXR/reference/DCPError.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"DCP Error condition — DCPError","text":"message Character error message call call include condition (default: caller's call)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/DCPError.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"DCP Error condition — DCPError","text":"condition object class c(\"DCPError\", \"error\", \"condition\")","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagMat.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract Diagonal from a Matrix — DiagMat","title":"Extract Diagonal from a Matrix — DiagMat","text":"Extracts k-th diagonal square matrix column vector.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagMat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract Diagonal from a Matrix — DiagMat","text":"","code":"DiagMat(x, k = 0L, id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagMat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract Diagonal from a Matrix — DiagMat","text":"x CVXR expression (square matrix). k Integer diagonal offset. k = 0 (default) main diagonal, k > 0 , k < 0 . id Optional integer ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagMat.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract Diagonal from a Matrix — DiagMat","text":"DiagMat expression shape c(n - abs(k), 1).","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagVec.html","id":null,"dir":"Reference","previous_headings":"","what":"Vector to Diagonal Matrix — DiagVec","title":"Vector to Diagonal Matrix — DiagVec","text":"Constructs diagonal matrix column vector. k != 0, vector placed k-th super- sub-diagonal.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagVec.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Vector to Diagonal Matrix — DiagVec","text":"","code":"DiagVec(x, k = 0L, id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagVec.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Vector to Diagonal Matrix — DiagVec","text":"x CVXR expression (column vector). k Integer diagonal offset. k = 0 (default) main diagonal, k > 0 , k < 0 . id Optional integer ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/DiagVec.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Vector to Diagonal Matrix — DiagVec","text":"DiagVec expression shape c(n + abs(k), n + abs(k)).","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Equality.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an Equality Constraint — Equality","title":"Create an Equality Constraint — Equality","text":"Constrains two expressions equal elementwise: \\(lhs = rhs\\). Typically created via == operator CVXR expressions.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Equality.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an Equality Constraint — Equality","text":"","code":"Equality(lhs, rhs, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Equality.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an Equality Constraint — Equality","text":"lhs CVXR expression (left-hand side). rhs CVXR expression (right-hand side). constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Equality.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an Equality Constraint — Equality","text":"Equality constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/ExpCone.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an Exponential Cone Constraint — ExpCone","title":"Create an Exponential Cone Constraint — ExpCone","text":"Constrains \\((x, y, z)\\) lie exponential cone: $$K = \\{(x,y,z) \\mid y \\exp(x/y) \\le z,\\; y > 0\\}$$","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ExpCone.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an Exponential Cone Constraint — ExpCone","text":"","code":"ExpCone(x_expr, y_expr, z_expr, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/ExpCone.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an Exponential Cone Constraint — ExpCone","text":"x_expr CVXR expression. y_expr CVXR expression. z_expr CVXR expression. constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ExpCone.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an Exponential Cone Constraint — ExpCone","text":"ExpCone constraint object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ExpCone.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Create an Exponential Cone Constraint — ExpCone","text":"three arguments must affine, real, shape.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/FiniteSet.html","id":null,"dir":"Reference","previous_headings":"","what":"FiniteSet Constraint — FiniteSet","title":"FiniteSet Constraint — FiniteSet","text":"Constrain entry Expression take value given finite set real numbers.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/FiniteSet.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"FiniteSet Constraint — FiniteSet","text":"","code":"FiniteSet(expre, vec, ineq_form = FALSE, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/FiniteSet.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"FiniteSet Constraint — FiniteSet","text":"expre affine Expression. vec numeric vector (set) allowed values. ineq_form Logical; controls MIP canonicalization strategy. FALSE (default), uses equality formulation (one-hot binary). TRUE, uses inequality formulation (sorted differences + ordering). constr_id Optional integer constraint ID (internal use).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/FiniteSet.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"FiniteSet Constraint — FiniteSet","text":"FiniteSet constraint.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Inequality.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an Inequality Constraint — Inequality","title":"Create an Inequality Constraint — Inequality","text":"Constrains left-hand side less equal right-hand side elementwise: \\(lhs \\le rhs\\). Typically created via <= operator CVXR expressions.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Inequality.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an Inequality Constraint — Inequality","text":"","code":"Inequality(lhs, rhs, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Inequality.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an Inequality Constraint — Inequality","text":"lhs CVXR expression (left-hand side). rhs CVXR expression (right-hand side). constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Inequality.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an Inequality Constraint — Inequality","text":"Inequality constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Maximize.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Maximization Objective — Maximize","title":"Create a Maximization Objective — Maximize","text":"Specifies objective expression maximized. expression must concave scalar DCP-compliant problem.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Maximize.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Maximization Objective — Maximize","text":"","code":"Maximize(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Maximize.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Maximization Objective — Maximize","text":"expr CVXR expression numeric value maximize.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Maximize.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Maximization Objective — Maximize","text":"Maximize object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Maximize.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a Maximization Objective — Maximize","text":"","code":"x <- Variable() obj <- Maximize(-x^2 + 1)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Minimize.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Minimization Objective — Minimize","title":"Create a Minimization Objective — Minimize","text":"Specifies objective expression minimized. expression must convex scalar DCP-compliant problem.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Minimize.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Minimization Objective — Minimize","text":"","code":"Minimize(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Minimize.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Minimization Objective — Minimize","text":"expr CVXR expression numeric value minimize.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Minimize.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Minimization Objective — Minimize","text":"Minimize object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Minimize.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a Minimization Objective — Minimize","text":"","code":"x <- Variable() obj <- Minimize(x^2 + 1)"},{"path":"https://www.cvxgrp.org/CVXR/reference/NonNeg.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Non-Negative Constraint — NonNeg","title":"Create a Non-Negative Constraint — NonNeg","text":"Constrains expression non-negative elementwise: \\(x \\ge 0\\).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/NonNeg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Non-Negative Constraint — NonNeg","text":"","code":"NonNeg(expr, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/NonNeg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Non-Negative Constraint — NonNeg","text":"expr CVXR expression. constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/NonNeg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Non-Negative Constraint — NonNeg","text":"NonNeg constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/NonPos.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Non-Positive Constraint — NonPos","title":"Create a Non-Positive Constraint — NonPos","text":"Constrains expression non-positive elementwise: \\(x \\le 0\\).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/NonPos.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Non-Positive Constraint — NonPos","text":"","code":"NonPos(expr, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/NonPos.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Non-Positive Constraint — NonPos","text":"expr CVXR expression. constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/NonPos.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Non-Positive Constraint — NonPos","text":"NonPos constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Not.html","id":null,"dir":"Reference","previous_headings":"","what":"Logical NOT — Not","title":"Logical NOT — Not","text":"Returns 1 - x, flipping 0 1 1 0. Can also written ! operator: !x.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Not.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logical NOT — Not","text":"","code":"Not(x, id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Not.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logical NOT — Not","text":"x boolean Variable logic expression. id Optional integer ID (internal use).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Not.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logical NOT — Not","text":"expression.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Not.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Logical NOT — Not","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(boolean = TRUE) not_x <- !x # operator syntax not_x <- Not(x) # functional syntax } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/Or.html","id":null,"dir":"Reference","previous_headings":"","what":"Logical OR — Or","title":"Logical OR — Or","text":"Returns 1 least one argument equals 1, 0 otherwise. two operands, can also written | operator: x | y.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Or.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logical OR — Or","text":"","code":"Or(..., id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Or.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logical OR — Or","text":"... Two boolean Variables logic expressions. id Optional integer ID (internal use).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Or.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logical OR — Or","text":"expression.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Or.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Logical OR — Or","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(boolean = TRUE) y <- Variable(boolean = TRUE) either <- x | y # operator syntax either <- Or(x, y) # functional syntax any3 <- Or(x, y, z) # n-ary } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/PSD.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Positive Semidefinite Constraint — PSD","title":"Create a Positive Semidefinite Constraint — PSD","text":"Constrains square matrix expression positive semidefinite (PSD): \\(X \\succeq 0\\). expression must square.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PSD.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Positive Semidefinite Constraint — PSD","text":"","code":"PSD(expr, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/PSD.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Positive Semidefinite Constraint — PSD","text":"expr CVXR expression representing square matrix. constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PSD.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Positive Semidefinite Constraint — PSD","text":"PSD constraint object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Parameter.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Parameter — Parameter","title":"Create a Parameter — Parameter","text":"Constructs parameter whose numeric value can changed without re-canonicalizing problem. Parameters treated constants DCP purposes value can updated solves.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Parameter.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Parameter — Parameter","text":"","code":"Parameter( shape = c(1L, 1L), name = NULL, value = NULL, id = NULL, latex_name = NULL, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/Parameter.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Parameter — Parameter","text":"shape Integer vector length 1 2 giving parameter dimensions. scalar n interpreted c(n, 1). Defaults c(1, 1) (scalar). name Optional character string name. NULL, automatic name \"param\" generated. value Optional initial numeric value. id Optional integer ID. latex_name Optional character string giving custom LaTeX name use visualizations. example, \"\\\\gamma\". NULL (default), visualizations auto-generate LaTeX name. ... Additional attributes: nonneg, nonpos, etc.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Parameter.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Parameter — Parameter","text":"Parameter object (inherits Leaf Expression).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Parameter.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a Parameter — Parameter","text":"","code":"p <- Parameter() value(p) <- 5 p_vec <- Parameter(3, nonneg = TRUE) gamma <- Parameter(1, name = \"gamma\", latex_name = \"\\\\gamma\")"},{"path":"https://www.cvxgrp.org/CVXR/reference/PartialProblem.html","id":null,"dir":"Reference","previous_headings":"","what":"Partial optimization of a Problem — PartialProblem","title":"Partial optimization of a Problem — PartialProblem","text":"PartialProblem Expression represents optimal value inner Problem function variables choose optimise . Build one partial_optimize() rather constructing class directly.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PartialProblem.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Partial optimization of a Problem — PartialProblem","text":"","code":"PartialProblem( prob, opt_vars, dont_opt_vars, solver = NULL, solve_kwargs = list(), id = NULL )"},{"path":"https://www.cvxgrp.org/CVXR/reference/PowCone3D.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a 3D Power Cone Constraint — PowCone3D","title":"Create a 3D Power Cone Constraint — PowCone3D","text":"Constrains \\((x, y, z)\\) lie 3D power cone: $$x^\\alpha \\cdot y^{1-\\alpha} \\ge |z|, \\quad x \\ge 0, \\; y \\ge 0$$","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PowCone3D.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a 3D Power Cone Constraint — PowCone3D","text":"","code":"PowCone3D(x_expr, y_expr, z_expr, alpha, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/PowCone3D.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a 3D Power Cone Constraint — PowCone3D","text":"x_expr CVXR expression. y_expr CVXR expression. z_expr CVXR expression. alpha CVXR expression numeric value \\((0, 1)\\). constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PowCone3D.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a 3D Power Cone Constraint — PowCone3D","text":"PowCone3D constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/PowConeND.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an N-Dimensional Power Cone Constraint — PowConeND","title":"Create an N-Dimensional Power Cone Constraint — PowConeND","text":"Constrains \\((W, z)\\) lie N-dimensional power cone: $$\\prod W_i^{\\alpha_i} \\ge |z|, \\quad W \\ge 0$$ \\(\\alpha_i > 0\\) \\(\\sum \\alpha_i = 1\\).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PowConeND.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an N-Dimensional Power Cone Constraint — PowConeND","text":"","code":"PowConeND(W, z, alpha, axis = 2L, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/PowConeND.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an N-Dimensional Power Cone Constraint — PowConeND","text":"W CVXR expression (vector matrix). z CVXR expression (scalar vector). alpha CVXR expression positive entries summing 1 along specified axis. axis Integer, 2 (default, column-wise) 1 (row-wise). constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PowConeND.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an N-Dimensional Power Cone Constraint — PowConeND","text":"PowConeND constraint object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/PowConeND.html","id":"known-limitations","dir":"Reference","previous_headings":"","what":"Known limitations","title":"Create an N-Dimensional Power Cone Constraint — PowConeND","text":"R clarabel solver currently support PowConeND cone specification. Problems involving PowConeND (e.g., exact geometric mean 2 arguments) use SCS MOSEK solver, use approximation-based atoms (e.g., geo_mean(x, approx = TRUE)).","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Problem.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an Optimization Problem — Problem","title":"Create an Optimization Problem — Problem","text":"Constructs convex optimization problem objective list constraints. Use psolve solve problem.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Problem.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an Optimization Problem — Problem","text":"","code":"Problem(objective, constraints = list())"},{"path":"https://www.cvxgrp.org/CVXR/reference/Problem.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an Optimization Problem — Problem","text":"objective Minimize Maximize object. constraints list Constraint objects (e.g., created ==, <=, >= operators expressions). Defaults empty list (unconstrained).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Problem.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an Optimization Problem — Problem","text":"Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Problem.html","id":"known-limitations","dir":"Reference","previous_headings":"","what":"Known limitations","title":"Create an Optimization Problem — Problem","text":"Problems must contain least one Variable. Zero-variable problems (e.g., minimizing constant) cause internal error reduction pipeline.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Problem.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create an Optimization Problem — Problem","text":"","code":"x <- Variable(2) prob <- Problem(Minimize(sum_entries(x)), list(x >= 1))"},{"path":"https://www.cvxgrp.org/CVXR/reference/SOC.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Second-Order Cone Constraint — SOC","title":"Create a Second-Order Cone Constraint — SOC","text":"Constrains \\(\\|X_i\\|_2 \\le t_i\\) column row \\(\\), t vector X matrix.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SOC.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Second-Order Cone Constraint — SOC","text":"","code":"SOC(t, X, axis = 2L, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/SOC.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Second-Order Cone Constraint — SOC","text":"t CVXR expression (scalar vector) representing upper bound. X CVXR expression (vector matrix) whose columns/rows bounded. axis Integer, 2 (default, column-wise) 1 (row-wise). Determines whether columns (2) rows (1) X define individual cones. constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SOC.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Second-Order Cone Constraint — SOC","text":"SOC constraint object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SizeMetrics.html","id":null,"dir":"Reference","previous_headings":"","what":"Problem Size Metrics — SizeMetrics","title":"Problem Size Metrics — SizeMetrics","text":"Reports scalar-counts data-dimension metrics Problem. Constructed size_metrics; end users normally call size_metrics(prob) rather constructor directly.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SizeMetrics.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Problem Size Metrics — SizeMetrics","text":"","code":"SizeMetrics( num_scalar_variables = 0L, num_scalar_data = 0L, num_scalar_eq_constr = 0L, num_scalar_leq_constr = 0L, max_data_dimension = 0L, max_big_small_squared = 0 )"},{"path":"https://www.cvxgrp.org/CVXR/reference/SizeMetrics.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Problem Size Metrics — SizeMetrics","text":"num_scalar_variables Total scalar entries across variables problem. num_scalar_data Total scalar entries across constants parameters. num_scalar_eq_constr Total scalar entries equality (Equality, Zero) constraints. num_scalar_leq_constr Total scalar entries inequality (Inequality, NonNeg, NonPos) constraints. max_data_dimension Largest single dimension across data block (constant parameter). max_big_small_squared Maximum big * small^2 data blocks, big/small larger/ smaller dimension block.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SizeMetrics.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Problem Size Metrics — SizeMetrics","text":"SizeMetrics object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SolverError.html","id":null,"dir":"Reference","previous_headings":"","what":"Solver Error condition — SolverError","title":"Solver Error condition — SolverError","text":"Creates custom R condition class \"SolverError\" solver failures.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SolverError.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Solver Error condition — SolverError","text":"","code":"SolverError(message, call = sys.call(-1L))"},{"path":"https://www.cvxgrp.org/CVXR/reference/SolverError.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Solver Error condition — SolverError","text":"message Character error message call call include condition (default: caller's call)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/SolverError.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Solver Error condition — SolverError","text":"condition object class c(\"SolverError\", \"error\", \"condition\")","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Variable.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an Optimization Variable — Variable","title":"Create an Optimization Variable — Variable","text":"Constructs variable used CVXR optimization problem. Variables decision variables solver optimizes .","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Variable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an Optimization Variable — Variable","text":"","code":"Variable( shape = c(1L, 1L), name = NULL, value = NULL, var_id = NULL, latex_name = NULL, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/Variable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an Optimization Variable — Variable","text":"shape Integer vector length 1 2 giving variable dimensions. scalar n interpreted c(n, 1). Defaults c(1, 1) (scalar). name Optional character string name variable. NULL, automatic name \"var\" generated. value Optional numeric initial value (scalar, vector, matrix matching shape). Validated projected onto attribute domain via path value(var) <- val. var_id Optional integer ID. NULL, unique ID generated. latex_name Optional character string giving custom LaTeX name use visualizations. example, \"\\\\mathbf{x}\". NULL (default), visualizations auto-generate LaTeX name. ... Additional attributes: nonneg, nonpos, PSD, NSD, symmetric, boolean, integer, etc.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Variable.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an Optimization Variable — Variable","text":"Variable object (inherits Leaf Expression).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Variable.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create an Optimization Variable — Variable","text":"","code":"x <- Variable(3) # 3x1 column vector X <- Variable(c(2, 3)) # 2x3 matrix y <- Variable(2, nonneg = TRUE) # non-negative variable z <- Variable(3, name = \"z\", latex_name = \"\\\\mathbf{z}\") # custom LaTeX"},{"path":"https://www.cvxgrp.org/CVXR/reference/Xor.html","id":null,"dir":"Reference","previous_headings":"","what":"Logical XOR — Xor","title":"Logical XOR — Xor","text":"two arguments: result 1 iff exactly one 1. n arguments: result 1 iff odd number 1 (parity).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Xor.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logical XOR — Xor","text":"","code":"Xor(..., id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Xor.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logical XOR — Xor","text":"... Two boolean Variables logic expressions. id Optional integer ID (internal use).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Xor.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logical XOR — Xor","text":"Xor expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Xor.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Logical XOR — Xor","text":"Note: R's ^ operator used power(), Xor functional syntax .","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/Xor.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Logical XOR — Xor","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(boolean = TRUE) y <- Variable(boolean = TRUE) exclusive <- Xor(x, y) } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/Zero.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Zero Constraint — Zero","title":"Create a Zero Constraint — Zero","text":"Constrains expression equal zero elementwise: \\(x = 0\\).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Zero.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Zero Constraint — Zero","text":"","code":"Zero(expr, constr_id = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/Zero.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Zero Constraint — Zero","text":"expr CVXR expression. constr_id Optional integer constraint ID.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/Zero.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Zero Constraint — Zero","text":"Zero constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/apply_param_jac.html","id":null,"dir":"Reference","previous_headings":"","what":"Adjoint of the parameter -> (c, d, A, b) tensor map — apply_param_jac","title":"Adjoint of the parameter -> (c, d, A, b) tensor map — apply_param_jac","text":"Given derivatives (delc, delA, delb) downstream objective respect conic problem data, returns derivatives respect Parameter (keyed parameter id). Mirrors ParamConeProg.apply_param_jac cone_matrix_stuffing.py:242-280.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/apply_param_jac.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Adjoint of the parameter -> (c, d, A, b) tensor map — apply_param_jac","text":"","code":"apply_param_jac(param_prog, delc, delA, delb, active_params = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/apply_param_jac.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Adjoint of the parameter -> (c, d, A, b) tensor map — apply_param_jac","text":"param_prog ParamConeProg. delc Numeric vector length x_length. delA Sparse matrix shape (m, x_length) (shape conic constraint matrix ). delb Numeric vector length m. active_params Optional character vector parameter ids restrict output . Default: parameters.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/apply_param_jac.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Adjoint of the parameter -> (c, d, A, b) tensor map — apply_param_jac","text":"named list mapping .character(param_id) numeric array parameter's shape.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/apply_param_jac.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Adjoint of the parameter -> (c, d, A, b) tensor map — apply_param_jac","text":"Reusing tensor identity apply_parameters exploits forward direction: c = c_tensor[1:x_length, ] %*% p (omitting offset row), vec() // b = A_tensor %*% p (column-major; b last block), adjoint just transpose tensors applied stacked (delc, vec(delA), delb).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/as_cvxr_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert a value to a CVXR Expression — as_cvxr_expr","title":"Convert a value to a CVXR Expression — as_cvxr_expr","text":"Wraps numeric vectors, matrices, Matrix package objects CVXR Constant objects. Values already CVXR expressions returned unchanged.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/as_cvxr_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert a value to a CVXR Expression — as_cvxr_expr","text":"","code":"as_cvxr_expr(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/as_cvxr_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert a value to a CVXR Expression — as_cvxr_expr","text":"x numeric vector, matrix, Matrix::Matrix object, Matrix::sparseVector object, CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/as_cvxr_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert a value to a CVXR Expression — as_cvxr_expr","text":"CVXR expression (either input unchanged wrapped Constant).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/as_cvxr_expr.html","id":"matrix-package-interoperability","dir":"Reference","previous_headings":"","what":"Matrix package interoperability","title":"Convert a value to a CVXR Expression — as_cvxr_expr","text":"Objects Matrix package (dgCMatrix, dgeMatrix, ddiMatrix, sparseVector, etc.) S4 classes. S4 dispatch preempts S7/S3 dispatch, raw Matrix objects used directly CVXR operators (+, -, *, /, %*%, >=, ==, etc.). Use as_cvxr_expr() wrap Matrix object CVXR Constant combining CVXR variables expressions. preserves sparsity (unlike .matrix(), densifies). Base R matrix numeric objects work natively CVXR operators — wrapping needed.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/as_cvxr_expr.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert a value to a CVXR Expression — as_cvxr_expr","text":"","code":"x <- Variable(3) ## Sparse Matrix needs as_cvxr_expr() for CVXR operator dispatch: A <- Matrix::sparseMatrix(i = 1:3, j = 1:3, x = 1.0) expr <- as_cvxr_expr(A) %*% x ## All operators work with wrapped Matrix objects: y <- Variable(c(3, 3)) expr2 <- as_cvxr_expr(A) + y constr <- as_cvxr_expr(A) >= y ## Base R matrix works natively (no wrapping needed): D <- matrix(1:9, 3, 3) expr3 <- D %*% x"},{"path":"https://www.cvxgrp.org/CVXR/reference/atom_domain.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Atom-Specific Domain Constraints — atom_domain","title":"Get Atom-Specific Domain Constraints — atom_domain","text":"Get Atom-Specific Domain Constraints","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/atom_domain.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Atom-Specific Domain Constraints — atom_domain","text":"","code":"atom_domain(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/atom_domain.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Atom-Specific Domain Constraints — atom_domain","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/atom_domain.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Atom-Specific Domain Constraints — atom_domain","text":"List Constraint objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/atoms.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Atoms in an Expression — atoms","title":"Get the Atoms in an Expression — atoms","text":"Get Atoms Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/atoms.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Atoms in an Expression — atoms","text":"","code":"atoms(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/atoms.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Atoms in an Expression — atoms","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/atoms.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Atoms in an Expression — atoms","text":"List atom objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/available_solvers.html","id":null,"dir":"Reference","previous_headings":"","what":"List available solvers — available_solvers","title":"List available solvers — available_solvers","text":"Returns names installed solvers currently excluded. Use exclude_solvers() temporarily disable solvers.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/available_solvers.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"List available solvers — available_solvers","text":"","code":"available_solvers() exclude_solvers(solvers) include_solvers(solvers) set_excluded_solvers(solvers)"},{"path":"https://www.cvxgrp.org/CVXR/reference/available_solvers.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"List available solvers — available_solvers","text":"solvers character vector solver names.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/available_solvers.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"List available solvers — available_solvers","text":"character vector solver names. current exclusion list (character vector), invisibly.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/available_solvers.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"List available solvers — available_solvers","text":"exclude_solvers(): Add solvers exclusion list include_solvers(): Remove solvers exclusion list set_excluded_solvers(): Replace entire exclusion list","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/backward.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute the gradient of a solution with respect to Parameters — backward","title":"Compute the gradient of a solution with respect to Parameters — backward","text":"Differentiates solution map problem: populates gradient slot Parameter sensitivity scalar-valued function variables (defaulting sum--x loss; override per variable setting gradient(variable) <- calling) respect parameter. Mirrors cvxpy.Problem.backward().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/backward.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute the gradient of a solution with respect to Parameters — backward","text":"","code":"backward(problem)"},{"path":"https://www.cvxgrp.org/CVXR/reference/backward.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute the gradient of a solution with respect to Parameters — backward","text":"problem solved Problem.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/backward.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compute the gradient of a solution with respect to Parameters — backward","text":"problem (piping); side-effect sets gradient(param) parameter.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/backward.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Compute the gradient of a solution with respect to Parameters — backward","text":"Must called psolve() requires_grad = TRUE.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/bmat.html","id":null,"dir":"Reference","previous_headings":"","what":"Construct a Block Matrix — bmat","title":"Construct a Block Matrix — bmat","text":"Takes list lists. internal list stacked horizontally. internal lists stacked vertically.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/bmat.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Construct a Block Matrix — bmat","text":"","code":"bmat(block_lists)"},{"path":"https://www.cvxgrp.org/CVXR/reference/bmat.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Construct a Block Matrix — bmat","text":"block_lists list lists Expression objects (numerics). inner list forms one block row.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/bmat.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Construct a Block Matrix — bmat","text":"Expression representing block matrix.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/broadcast_args.html","id":null,"dir":"Reference","previous_headings":"","what":"Broadcast two expressions for binary operations — broadcast_args","title":"Broadcast two expressions for binary operations — broadcast_args","text":"Broadcast two expressions binary operations","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/broadcast_args.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Broadcast two expressions for binary operations — broadcast_args","text":"","code":"broadcast_args(lh_expr, rh_expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/broadcast_args.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Broadcast two expressions for binary operations — broadcast_args","text":"lh_expr Left-hand expression rh_expr Right-hand expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/broadcast_args.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Broadcast two expressions for binary operations — broadcast_args","text":"List two expressions compatible shapes","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/canonical_form.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Canonical Form — canonical_form","title":"Get the Canonical Form — canonical_form","text":"Get Canonical Form","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/canonical_form.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Canonical Form — canonical_form","text":"","code":"canonical_form(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/canonical_form.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Canonical Form — canonical_form","text":"x canonicalizable object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/canonical_form.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Canonical Form — canonical_form","text":"List (expression, constraints).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/canonicalize.html","id":null,"dir":"Reference","previous_headings":"","what":"Canonicalize an Expression — canonicalize","title":"Canonicalize an Expression — canonicalize","text":"Canonicalize Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/canonicalize.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Canonicalize an Expression — canonicalize","text":"","code":"canonicalize(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/canonicalize.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Canonicalize an Expression — canonicalize","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/canonicalize.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Canonicalize an Expression — canonicalize","text":"List canonicalized expression constraints.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cdiac.html","id":null,"dir":"Reference","previous_headings":"","what":"Global Monthly and Annual Temperature Anomalies (degrees C), 1850-2015 (Relative to the 1961-1990 Mean) (May 2016) — cdiac","title":"Global Monthly and Annual Temperature Anomalies (degrees C), 1850-2015 (Relative to the 1961-1990 Mean) (May 2016) — cdiac","text":"Global Monthly Annual Temperature Anomalies (degrees C), 1850-2015 (Relative 1961-1990 Mean) (May 2016)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cdiac.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Global Monthly and Annual Temperature Anomalies (degrees C), 1850-2015 (Relative to the 1961-1990 Mean) (May 2016) — cdiac","text":"","code":"cdiac"},{"path":"https://www.cvxgrp.org/CVXR/reference/cdiac.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Global Monthly and Annual Temperature Anomalies (degrees C), 1850-2015 (Relative to the 1961-1990 Mean) (May 2016) — cdiac","text":"data frame 166 rows 14 variables: year Year jan Anomaly month January feb Anomaly month February mar Anomaly month March apr Anomaly month April may Anomaly month May jun Anomaly month June jul Anomaly month July aug Anomaly month August sep Anomaly month September oct Anomaly month October nov Anomaly month November dec Anomaly month December annual Annual anomaly year","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cdiac.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Global Monthly and Annual Temperature Anomalies (degrees C), 1850-2015 (Relative to the 1961-1990 Mean) (May 2016) — cdiac","text":"https://ess-dive.lbl.gov/","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cdiac.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Global Monthly and Annual Temperature Anomalies (degrees C), 1850-2015 (Relative to the 1961-1990 Mean) (May 2016) — cdiac","text":"https://ess-dive.lbl.gov/","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ceil_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Elementwise Ceiling — ceil_expr","title":"Elementwise Ceiling — ceil_expr","text":"Returns ceiling (smallest integer >= x) element. atom quasiconvex quasiconcave convex concave, can used DQCP problems (solved qcp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ceil_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise Ceiling — ceil_expr","text":"","code":"ceil_expr(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/ceil_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise Ceiling — ceil_expr","text":"x CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ceil_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise Ceiling — ceil_expr","text":"Ceil expression.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/condition_number.html","id":null,"dir":"Reference","previous_headings":"","what":"Condition number of a PSD matrix — condition_number","title":"Condition number of a PSD matrix — condition_number","text":"Computes condition number lambda_max() / lambda_min() positive semidefinite matrix . quasiconvex atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/condition_number.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Condition number of a PSD matrix — condition_number","text":"","code":"condition_number(A)"},{"path":"https://www.cvxgrp.org/CVXR/reference/condition_number.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Condition number of a PSD matrix — condition_number","text":"square matrix expression (must PSD)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/condition_number.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Condition number of a PSD matrix — condition_number","text":"expression representing condition number ","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cone_sizes.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Sizes of Individual Cones — cone_sizes","title":"Get the Sizes of Individual Cones — cone_sizes","text":"Get Sizes Individual Cones","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cone_sizes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Sizes of Individual Cones — cone_sizes","text":"","code":"cone_sizes(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cone_sizes.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Sizes of Individual Cones — cone_sizes","text":"x cone constraint object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cone_sizes.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Sizes of Individual Cones — cone_sizes","text":"Integer vector cone sizes.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/conj_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Elementwise Complex Conjugate — conj_expr","title":"Elementwise Complex Conjugate — conj_expr","text":"Returns complex conjugate expression. real expressions -op. R's native Conj() dispatches CVXR expressions via Complex S3 group handler.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/conj_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise Complex Conjugate — conj_expr","text":"","code":"conj_expr(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/conj_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise Complex Conjugate — conj_expr","text":"expr CVXR Expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/conj_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise Complex Conjugate — conj_expr","text":"Conj_ atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constants.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Constants in an Expression — constants","title":"Get the Constants in an Expression — constants","text":"Get Constants Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constants.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Constants in an Expression — constants","text":"","code":"constants(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/constants.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Constants in an Expression — constants","text":"x expression problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constants.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Constants in an Expression — constants","text":"List Constant objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constr_size.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Total Size of a Constraint — constr_size","title":"Get the Total Size of a Constraint — constr_size","text":"Get Total Size Constraint","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constr_size.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Total Size of a Constraint — constr_size","text":"","code":"constr_size(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/constr_size.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Total Size of a Constraint — constr_size","text":"x constraint object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constr_size.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Total Size of a Constraint — constr_size","text":"Integer.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constraints.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Problem Constraints (read-only) — constraints","title":"Get Problem Constraints (read-only) — constraints","text":"Returns copy problem's constraint list.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constraints.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Problem Constraints (read-only) — constraints","text":"","code":"constraints(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/constraints.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Problem Constraints (read-only) — constraints","text":"x Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constraints.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Problem Constraints (read-only) — constraints","text":"list constraint objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/constraints.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get Problem Constraints (read-only) — constraints","text":"Problem objects immutable: constraints modified construction. change constraints, create new Problem(). matches CVXPY's design problems immutable except Parameter value changes.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/constraints.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get Problem Constraints (read-only) — constraints","text":"","code":"x <- Variable(2) prob <- Problem(Minimize(sum_entries(x)), list(x >= 1)) length(constraints(prob)) # 1 #> [1] 1"},{"path":"https://www.cvxgrp.org/CVXR/reference/conv.html","id":null,"dir":"Reference","previous_headings":"","what":"1D discrete convolution — conv","title":"1D discrete convolution — conv","text":"1D discrete convolution","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/conv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"1D discrete convolution — conv","text":"","code":"conv(a, b)"},{"path":"https://www.cvxgrp.org/CVXR/reference/conv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"1D discrete convolution — conv","text":"Expression (vector, one must constant) b Expression (vector)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/conv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"1D discrete convolution — conv","text":"Convolve atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/convolve.html","id":null,"dir":"Reference","previous_headings":"","what":"1D discrete convolution (numpy-style) — convolve","title":"1D discrete convolution (numpy-style) — convolve","text":"convolve() CVXPY 1.9's preferred name conv (CVXPY's conv class deprecated favor convolve). CVXR Expression argument builds Convolve atom; plain numeric input computes numpy-style convolution atom (numpy.convolve(, b) == stats::convolve(, rev(b), type = \"open\")), numeric Expression paths agree.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/convolve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"1D discrete convolution (numpy-style) — convolve","text":"","code":"convolve(a, b)"},{"path":"https://www.cvxgrp.org/CVXR/reference/convolve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"1D discrete convolution (numpy-style) — convolve","text":", b Expressions numeric vectors; least one must constant building atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/convolve.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"1D discrete convolution (numpy-style) — convolve","text":"Convolve atom (expressions) numeric vector.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/convolve.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"1D discrete convolution (numpy-style) — convolve","text":"CVXR masks stats::convolve attached (R reports load). specifically want stats' circular cross-correlation options, call convolve directly.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cummax_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Cumulative maximum along an axis — cummax_expr","title":"Cumulative maximum along an axis — cummax_expr","text":"Cumulative maximum along axis","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cummax_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Cumulative maximum along an axis — cummax_expr","text":"","code":"cummax_expr(x, axis = 2L)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cummax_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Cumulative maximum along an axis — cummax_expr","text":"x Expression axis 1 (across rows) 2 (columns, default)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cummax_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Cumulative maximum along an axis — cummax_expr","text":"Cummax atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cumsum_axis.html","id":null,"dir":"Reference","previous_headings":"","what":"Cumulative sum along an axis — cumsum_axis","title":"Cumulative sum along an axis — cumsum_axis","text":"Cumulative sum along axis","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cumsum_axis.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Cumulative sum along an axis — cumsum_axis","text":"","code":"cumsum_axis(x, axis = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cumsum_axis.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Cumulative sum along an axis — cumsum_axis","text":"x Expression axis NULL (), 1 (across rows), 2 (columns)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cumsum_axis.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Cumulative sum along an axis — cumsum_axis","text":"Cumsum atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/curvature.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Expression Curvature — curvature","title":"Get Expression Curvature — curvature","text":"Returns DCP curvature expression string.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/curvature.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Expression Curvature — curvature","text":"","code":"curvature(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/curvature.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Expression Curvature — curvature","text":"x CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/curvature.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Expression Curvature — curvature","text":"Character: \"CONSTANT\", \"AFFINE\", \"CONVEX\", \"CONCAVE\", \"UNKNOWN\".","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/cvar.html","id":null,"dir":"Reference","previous_headings":"","what":"Conditional Value at Risk (CVaR) — cvar","title":"Conditional Value at Risk (CVaR) — cvar","text":"CVaR confidence level beta: average (1-beta) largest values.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvar.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Conditional Value at Risk (CVaR) — cvar","text":"","code":"cvar(x, beta)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvar.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Conditional Value at Risk (CVaR) — cvar","text":"x Expression (vector) beta Confidence level [0, 1)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvar.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Conditional Value at Risk (CVaR) — cvar","text":"Expression representing CVaR","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_diff.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute kth Order Differences of an Expression — cvxr_diff","title":"Compute kth Order Differences of an Expression — cvxr_diff","text":"Takes expression returns expression kth order differences along given axis. output shape input except size along specified axis reduced k.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_diff.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute kth Order Differences of an Expression — cvxr_diff","text":"","code":"cvxr_diff(x, k = 1L, axis = 2L)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_diff.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute kth Order Differences of an Expression — cvxr_diff","text":"x Expression numeric value. k Integer. number times values differenced. Default 1. (Mapped R's lag argument diff.default; use differences repeated differencing maps k .) axis Integer. axis along difference taken. 2 = along rows/columns (default), 1 = along columns/across rows.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_diff.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compute kth Order Differences of an Expression — cvxr_diff","text":"Expression representing kth order differences.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_mean.html","id":null,"dir":"Reference","previous_headings":"","what":"Mean of an expression — cvxr_mean","title":"Mean of an expression — cvxr_mean","text":"Computes arithmetic mean expression along axis.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_mean.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Mean of an expression — cvxr_mean","text":"","code":"cvxr_mean(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_mean.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Mean of an expression — cvxr_mean","text":"x Expression numeric value. axis NULL (), 1 (row-wise), 2 (column-wise). keepdims Logical; keep reduced dimension?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_mean.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Mean of an expression — cvxr_mean","text":"Expression representing mean.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_norm.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute a norm of an expression — cvxr_norm","title":"Compute a norm of an expression — cvxr_norm","text":"Compute norm expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_norm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute a norm of an expression — cvxr_norm","text":"","code":"cvxr_norm(x, p = 2, axis = NULL, keepdims = FALSE, max_denom = 1024L)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_norm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute a norm of an expression — cvxr_norm","text":"x Expression p Norm type: 1, 2, Inf, \"fro\" (Frobenius) axis NULL (), 0 (columns), 1 (rows) keepdims Logical max_denom Integer max denominator","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_norm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compute a norm of an expression — cvxr_norm","text":"norm atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_outer.html","id":null,"dir":"Reference","previous_headings":"","what":"Outer product of two vectors — cvxr_outer","title":"Outer product of two vectors — cvxr_outer","text":"Computes outer product x %*% t(y). inputs must vectors.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_outer.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Outer product of two vectors — cvxr_outer","text":"","code":"cvxr_outer(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_outer.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Outer product of two vectors — cvxr_outer","text":"x Expression numeric value (vector). y Expression numeric value (vector).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_outer.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Outer product of two vectors — cvxr_outer","text":"Expression shape (length(x), length(y)).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_promote.html","id":null,"dir":"Reference","previous_headings":"","what":"Promote a scalar expression to the given shape — cvxr_promote","title":"Promote a scalar expression to the given shape — cvxr_promote","text":"Promote scalar expression given shape","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_promote.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Promote a scalar expression to the given shape — cvxr_promote","text":"","code":"cvxr_promote(expr, shape)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_promote.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Promote a scalar expression to the given shape — cvxr_promote","text":"expr expression shape Target shape","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_promote.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Promote a scalar expression to the given shape — cvxr_promote","text":"expression (unchanged already right shape) Promote atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_std.html","id":null,"dir":"Reference","previous_headings":"","what":"Standard deviation of an expression — cvxr_std","title":"Standard deviation of an expression — cvxr_std","text":"Computes standard deviation expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_std.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Standard deviation of an expression — cvxr_std","text":"","code":"cvxr_std(x, axis = NULL, keepdims = FALSE, ddof = 0) std(x, axis = NULL, keepdims = FALSE, ddof = 0)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_std.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Standard deviation of an expression — cvxr_std","text":"x Expression numeric value. axis NULL (), 1 (row-wise), 2 (column-wise). keepdims Logical; keep reduced dimension? ddof Degrees freedom correction (default 0, population std).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_std.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Standard deviation of an expression — cvxr_std","text":"Expression representing standard deviation.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_var.html","id":null,"dir":"Reference","previous_headings":"","what":"Variance of an expression — cvxr_var","title":"Variance of an expression — cvxr_var","text":"Computes variance. supports full reduction (axis = NULL).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_var.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Variance of an expression — cvxr_var","text":"","code":"cvxr_var(x, axis = NULL, keepdims = FALSE, ddof = 0)"},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_var.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Variance of an expression — cvxr_var","text":"x Expression numeric value. axis NULL (axis reduction yet supported). keepdims Logical; keep reduced dimension? ddof Degrees freedom correction (default 0, population variance).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/cvxr_var.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Variance of an expression — cvxr_var","text":"Expression representing variance.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/delta.html","id":null,"dir":"Reference","previous_headings":"","what":"Access the perturbation delta of a Variable or Parameter — delta","title":"Access the perturbation delta of a Variable or Parameter — delta","text":"Used psolve() requires_grad = TRUE Problem$derivative(). Parameter, user sets delta perturbation parameter's value; derivative() reports predicted change Variable's optimal value delta(variable).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/delta.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Access the perturbation delta of a Variable or Parameter — delta","text":"","code":"delta(x) delta(x) <- value"},{"path":"https://www.cvxgrp.org/CVXR/reference/delta.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Access the perturbation delta of a Variable or Parameter — delta","text":"x Variable Parameter. value numeric array shape x, NULL.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/delta.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Access the perturbation delta of a Variable or Parameter — delta","text":"perturbation (numeric array) NULL.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/derivative.html","id":null,"dir":"Reference","previous_headings":"","what":"Apply the derivative of the solution map to perturbations — derivative","title":"Apply the derivative of the solution map to perturbations — derivative","text":"Forward-mode counterpart backward(): reads delta(param) parameter, applies cone-program derivative, writes predicted change variable's optimum delta(var). Mirrors cvxpy.Problem.derivative().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/derivative.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Apply the derivative of the solution map to perturbations — derivative","text":"","code":"derivative(problem)"},{"path":"https://www.cvxgrp.org/CVXR/reference/derivative.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Apply the derivative of the solution map to perturbations — derivative","text":"problem solved Problem.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/derivative.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Apply the derivative of the solution map to perturbations — derivative","text":"problem (piping); side-effect sets delta(variable) variable.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/derivative.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Apply the derivative of the solution map to perturbations — derivative","text":"Must called psolve() requires_grad = TRUE.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/diff_pos.html","id":null,"dir":"Reference","previous_headings":"","what":"The difference x - y with domain x > y > 0 — diff_pos","title":"The difference x - y with domain x > y > 0 — diff_pos","text":"Equivalent x * one_minus_pos(y / x).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/diff_pos.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"The difference x - y with domain x > y > 0 — diff_pos","text":"","code":"diff_pos(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/diff_pos.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"The difference x - y with domain x > y > 0 — diff_pos","text":"x Expression (positive) y Expression (positive, elementwise less x)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/diff_pos.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"The difference x - y with domain x > y > 0 — diff_pos","text":"product expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dist_ratio.html","id":null,"dir":"Reference","previous_headings":"","what":"Distance ratio — dist_ratio","title":"Distance ratio — dist_ratio","text":"Computes norm(x - )_2 / norm(x - b)_2, b constants. quasiconvex atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dist_ratio.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Distance ratio — dist_ratio","text":"","code":"dist_ratio(x, a, b)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dist_ratio.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Distance ratio — dist_ratio","text":"x vector expression numeric constant vector b numeric constant vector","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dist_ratio.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Distance ratio — dist_ratio","text":"expression representing distance ratio","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/domain.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Domain Constraints of an Expression — domain","title":"Get the Domain Constraints of an Expression — domain","text":"Get Domain Constraints Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/domain.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Domain Constraints of an Expression — domain","text":"","code":"domain(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/domain.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Domain Constraints of an Expression — domain","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/domain.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Domain Constraints of an Expression — domain","text":"List constraints defining domain.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-column_grad.html","id":null,"dir":"Reference","previous_headings":"","what":"Per-column Subgradient for AxisAtoms (private) — .column_grad","title":"Per-column Subgradient for AxisAtoms (private) — .column_grad","text":"R counterpart CVXPY's AxisAtom._column_grad(self, value). Receives single column (1-D fiber) input returns gradient atom's reduction column. Used .grad(AxisAtom), walks input fibers assembles full Jacobian.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-column_grad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Per-column Subgradient for AxisAtoms (private) — .column_grad","text":"","code":".column_grad(x, value, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-column_grad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Per-column Subgradient for AxisAtoms (private) — .column_grad","text":"x axis-atom expression. value numeric vector (fiber). ... Reserved future use; method dispatch ignores .","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-column_grad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Per-column Subgradient for AxisAtoms (private) — .column_grad","text":"numeric vector length, NULL gradient undefined fiber.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-constant_grad.html","id":null,"dir":"Reference","previous_headings":"","what":"Gradient of a Constant Expression — .constant_grad","title":"Gradient of a Constant Expression — .constant_grad","text":"Returns Variable -> Jacobian list expression constant variables. Jacobian appropriate-shape zero (scalar 0 scalar/scalar; sparse zero matrix otherwise).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-constant_grad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Gradient of a Constant Expression — .constant_grad","text":"","code":".constant_grad(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-constant_grad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Gradient of a Constant Expression — .constant_grad","text":"expr expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-constant_grad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Gradient of a Constant Expression — .constant_grad","text":"list keyed variable id (character), entry zero Jacobian.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-constant_grad.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Gradient of a Constant Expression — .constant_grad","text":"Mirrors cvxpy/utilities/grad.py:constant_grad.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-error_grad.html","id":null,"dir":"Reference","previous_headings":"","what":"Error Gradient (None for every variable) — .error_grad","title":"Error Gradient (None for every variable) — .error_grad","text":"Returns list keyed variable id every entry NULL. Used chain-rule walker propagate \"compute\" DAG argument value missing.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-error_grad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Error Gradient (None for every variable) — .error_grad","text":"","code":".error_grad(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-error_grad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Error Gradient (None for every variable) — .error_grad","text":"expr expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-error_grad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Error Gradient (None for every variable) — .error_grad","text":"list keyed variable id (character), entry NULL.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-error_grad.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Error Gradient (None for every variable) — .error_grad","text":"Mirrors cvxpy/utilities/grad.py:error_grad.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-grad.html","id":null,"dir":"Reference","previous_headings":"","what":"Per-atom Subgradient Hook (private) — .grad","title":"Per-atom Subgradient Hook (private) — .grad","text":"R counterpart CVXPY's Atom._grad(self, values). Returns list one Jacobian per argument, shape (prod(arg.shape), prod(self.shape)). Called chain-rule walker grad(x). leading dot follows R's private-name convention (cf. .Machine, .libPaths, .cvxr_*); name maps one--one onto CVXPY's _grad.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-grad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Per-atom Subgradient Hook (private) — .grad","text":"","code":".grad(x, values, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-grad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Per-atom Subgradient Hook (private) — .grad","text":"x atom expression. values list numeric values, one per argument. ... Reserved future use; method dispatch ignores .","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dot-grad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Per-atom Subgradient Hook (private) — .grad","text":"list sparse Jacobians (one per argument).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dotsort.html","id":null,"dir":"Reference","previous_headings":"","what":"Weighted sorted dot product — dotsort","title":"Weighted sorted dot product — dotsort","text":"Computes X expression W constant. generalization sum_largest sum_smallest.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dotsort.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Weighted sorted dot product — dotsort","text":"","code":"dotsort(X, W)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dotsort.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Weighted sorted dot product — dotsort","text":"X Expression numeric value. W constant numeric vector matrix.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dotsort.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Weighted sorted dot product — dotsort","text":"scalar convex Expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dpp_scope_active.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if DPP Scope is Active — dpp_scope_active","title":"Check if DPP Scope is Active — dpp_scope_active","text":"Check DPP Scope Active","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dpp_scope_active.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if DPP Scope is Active — dpp_scope_active","text":"","code":"dpp_scope_active()"},{"path":"https://www.cvxgrp.org/CVXR/reference/dpp_scope_active.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if DPP Scope is Active — dpp_scope_active","text":"Logical; TRUE with_dpp_scope block active.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dspop.html","id":null,"dir":"Reference","previous_headings":"","what":"Direct Standardization: Population — dspop","title":"Direct Standardization: Population — dspop","text":"Randomly generated data direct standardization example. Sex drawn Bernoulli distribution, age drawn uniform distribution \\(10,\\ldots,60\\). response drawn normal distribution mean depends sex age, variance 1.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dspop.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Direct Standardization: Population — dspop","text":"","code":"dspop"},{"path":"https://www.cvxgrp.org/CVXR/reference/dspop.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Direct Standardization: Population — dspop","text":"data frame 1000 rows 3 variables: y Response variable sex Sex individual, coded male (0) female (1) age Age individual","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/dssamp.html","id":null,"dir":"Reference","previous_headings":"","what":"Direct Standardization: Sample — dssamp","title":"Direct Standardization: Sample — dssamp","text":"sample dspop direct standardization example. sample skewed young males overrepresented comparison population.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dssamp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Direct Standardization: Sample — dssamp","text":"","code":"dssamp"},{"path":"https://www.cvxgrp.org/CVXR/reference/dssamp.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Direct Standardization: Sample — dssamp","text":"data frame 100 rows 3 variables: y Response variable sex Sex individual, coded male (0) female (1) age Age individual","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_cone.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Dual Cone Constraint — dual_cone","title":"Get the Dual Cone Constraint — dual_cone","text":"Get Dual Cone Constraint","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_cone.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Dual Cone Constraint — dual_cone","text":"","code":"dual_cone(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_cone.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Dual Cone Constraint — dual_cone","text":"x cone constraint object. ... Optional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_cone.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Dual Cone Constraint — dual_cone","text":"cone constraint representing dual cone.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_residual.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Dual Residual — dual_residual","title":"Get the Dual Residual — dual_residual","text":"Get Dual Residual","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_residual.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Dual Residual — dual_residual","text":"","code":"dual_residual(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_residual.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Dual Residual — dual_residual","text":"x cone constraint object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_residual.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Dual Residual — dual_residual","text":"Numeric residual.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_value.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Dual Value of a Constraint — dual_value","title":"Get the Dual Value of a Constraint — dual_value","text":"Returns dual variable value(s) associated constraint solving. Returns NULL problem solved.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_value.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Dual Value of a Constraint — dual_value","text":"","code":"dual_value(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_value.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Dual Value of a Constraint — dual_value","text":"x Constraint object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/dual_value.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Dual Value of a Constraint — dual_value","text":"numeric matrix (single dual variable) list numeric matrices (multiple dual variables), NULL.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/entr.html","id":null,"dir":"Reference","previous_headings":"","what":"Create an entropy atom -x * log(x) — entr","title":"Create an entropy atom -x * log(x) — entr","text":"Create entropy atom -x * log(x)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/entr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create an entropy atom -x * log(x) — entr","text":"","code":"entr(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/entr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create an entropy atom -x * log(x) — entr","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/entr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create an entropy atom -x * log(x) — entr","text":"Entr atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_H.html","id":null,"dir":"Reference","previous_headings":"","what":"Conjugate-Transpose of an Expression — expr_H","title":"Conjugate-Transpose of an Expression — expr_H","text":"Equivalent CVXPY's .H property. real expressions, returns t(x). complex expressions, returns Conj(t(x)).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_H.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Conjugate-Transpose of an Expression — expr_H","text":"","code":"expr_H(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_H.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Conjugate-Transpose of an Expression — expr_H","text":"x CVXR Expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_H.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Conjugate-Transpose of an Expression — expr_H","text":"conjugate-transpose expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_copy.html","id":null,"dir":"Reference","previous_headings":"","what":"Shallow Copy of an Expression Tree Node — expr_copy","title":"Shallow Copy of an Expression Tree Node — expr_copy","text":"Shallow Copy Expression Tree Node","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_copy.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Shallow Copy of an Expression Tree Node — expr_copy","text":"","code":"expr_copy(x, args = NULL, id_objects = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_copy.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Shallow Copy of an Expression Tree Node — expr_copy","text":"x canonicalizable object. args Optional replacement args. id_objects Optional identity map deduplication.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_copy.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Shallow Copy of an Expression Tree Node — expr_copy","text":"copy object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_name.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Name of an Expression — expr_name","title":"Get the Name of an Expression — expr_name","text":"Get Name Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_name.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Name of an Expression — expr_name","text":"","code":"expr_name(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_name.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Name of an Expression — expr_name","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_name.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Name of an Expression — expr_name","text":"Character string.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_sign.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the DCP Sign of an Expression — expr_sign","title":"Get the DCP Sign of an Expression — expr_sign","text":"Returns sign expression DCP analysis. Use instead sign(), conflicts base R function.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_sign.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the DCP Sign of an Expression — expr_sign","text":"","code":"expr_sign(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_sign.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the DCP Sign of an Expression — expr_sign","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/expr_sign.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the DCP Sign of an Expression — expr_sign","text":"Character string: \"POSITIVE\", \"NEGATIVE\", \"ZERO\", \"UNKNOWN\".","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/eye_minus_inv.html","id":null,"dir":"Reference","previous_headings":"","what":"Unity resolvent (I - X) inverse for positive square matrix X — eye_minus_inv","title":"Unity resolvent (I - X) inverse for positive square matrix X — eye_minus_inv","text":"Log-log convex atom DGP. Solve psolve(problem, gp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/eye_minus_inv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Unity resolvent (I - X) inverse for positive square matrix X — eye_minus_inv","text":"","code":"eye_minus_inv(X)"},{"path":"https://www.cvxgrp.org/CVXR/reference/eye_minus_inv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Unity resolvent (I - X) inverse for positive square matrix X — eye_minus_inv","text":"X Expression (positive square matrix spectral radius < 1)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/eye_minus_inv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Unity resolvent (I - X) inverse for positive square matrix X — eye_minus_inv","text":"EyeMinusInv atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/eye_minus_inv.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Unity resolvent (I - X) inverse for positive square matrix X — eye_minus_inv","text":"","code":"X <- Variable(c(2, 2), pos = TRUE) prob <- Problem(Minimize(sum(eye_minus_inv(X))), list(X <= 0.4)) if (FALSE) psolve(prob, gp = TRUE, solver = \"SCS\") # \\dontrun{}"},{"path":"https://www.cvxgrp.org/CVXR/reference/floor_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Elementwise Floor — floor_expr","title":"Elementwise Floor — floor_expr","text":"Returns floor (largest integer <= x) element. atom quasiconvex quasiconcave convex concave, can used DQCP problems (solved qcp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/floor_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise Floor — floor_expr","text":"","code":"floor_expr(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/floor_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise Floor — floor_expr","text":"x CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/floor_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise Floor — floor_expr","text":"Floor expression.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/format_labeled.html","id":null,"dir":"Reference","previous_headings":"","what":"Pretty-print an expression with labels substituted — format_labeled","title":"Pretty-print an expression with labels substituted — format_labeled","text":"Recursive analogue expr_name() substitutes user-supplied labels (see set_label()) sub-expressions wherever set, falling back structural name unlabelled nodes. Mirrors CVXPY's Expression.format_labeled.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/format_labeled.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Pretty-print an expression with labels substituted — format_labeled","text":"","code":"format_labeled(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/format_labeled.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Pretty-print an expression with labels substituted — format_labeled","text":"x Expression object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/format_labeled.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Pretty-print an expression with labels substituted — format_labeled","text":"character string.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/gen_lambda_max.html","id":null,"dir":"Reference","previous_headings":"","what":"Maximum generalized eigenvalue — gen_lambda_max","title":"Maximum generalized eigenvalue — gen_lambda_max","text":"Computes maximum generalized eigenvalue lambda_max(, B). Requires symmetric B positive semidefinite. quasiconvex atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gen_lambda_max.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Maximum generalized eigenvalue — gen_lambda_max","text":"","code":"gen_lambda_max(A, B)"},{"path":"https://www.cvxgrp.org/CVXR/reference/gen_lambda_max.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Maximum generalized eigenvalue — gen_lambda_max","text":"square symmetric matrix expression B square PSD matrix expression dimension ","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gen_lambda_max.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Maximum generalized eigenvalue — gen_lambda_max","text":"expression representing maximum generalized eigenvalue","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/geo_mean.html","id":null,"dir":"Reference","previous_headings":"","what":"(Weighted) geometric mean of a vector — geo_mean","title":"(Weighted) geometric mean of a vector — geo_mean","text":"(Weighted) geometric mean vector","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/geo_mean.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"(Weighted) geometric mean of a vector — geo_mean","text":"","code":"geo_mean(x, p = NULL, max_denom = 1024L, approx = TRUE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/geo_mean.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"(Weighted) geometric mean of a vector — geo_mean","text":"x Expression (vector) p Numeric weight vector (default: uniform) max_denom Maximum denominator rational approximation approx TRUE (default), use SOC approximation. FALSE, use exact power cone.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/geo_mean.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"(Weighted) geometric mean of a vector — geo_mean","text":"GeoMean GeoMeanApprox atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_bounds.html","id":null,"dir":"Reference","previous_headings":"","what":"Lower/Upper Bounds of a Leaf — get_bounds","title":"Lower/Upper Bounds of a Leaf — get_bounds","text":"Returns effective (lower, upper) bounds leaf, combining bounds attribute sign (nonneg/pos/nonpos/neg) boolean attributes. Used NLP (DNLP) solve path form variable bounds.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_bounds.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Lower/Upper Bounds of a Leaf — get_bounds","text":"","code":"get_bounds(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/get_bounds.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Lower/Upper Bounds of a Leaf — get_bounds","text":"x expression (Variable/leaf, composite expression whose bounds propagated arguments). ... Passed methods; currently unused.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_bounds.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Lower/Upper Bounds of a Leaf — get_bounds","text":"list list(lower, upper) two real matrices matching expression shape (column-major). leaves come explicit bounds sign attributes; atoms propagated argument bounds via interval arithmetic (see bounds_from_args).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Atom-Specific Data — get_data","title":"Get Atom-Specific Data — get_data","text":"Get Atom-Specific Data","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Atom-Specific Data — get_data","text":"","code":"get_data(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/get_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Atom-Specific Data — get_data","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Atom-Specific Data — get_data","text":"List data.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/get_problem_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Problem Data for a Solver (deprecated) — get_problem_data","text":"","code":"get_problem_data( x, solver = NULL, gp = FALSE, enforce_dpp = FALSE, ignore_dpp = FALSE, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/get_problem_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Problem Data for a Solver (deprecated) — get_problem_data","text":"x Problem object. solver Character string naming solver, NULL automatic selection. gp Logical; TRUE, parse problem geometric program. enforce_dpp Logical; TRUE, raise error parametrized problem DPP instead compiling non-DPP. ignore_dpp Logical; TRUE, treat DPP problem non-DPP (skip DPP fast path). ... Additional solver options.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_problem_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Problem Data for a Solver (deprecated) — get_problem_data","text":"list components data, chain, inverse_data.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/get_problem_data.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get Problem Data for a Solver (deprecated) — get_problem_data","text":"Use problem_data instead.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/gmatmul.html","id":null,"dir":"Reference","previous_headings":"","what":"Geometric matrix multiplication A diamond X — gmatmul","title":"Geometric matrix multiplication A diamond X — gmatmul","text":"Computes geometric matrix product (diamond X)_ij = prod_k X_kj^A_ik. Log-log affine atom DGP. Solve psolve(problem, gp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gmatmul.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Geometric matrix multiplication A diamond X — gmatmul","text":"","code":"gmatmul(A, X)"},{"path":"https://www.cvxgrp.org/CVXR/reference/gmatmul.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Geometric matrix multiplication A diamond X — gmatmul","text":"constant matrix X Expression (positive matrix)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gmatmul.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Geometric matrix multiplication A diamond X — gmatmul","text":"Gmatmul atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gmatmul.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Geometric matrix multiplication A diamond X — gmatmul","text":"","code":"x <- Variable(2, pos = TRUE) A <- matrix(c(1, 0, 0, 1), 2, 2) prob <- Problem(Minimize(sum(gmatmul(A, x))), list(x >= 0.5)) if (FALSE) psolve(prob, gp = TRUE) # \\dontrun{}"},{"path":"https://www.cvxgrp.org/CVXR/reference/grad.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Gradient of an Expression — grad","title":"Get the Gradient of an Expression — grad","text":"Get Gradient Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/grad.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Gradient of an Expression — grad","text":"","code":"grad(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/grad.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Gradient of an Expression — grad","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/grad.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Gradient of an Expression — grad","text":"Gradient information.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gradient.html","id":null,"dir":"Reference","previous_headings":"","what":"Access the gradient of a Variable or Parameter — gradient","title":"Access the gradient of a Variable or Parameter — gradient","text":"Used psolve() requires_grad = TRUE Problem$backward(). Stores numeric array shape leaf, NULL (default).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gradient.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Access the gradient of a Variable or Parameter — gradient","text":"","code":"gradient(x) gradient(x) <- value"},{"path":"https://www.cvxgrp.org/CVXR/reference/gradient.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Access the gradient of a Variable or Parameter — gradient","text":"x Variable Parameter. value numeric array shape x, NULL.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/gradient.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Access the gradient of a Variable or Parameter — gradient","text":"gradient (numeric array) NULL.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-greater-than-greater-than-grapes.html","id":null,"dir":"Reference","previous_headings":"","what":"Positive Semidefinite Constraint Operator — %>>%","title":"Positive Semidefinite Constraint Operator — %>>%","text":"Creates PSD constraint: e1 - e2 positive semidefinite. R equivalent Python's >> B.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-greater-than-greater-than-grapes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Positive Semidefinite Constraint Operator — %>>%","text":"","code":"e1 %>>% e2"},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-greater-than-greater-than-grapes.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Positive Semidefinite Constraint Operator — %>>%","text":"e1, e2 CVXR expressions numeric matrices.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-greater-than-greater-than-grapes.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Positive Semidefinite Constraint Operator — %>>%","text":"PSD constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-greater-than-greater-than-grapes.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Positive Semidefinite Constraint Operator — %>>%","text":"","code":"if (FALSE) { # \\dontrun{ X <- Variable(3, 3, symmetric = TRUE) constr <- X %>>% diag(3) # X - I is PSD } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-less-than-less-than-grapes.html","id":null,"dir":"Reference","previous_headings":"","what":"Negative Semidefinite Constraint Operator — %<<%","title":"Negative Semidefinite Constraint Operator — %<<%","text":"Creates NSD constraint: e2 - e1 positive semidefinite, .e., e1 NSD relative e2. R equivalent Python's << B.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-less-than-less-than-grapes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Negative Semidefinite Constraint Operator — %<<%","text":"","code":"e1 %<<% e2"},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-less-than-less-than-grapes.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Negative Semidefinite Constraint Operator — %<<%","text":"e1, e2 CVXR expressions numeric matrices.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-less-than-less-than-grapes.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Negative Semidefinite Constraint Operator — %<<%","text":"PSD constraint object.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/grapes-less-than-less-than-grapes.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Negative Semidefinite Constraint Operator — %<<%","text":"","code":"if (FALSE) { # \\dontrun{ X <- Variable(3, 3, symmetric = TRUE) constr <- X %<<% diag(3) # I - X is PSD (X is NSD relative to I) } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/graph_implementation.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Graph Implementation of an Atom — graph_implementation","title":"Get the Graph Implementation of an Atom — graph_implementation","text":"Get Graph Implementation Atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/graph_implementation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Graph Implementation of an Atom — graph_implementation","text":"","code":"graph_implementation(x, arg_objs, shape, data = NULL, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/graph_implementation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Graph Implementation of an Atom — graph_implementation","text":"x atom object. arg_objs List canonicalized argument LinOps. shape Integer vector: target shape. data Optional atom-specific data. ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/graph_implementation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Graph Implementation of an Atom — graph_implementation","text":"List (expression, constraints).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/harmonic_mean.html","id":null,"dir":"Reference","previous_headings":"","what":"Harmonic mean: n / sum(1/x_i) — harmonic_mean","title":"Harmonic mean: n / sum(1/x_i) — harmonic_mean","text":"Harmonic mean: n / sum(1/x_i)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/harmonic_mean.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Harmonic mean: n / sum(1/x_i) — harmonic_mean","text":"","code":"harmonic_mean(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/harmonic_mean.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Harmonic mean: n / sum(1/x_i) — harmonic_mean","text":"x Expression (must positive DCP)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/harmonic_mean.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Harmonic mean: n / sum(1/x_i) — harmonic_mean","text":"Expression representing harmonic mean","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/has_quadratic_term.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression Has a Quadratic Term — has_quadratic_term","title":"Check if Expression Has a Quadratic Term — has_quadratic_term","text":"Check Expression Quadratic Term","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/has_quadratic_term.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression Has a Quadratic Term — has_quadratic_term","text":"","code":"has_quadratic_term(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/has_quadratic_term.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression Has a Quadratic Term — has_quadratic_term","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/has_quadratic_term.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression Has a Quadratic Term — has_quadratic_term","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/hstack.html","id":null,"dir":"Reference","previous_headings":"","what":"Horizontal concatenation of expressions — hstack","title":"Horizontal concatenation of expressions — hstack","text":"Horizontal concatenation expressions","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/hstack.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Horizontal concatenation of expressions — hstack","text":"","code":"hstack(...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/hstack.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Horizontal concatenation of expressions — hstack","text":"... Expressions (number rows)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/hstack.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Horizontal concatenation of expressions — hstack","text":"HStack atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/huber.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Huber loss atom — huber","title":"Create a Huber loss atom — huber","text":"Create Huber loss atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/huber.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Huber loss atom — huber","text":"","code":"huber(x, M = 1)"},{"path":"https://www.cvxgrp.org/CVXR/reference/huber.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Huber loss atom — huber","text":"x Expression M Numeric threshold (default 1)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/huber.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Huber loss atom — huber","text":"Huber atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/id.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Expression ID — id","title":"Get Expression ID — id","text":"Returns unique integer identifier CVXR object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/id.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Expression ID — id","text":"","code":"id(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/id.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Expression ID — id","text":"x CVXR expression, variable, parameter, constraint.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/id.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Expression ID — id","text":"integer.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/iff.html","id":null,"dir":"Reference","previous_headings":"","what":"Logical Biconditional — iff","title":"Logical Biconditional — iff","text":"Logical biconditional: x <=> y. Returns 1 x y value. Equivalent (Xor(x, y)).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/iff.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logical Biconditional — iff","text":"","code":"iff(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/iff.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logical Biconditional — iff","text":"x, y Boolean Variables logic expressions.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/iff.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logical Biconditional — iff","text":"expression wrapping Xor.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/iff.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Logical Biconditional — iff","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(boolean = TRUE) y <- Variable(boolean = TRUE) expr <- iff(x, y) } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/imag_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract Imaginary Part of Expression — imag_expr","title":"Extract Imaginary Part of Expression — imag_expr","text":"Returns imaginary part complex expression. R's native Im() dispatches CVXR expressions via Complex S3 group handler.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/imag_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract Imaginary Part of Expression — imag_expr","text":"","code":"imag_expr(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/imag_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract Imaginary Part of Expression — imag_expr","text":"expr CVXR Expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/imag_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract Imaginary Part of Expression — imag_expr","text":"Imag_ atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/implies.html","id":null,"dir":"Reference","previous_headings":"","what":"Logical Implication — implies","title":"Logical Implication — implies","text":"Logical implication: x => y. Returns 1 unless x = 1 y = 0. Equivalent ((x), y).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/implies.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logical Implication — implies","text":"","code":"implies(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/implies.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logical Implication — implies","text":"x, y Boolean Variables logic expressions.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/implies.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logical Implication — implies","text":"expression representing !x | y.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/implies.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Logical Implication — implies","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(boolean = TRUE) y <- Variable(boolean = TRUE) expr <- implies(x, y) } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/indicator.html","id":null,"dir":"Reference","previous_headings":"","what":"Indicator function for constraints — indicator","title":"Indicator function for constraints — indicator","text":"Creates expression equals 0 constraints satisfied +Inf otherwise. Use embed constraints objective.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/indicator.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Indicator function for constraints — indicator","text":"","code":"indicator(constraints, err_tol = 0.001)"},{"path":"https://www.cvxgrp.org/CVXR/reference/indicator.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Indicator function for constraints — indicator","text":"constraints list constraint objects err_tol Numeric tolerance checking constraint satisfaction (default 1e-3)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/indicator.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Indicator function for constraints — indicator","text":"Indicator expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/installed_solvers.html","id":null,"dir":"Reference","previous_headings":"","what":"List installed solvers — installed_solvers","title":"List installed solvers — installed_solvers","text":"Returns names solvers whose R packages available.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/installed_solvers.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"List installed solvers — installed_solvers","text":"","code":"installed_solvers()"},{"path":"https://www.cvxgrp.org/CVXR/reference/installed_solvers.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"List installed solvers — installed_solvers","text":"character vector solver names.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_convert.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert a value to a numeric matrix or sparse matrix — intf_convert","title":"Convert a value to a numeric matrix or sparse matrix — intf_convert","text":"Normalizes R values rest CVXR can assume consistent type. Scalars -> 1x1 matrix, vectors -> column matrix, logical -> numeric. Sparse matrices kept sparse.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_convert.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert a value to a numeric matrix or sparse matrix — intf_convert","text":"","code":"intf_convert(val)"},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_convert.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert a value to a numeric matrix or sparse matrix — intf_convert","text":"val numeric scalar, vector, matrix, Matrix object","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_convert.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert a value to a numeric matrix or sparse matrix — intf_convert","text":"matrix dgCMatrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_hermitian.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a matrix is symmetric (and Hermitian for real case) — intf_is_hermitian","title":"Check if a matrix is symmetric (and Hermitian for real case) — intf_is_hermitian","text":"Check matrix symmetric (Hermitian real case)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_hermitian.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a matrix is symmetric (and Hermitian for real case) — intf_is_hermitian","text":"","code":"intf_is_hermitian(val)"},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_hermitian.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a matrix is symmetric (and Hermitian for real case) — intf_is_hermitian","text":"val numeric matrix sparse matrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_hermitian.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a matrix is symmetric (and Hermitian for real case) — intf_is_hermitian","text":"List is_symmetric (logical) is_hermitian (logical)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_psd.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a symmetric matrix is PSD within tolerance — intf_is_psd","title":"Check if a symmetric matrix is PSD within tolerance — intf_is_psd","text":"Check symmetric matrix PSD within tolerance","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_psd.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a symmetric matrix is PSD within tolerance — intf_is_psd","text":"","code":"intf_is_psd(val, tol = EIGVAL_TOL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_psd.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a symmetric matrix is PSD within tolerance — intf_is_psd","text":"val symmetric numeric matrix tol Eigenvalue tolerance","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_psd.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a symmetric matrix is PSD within tolerance — intf_is_psd","text":"Logical","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_skew_symmetric.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a matrix is skew-symmetric (A + A^T == 0) — intf_is_skew_symmetric","title":"Check if a matrix is skew-symmetric (A + A^T == 0) — intf_is_skew_symmetric","text":"Check matrix skew-symmetric (+ ^T == 0)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_skew_symmetric.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a matrix is skew-symmetric (A + A^T == 0) — intf_is_skew_symmetric","text":"","code":"intf_is_skew_symmetric(val)"},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_skew_symmetric.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a matrix is skew-symmetric (A + A^T == 0) — intf_is_skew_symmetric","text":"val numeric matrix sparse matrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_skew_symmetric.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a matrix is skew-symmetric (A + A^T == 0) — intf_is_skew_symmetric","text":"Logical scalar","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_sparse.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a value is a sparse matrix — intf_is_sparse","title":"Check if a value is a sparse matrix — intf_is_sparse","text":"Check value sparse matrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_sparse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a value is a sparse matrix — intf_is_sparse","text":"","code":"intf_is_sparse(val)"},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_sparse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a value is a sparse matrix — intf_is_sparse","text":"val value","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_is_sparse.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a value is a sparse matrix — intf_is_sparse","text":"Logical","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_shape.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the shape of a value as an integer vector c(nrow, ncol) — intf_shape","title":"Get the shape of a value as an integer vector c(nrow, ncol) — intf_shape","text":"Get shape value integer vector c(nrow, ncol)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_shape.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the shape of a value as an integer vector c(nrow, ncol) — intf_shape","text":"","code":"intf_shape(val)"},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_shape.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the shape of a value as an integer vector c(nrow, ncol) — intf_shape","text":"val numeric scalar, vector, matrix, Matrix object","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_shape.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the shape of a value as an integer vector c(nrow, ncol) — intf_shape","text":"Integer vector length 2","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_sign.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine the sign of a numeric value — intf_sign","title":"Determine the sign of a numeric value — intf_sign","text":"Determine sign numeric value","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_sign.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine the sign of a numeric value — intf_sign","text":"","code":"intf_sign(val)"},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_sign.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine the sign of a numeric value — intf_sign","text":"val numeric matrix sparse matrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/intf_sign.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Determine the sign of a numeric value — intf_sign","text":"List is_nonneg (logical) is_nonpos (logical)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_pos.html","id":null,"dir":"Reference","previous_headings":"","what":"Inverse position: \\(x^{-1}\\) (for x > 0) — inv_pos","title":"Inverse position: \\(x^{-1}\\) (for x > 0) — inv_pos","text":"Inverse position: \\(x^{-1}\\) (x > 0)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_pos.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Inverse position: \\(x^{-1}\\) (for x > 0) — inv_pos","text":"","code":"inv_pos(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_pos.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Inverse position: \\(x^{-1}\\) (for x > 0) — inv_pos","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_pos.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Inverse position: \\(x^{-1}\\) (for x > 0) — inv_pos","text":"Power atom p=-1","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_prod.html","id":null,"dir":"Reference","previous_headings":"","what":"Reciprocal of product of entries — inv_prod","title":"Reciprocal of product of entries — inv_prod","text":"Computes reciprocal product entries. Equivalent geo_mean(x)^(-n) n number entries.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_prod.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reciprocal of product of entries — inv_prod","text":"","code":"inv_prod(x, approx = TRUE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_prod.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Reciprocal of product of entries — inv_prod","text":"x Expression numeric value (must positive entries). approx Logical; TRUE (default), use SOC approximation.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/inv_prod.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reciprocal of product of entries — inv_prod","text":"convex Expression representing reciprocal product.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_affine.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Affine — is_affine","title":"Check if an Expression is Affine — is_affine","text":"Check Expression Affine","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_affine.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Affine — is_affine","text":"","code":"is_affine(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_affine.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Affine — is_affine","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_affine.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Affine — is_affine","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_concave.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Concave — is_atom_concave","title":"Check if Atom is Concave — is_atom_concave","text":"Check Atom Concave","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_concave.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Concave — is_atom_concave","text":"","code":"is_atom_concave(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_concave.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Concave — is_atom_concave","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_concave.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Concave — is_atom_concave","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_convex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Convex — is_atom_convex","title":"Check if Atom is Convex — is_atom_convex","text":"Check Atom Convex","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_convex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Convex — is_atom_convex","text":"","code":"is_atom_convex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_convex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Convex — is_atom_convex","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_convex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Convex — is_atom_convex","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_concave.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Log-Log Concave — is_atom_log_log_concave","title":"Check if Atom is Log-Log Concave — is_atom_log_log_concave","text":"Check Atom Log-Log Concave","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_concave.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Log-Log Concave — is_atom_log_log_concave","text":"","code":"is_atom_log_log_concave(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_concave.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Log-Log Concave — is_atom_log_log_concave","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_concave.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Log-Log Concave — is_atom_log_log_concave","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_convex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Log-Log Convex — is_atom_log_log_convex","title":"Check if Atom is Log-Log Convex — is_atom_log_log_convex","text":"Check Atom Log-Log Convex","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_convex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Log-Log Convex — is_atom_log_log_convex","text":"","code":"is_atom_log_log_convex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_convex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Log-Log Convex — is_atom_log_log_convex","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_log_log_convex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Log-Log Convex — is_atom_log_log_convex","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconcave.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Quasiconcave — is_atom_quasiconcave","title":"Check if Atom is Quasiconcave — is_atom_quasiconcave","text":"Check Atom Quasiconcave","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconcave.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Quasiconcave — is_atom_quasiconcave","text":"","code":"is_atom_quasiconcave(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconcave.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Quasiconcave — is_atom_quasiconcave","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconcave.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Quasiconcave — is_atom_quasiconcave","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconvex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Quasiconvex — is_atom_quasiconvex","title":"Check if Atom is Quasiconvex — is_atom_quasiconvex","text":"Check Atom Quasiconvex","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconvex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Quasiconvex — is_atom_quasiconvex","text":"","code":"is_atom_quasiconvex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconvex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Quasiconvex — is_atom_quasiconvex","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_quasiconvex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Quasiconvex — is_atom_quasiconvex","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_smooth.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Atom is Smooth — is_atom_smooth","title":"Check if an Atom is Smooth — is_atom_smooth","text":"Atom-level hook (default FALSE); smooth atoms (e.g. trig/hyperbolic) override TRUE. Mirrors CVXPY's Atom.is_atom_smooth().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_smooth.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Atom is Smooth — is_atom_smooth","text":"","code":"is_atom_smooth(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_smooth.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Atom is Smooth — is_atom_smooth","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_atom_smooth.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Atom is Smooth — is_atom_smooth","text":"Logical scalar.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/is_complex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Complex — is_complex","title":"Check if Expression is Complex — is_complex","text":"Check Expression Complex","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_complex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Complex — is_complex","text":"","code":"is_complex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_complex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Complex — is_complex","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_complex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Complex — is_complex","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_concave.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Concave — is_concave","title":"Check if an Expression is Concave — is_concave","text":"Check Expression Concave","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_concave.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Concave — is_concave","text":"","code":"is_concave(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_concave.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Concave — is_concave","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_concave.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Concave — is_concave","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_constant.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Constant — is_constant","title":"Check if an Expression is Constant — is_constant","text":"Check Expression Constant","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_constant.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Constant — is_constant","text":"","code":"is_constant(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_constant.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Constant — is_constant","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_constant.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Constant — is_constant","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_convex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Convex — is_convex","title":"Check if an Expression is Convex — is_convex","text":"Check Expression Convex","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_convex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Convex — is_convex","text":"","code":"is_convex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_convex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Convex — is_convex","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_convex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Convex — is_convex","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dcp.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is DCP-Compliant — is_dcp","title":"Check if an Expression is DCP-Compliant — is_dcp","text":"Tests whether expression follows Disciplined Convex Programming (DCP) rules.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dcp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is DCP-Compliant — is_dcp","text":"","code":"is_dcp(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dcp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is DCP-Compliant — is_dcp","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dcp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is DCP-Compliant — is_dcp","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_decr.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Decreasing in an Argument — is_decr","title":"Check if Atom is Decreasing in an Argument — is_decr","text":"Check Atom Decreasing Argument","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_decr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Decreasing in an Argument — is_decr","text":"","code":"is_decr(x, idx, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_decr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Decreasing in an Argument — is_decr","text":"x atom object. idx Integer: argument index (1-based, R convention). ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_decr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Decreasing in an Argument — is_decr","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dgp.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a Constraint is DGP-Compliant — is_dgp","title":"Check if a Constraint is DGP-Compliant — is_dgp","text":"Check Constraint DGP-Compliant","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dgp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a Constraint is DGP-Compliant — is_dgp","text":"","code":"is_dgp(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dgp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a Constraint is DGP-Compliant — is_dgp","text":"x constraint object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dgp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a Constraint is DGP-Compliant — is_dgp","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dnlp.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression or Problem is DNLP-Compliant — is_dnlp","title":"Check if an Expression or Problem is DNLP-Compliant — is_dnlp","text":"Tests whether object follows Disciplined Nonlinear Programming (DNLP) rules: smooth representable, .e. linearizable-convex linearizable-concave.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dnlp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression or Problem is DNLP-Compliant — is_dnlp","text":"","code":"is_dnlp(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dnlp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression or Problem is DNLP-Compliant — is_dnlp","text":"x expression, objective, constraint, Problem. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dnlp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression or Problem is DNLP-Compliant — is_dnlp","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dpp.html","id":null,"dir":"Reference","previous_headings":"","what":"Check DPP Compliance — is_dpp","title":"Check DPP Compliance — is_dpp","text":"Determines whether expression problem satisfies rules Disciplined Parameterized Programming (DPP). DPP-compliant problem enables caching compilation across parameter value changes.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dpp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check DPP Compliance — is_dpp","text":"","code":"is_dpp(x, context = \"dcp\")"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dpp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check DPP Compliance — is_dpp","text":"x expression, constraint, problem object. context Either \"dcp\" (default) \"dgp\": discipline check parameterization . Mirrors CVXPY's is_dpp(context=...).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dpp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check DPP Compliance — is_dpp","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dqcp.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is DQCP-Compliant — is_dqcp","title":"Check if Expression is DQCP-Compliant — is_dqcp","text":"Tests whether expression follows Disciplined Quasiconvex Programming (DQCP) rules.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dqcp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is DQCP-Compliant — is_dqcp","text":"","code":"is_dqcp(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dqcp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is DQCP-Compliant — is_dqcp","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_dqcp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is DQCP-Compliant — is_dqcp","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_hermitian.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Hermitian — is_hermitian","title":"Check if Expression is Hermitian — is_hermitian","text":"Check Expression Hermitian","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_hermitian.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Hermitian — is_hermitian","text":"","code":"is_hermitian(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_hermitian.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Hermitian — is_hermitian","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_hermitian.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Hermitian — is_hermitian","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_imag.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Imaginary — is_imag","title":"Check if Expression is Imaginary — is_imag","text":"Check Expression Imaginary","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_imag.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Imaginary — is_imag","text":"","code":"is_imag(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_imag.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Imaginary — is_imag","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_imag.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Imaginary — is_imag","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_incr.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Atom is Increasing in an Argument — is_incr","title":"Check if Atom is Increasing in an Argument — is_incr","text":"Check Atom Increasing Argument","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_incr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Atom is Increasing in an Argument — is_incr","text":"","code":"is_incr(x, idx, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_incr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Atom is Increasing in an Argument — is_incr","text":"x atom object. idx Integer: argument index (1-based, R convention). ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_incr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Atom is Increasing in an Argument — is_incr","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_concave.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Linearizable-Concave — is_linearizable_concave","title":"Check if an Expression is Linearizable-Concave — is_linearizable_concave","text":"Concave linearizing smooth subexpressions (DNLP composition rule). Mirrors CVXPY's Expression.is_linearizable_concave().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_concave.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Linearizable-Concave — is_linearizable_concave","text":"","code":"is_linearizable_concave(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_concave.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Linearizable-Concave — is_linearizable_concave","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_concave.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Linearizable-Concave — is_linearizable_concave","text":"Logical scalar.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_convex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Linearizable-Convex — is_linearizable_convex","title":"Check if an Expression is Linearizable-Convex — is_linearizable_convex","text":"Convex linearizing smooth subexpressions (DNLP composition rule). Mirrors CVXPY's Expression.is_linearizable_convex().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_convex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Linearizable-Convex — is_linearizable_convex","text":"","code":"is_linearizable_convex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_convex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Linearizable-Convex — is_linearizable_convex","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_linearizable_convex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Linearizable-Convex — is_linearizable_convex","text":"Logical scalar.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_affine.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Log-Log Affine — is_log_log_affine","title":"Check if Expression is Log-Log Affine — is_log_log_affine","text":"Check Expression Log-Log Affine","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_affine.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Log-Log Affine — is_log_log_affine","text":"","code":"is_log_log_affine(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_affine.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Log-Log Affine — is_log_log_affine","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_affine.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Log-Log Affine — is_log_log_affine","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_concave.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Log-Log Concave — is_log_log_concave","title":"Check if Expression is Log-Log Concave — is_log_log_concave","text":"Check Expression Log-Log Concave","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_concave.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Log-Log Concave — is_log_log_concave","text":"","code":"is_log_log_concave(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_concave.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Log-Log Concave — is_log_log_concave","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_concave.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Log-Log Concave — is_log_log_concave","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_convex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Log-Log Convex — is_log_log_convex","title":"Check if Expression is Log-Log Convex — is_log_log_convex","text":"Check Expression Log-Log Convex","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_convex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Log-Log Convex — is_log_log_convex","text":"","code":"is_log_log_convex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_convex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Log-Log Convex — is_log_log_convex","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_log_log_convex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Log-Log Convex — is_log_log_convex","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_lp.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a Problem is a Linear Program — is_lp","title":"Check if a Problem is a Linear Program — is_lp","text":"Check Problem Linear Program","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_lp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a Problem is a Linear Program — is_lp","text":"","code":"is_lp(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_lp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a Problem is a Linear Program — is_lp","text":"x Problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_lp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a Problem is a Linear Program — is_lp","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_matrix.html","id":null,"dir":"Reference","previous_headings":"","what":"Is the Expression a Matrix? — is_matrix","title":"Is the Expression a Matrix? — is_matrix","text":"Returns TRUE expression dimensions greater 1.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_matrix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Is the Expression a Matrix? — is_matrix","text":"","code":"is_matrix(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_matrix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Is the Expression a Matrix? — is_matrix","text":"x CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_matrix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Is the Expression a Matrix? — is_matrix","text":"Logical.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/is_mixed_integer.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a Problem is Mixed-Integer — is_mixed_integer","title":"Check if a Problem is Mixed-Integer — is_mixed_integer","text":"Returns TRUE variable problem boolean integer attribute.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_mixed_integer.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a Problem is Mixed-Integer — is_mixed_integer","text":"","code":"is_mixed_integer(problem)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_mixed_integer.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a Problem is Mixed-Integer — is_mixed_integer","text":"problem Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_mixed_integer.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a Problem is Mixed-Integer — is_mixed_integer","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonneg.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Non-Negative — is_nonneg","title":"Check if Expression is Non-Negative — is_nonneg","text":"Check Expression Non-Negative","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonneg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Non-Negative — is_nonneg","text":"","code":"is_nonneg(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonneg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Non-Negative — is_nonneg","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonneg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Non-Negative — is_nonneg","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonpos.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Non-Positive — is_nonpos","title":"Check if Expression is Non-Positive — is_nonpos","text":"Check Expression Non-Positive","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonpos.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Non-Positive — is_nonpos","text":"","code":"is_nonpos(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonpos.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Non-Positive — is_nonpos","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nonpos.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Non-Positive — is_nonpos","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nsd.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Negative Semidefinite — is_nsd","title":"Check if Expression is Negative Semidefinite — is_nsd","text":"Check Expression Negative Semidefinite","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nsd.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Negative Semidefinite — is_nsd","text":"","code":"is_nsd(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nsd.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Negative Semidefinite — is_nsd","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_nsd.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Negative Semidefinite — is_nsd","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_affine.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Parameter-Affine — is_param_affine","title":"Check if Expression is Parameter-Affine — is_param_affine","text":"Returns TRUE expression affine parameters contains decision variables.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_affine.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Parameter-Affine — is_param_affine","text":"","code":"is_param_affine(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_affine.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Parameter-Affine — is_param_affine","text":"expr CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_affine.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Parameter-Affine — is_param_affine","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_free.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Parameter-Free — is_param_free","title":"Check if Expression is Parameter-Free — is_param_free","text":"Returns TRUE expression contains parameters.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_free.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Parameter-Free — is_param_free","text":"","code":"is_param_free(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_free.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Parameter-Free — is_param_free","text":"expr CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_param_free.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Parameter-Free — is_param_free","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pos.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Strictly Positive — is_pos","title":"Check if Expression is Strictly Positive — is_pos","text":"Check Expression Strictly Positive","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pos.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Strictly Positive — is_pos","text":"","code":"is_pos(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pos.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Strictly Positive — is_pos","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pos.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Strictly Positive — is_pos","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_psd.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Positive Semidefinite — is_psd","title":"Check if Expression is Positive Semidefinite — is_psd","text":"Check Expression Positive Semidefinite","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_psd.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Positive Semidefinite — is_psd","text":"","code":"is_psd(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_psd.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Positive Semidefinite — is_psd","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_psd.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Positive Semidefinite — is_psd","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pwl.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Piecewise Linear — is_pwl","title":"Check if Expression is Piecewise Linear — is_pwl","text":"Check Expression Piecewise Linear Expression Piecewise Linear?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pwl.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Piecewise Linear — is_pwl","text":"","code":"is_pwl(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pwl.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Piecewise Linear — is_pwl","text":"x CVXR expression. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_pwl.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Piecewise Linear — is_pwl","text":"Logical scalar. Logical.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qp.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a Problem is a Quadratic Program — is_qp","title":"Check if a Problem is a Quadratic Program — is_qp","text":"Check Problem Quadratic Program","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a Problem is a Quadratic Program — is_qp","text":"","code":"is_qp(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a Problem is a Quadratic Program — is_qp","text":"x Problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a Problem is a Quadratic Program — is_qp","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qpwa.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Quadratic or Piecewise Affine — is_qpwa","title":"Check if Expression is Quadratic or Piecewise Affine — is_qpwa","text":"Check Expression Quadratic Piecewise Affine","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qpwa.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Quadratic or Piecewise Affine — is_qpwa","text":"","code":"is_qpwa(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qpwa.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Quadratic or Piecewise Affine — is_qpwa","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_qpwa.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Quadratic or Piecewise Affine — is_qpwa","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quadratic.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Quadratic — is_quadratic","title":"Check if an Expression is Quadratic — is_quadratic","text":"Check Expression Quadratic","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quadratic.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Quadratic — is_quadratic","text":"","code":"is_quadratic(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quadratic.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Quadratic — is_quadratic","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quadratic.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Quadratic — is_quadratic","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconcave.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Quasiconcave — is_quasiconcave","title":"Check if Expression is Quasiconcave — is_quasiconcave","text":"Check Expression Quasiconcave","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconcave.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Quasiconcave — is_quasiconcave","text":"","code":"is_quasiconcave(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconcave.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Quasiconcave — is_quasiconcave","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconcave.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Quasiconcave — is_quasiconcave","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconvex.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Quasiconvex — is_quasiconvex","title":"Check if Expression is Quasiconvex — is_quasiconvex","text":"Check Expression Quasiconvex","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconvex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Quasiconvex — is_quasiconvex","text":"","code":"is_quasiconvex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconvex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Quasiconvex — is_quasiconvex","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasiconvex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Quasiconvex — is_quasiconvex","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasilinear.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Quasilinear — is_quasilinear","title":"Check if Expression is Quasilinear — is_quasilinear","text":"Check Expression Quasilinear","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasilinear.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Quasilinear — is_quasilinear","text":"","code":"is_quasilinear(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasilinear.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Quasilinear — is_quasilinear","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_quasilinear.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Quasilinear — is_quasilinear","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_real.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Real — is_real","title":"Check if Expression is Real — is_real","text":"Check Expression Real","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_real.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Real — is_real","text":"","code":"is_real(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_real.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Real — is_real","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_real.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Real — is_real","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_scalar.html","id":null,"dir":"Reference","previous_headings":"","what":"Is the Expression a Scalar? — is_scalar","title":"Is the Expression a Scalar? — is_scalar","text":"Expression Scalar?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_scalar.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Is the Expression a Scalar? — is_scalar","text":"","code":"is_scalar(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_scalar.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Is the Expression a Scalar? — is_scalar","text":"x CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_scalar.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Is the Expression a Scalar? — is_scalar","text":"Logical.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/is_skew_symmetric.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Skew-Symmetric — is_skew_symmetric","title":"Check if Expression is Skew-Symmetric — is_skew_symmetric","text":"Tests whether X + t(X) == 0 (real matrices ). CVXPY SOURCE: expression.py line 470-473","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_skew_symmetric.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Skew-Symmetric — is_skew_symmetric","text":"","code":"is_skew_symmetric(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_skew_symmetric.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Skew-Symmetric — is_skew_symmetric","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_skew_symmetric.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Skew-Symmetric — is_skew_symmetric","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_smooth.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if an Expression is Smooth — is_smooth","title":"Check if an Expression is Smooth — is_smooth","text":"Smooth = constant, linearizable-convex linearizable-concave. Mirrors CVXPY's Expression.is_smooth().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_smooth.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if an Expression is Smooth — is_smooth","text":"","code":"is_smooth(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_smooth.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if an Expression is Smooth — is_smooth","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_smooth.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if an Expression is Smooth — is_smooth","text":"Logical scalar.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/is_symmetric.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Symmetric — is_symmetric","title":"Check if Expression is Symmetric — is_symmetric","text":"Check Expression Symmetric","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_symmetric.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Symmetric — is_symmetric","text":"","code":"is_symmetric(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_symmetric.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Symmetric — is_symmetric","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_symmetric.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Symmetric — is_symmetric","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_vector.html","id":null,"dir":"Reference","previous_headings":"","what":"Is the Expression a Vector? — is_vector","title":"Is the Expression a Vector? — is_vector","text":"Returns TRUE expression one dimension greater 1.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_vector.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Is the Expression a Vector? — is_vector","text":"","code":"is_vector(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_vector.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Is the Expression a Vector? — is_vector","text":"x CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_vector.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Is the Expression a Vector? — is_vector","text":"Logical.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/is_zero.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if Expression is Zero — is_zero","title":"Check if Expression is Zero — is_zero","text":"Check Expression Zero","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_zero.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if Expression is Zero — is_zero","text":"","code":"is_zero(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/is_zero.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if Expression is Zero — is_zero","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/is_zero.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if Expression is Zero — is_zero","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/kl_div.html","id":null,"dir":"Reference","previous_headings":"","what":"KL Divergence: x*log(x/y) - x + y — kl_div","title":"KL Divergence: x*log(x/y) - x + y — kl_div","text":"KL Divergence: x*log(x/y) - x + y","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/kl_div.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"KL Divergence: x*log(x/y) - x + y — kl_div","text":"","code":"kl_div(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/kl_div.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"KL Divergence: x*log(x/y) - x + y — kl_div","text":"x Expression y Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/kl_div.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"KL Divergence: x*log(x/y) - x + y — kl_div","text":"KlDiv atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/kron.html","id":null,"dir":"Reference","previous_headings":"","what":"Kronecker product of two expressions — kron","title":"Kronecker product of two expressions — kron","text":"Kronecker product two expressions","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/kron.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Kronecker product of two expressions — kron","text":"","code":"kron(a, b)"},{"path":"https://www.cvxgrp.org/CVXR/reference/kron.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Kronecker product of two expressions — kron","text":"Expression (one must constant) b Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/kron.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Kronecker product of two expressions — kron","text":"Kron atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/label-set.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the label of an expression — label<-","title":"Set the label of an expression — label<-","text":"R replacement form set_label(). label(x) <- value stores value (coerced character) x's internal label slot; setting NULL clears label. Equivalent x <- set_label(x, value).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/label-set.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the label of an expression — label<-","text":"","code":"label(x) <- value"},{"path":"https://www.cvxgrp.org/CVXR/reference/label-set.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the label of an expression — label<-","text":"x Expression object. value character string, NULL clear.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/label-set.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set the label of an expression — label<-","text":"x, invisibly, label updated.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/label.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the label of an expression — label","title":"Get the label of an expression — label","text":"Returns human-readable label set via set_label() (label(x) <- ...), NULL label set.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/label.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the label of an expression — label","text":"","code":"label(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/label.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the label of an expression — label","text":"x Expression object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/label.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the label of an expression — label","text":"length-1 character string, NULL.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_max.html","id":null,"dir":"Reference","previous_headings":"","what":"Maximum eigenvalue — lambda_max","title":"Maximum eigenvalue — lambda_max","text":"Maximum eigenvalue","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_max.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Maximum eigenvalue — lambda_max","text":"","code":"lambda_max(A)"},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_max.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Maximum eigenvalue — lambda_max","text":"square matrix expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_max.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Maximum eigenvalue — lambda_max","text":"expression representing maximum eigenvalue ","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_min.html","id":null,"dir":"Reference","previous_headings":"","what":"Minimum eigenvalue — lambda_min","title":"Minimum eigenvalue — lambda_min","text":"Minimum eigenvalue","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_min.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Minimum eigenvalue — lambda_min","text":"","code":"lambda_min(A)"},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_min.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Minimum eigenvalue — lambda_min","text":"square matrix expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_min.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Minimum eigenvalue — lambda_min","text":"expression representing minimum eigenvalue ","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_largest.html","id":null,"dir":"Reference","previous_headings":"","what":"Sum of largest k eigenvalues — lambda_sum_largest","title":"Sum of largest k eigenvalues — lambda_sum_largest","text":"Sum largest k eigenvalues","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_largest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sum of largest k eigenvalues — lambda_sum_largest","text":"","code":"lambda_sum_largest(A, k)"},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_largest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sum of largest k eigenvalues — lambda_sum_largest","text":"square matrix expression k Number largest eigenvalues sum (positive integer)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_largest.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sum of largest k eigenvalues — lambda_sum_largest","text":"expression representing sum k largest eigenvalues","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_smallest.html","id":null,"dir":"Reference","previous_headings":"","what":"Sum of smallest k eigenvalues — lambda_sum_smallest","title":"Sum of smallest k eigenvalues — lambda_sum_smallest","text":"Sum smallest k eigenvalues","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_smallest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sum of smallest k eigenvalues — lambda_sum_smallest","text":"","code":"lambda_sum_smallest(A, k)"},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_smallest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sum of smallest k eigenvalues — lambda_sum_smallest","text":"square matrix expression k Number smallest eigenvalues sum (positive integer)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/lambda_sum_smallest.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sum of smallest k eigenvalues — lambda_sum_smallest","text":"expression representing sum k smallest eigenvalues","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/length_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Length of a Vector (Last Nonzero Index) — length_expr","title":"Length of a Vector (Last Nonzero Index) — length_expr","text":"Returns index last nonzero element vector (1-based). atom quasiconvex convex, can used DQCP problems (solved qcp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/length_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Length of a Vector (Last Nonzero Index) — length_expr","text":"","code":"length_expr(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/length_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Length of a Vector (Last Nonzero Index) — length_expr","text":"x CVXR vector expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/length_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Length of a Vector (Last Nonzero Index) — length_expr","text":"Length expression (scalar).","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_args_push_back.html","id":null,"dir":"Reference","previous_headings":"","what":"Append a child LinOp to the args list — linop_args_push_back","title":"Append a child LinOp to the args list — linop_args_push_back","text":"Append child LinOp args list","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_args_push_back.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Append a child LinOp to the args list — linop_args_push_back","text":"","code":"linop_args_push_back(ptr, child_ptr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_args_push_back.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Append a child LinOp to the args list — linop_args_push_back","text":"ptr External pointer parent LinOp. child_ptr External pointer child LinOp.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_new.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a new C++ LinOp external pointer — linop_new","title":"Create a new C++ LinOp external pointer — linop_new","text":"Create new C++ LinOp external pointer","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_new.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a new C++ LinOp external pointer — linop_new","text":"","code":"linop_new()"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_new.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a new C++ LinOp external pointer — linop_new","text":"external pointer C++ LinOp object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_data_ndim.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the data dimensionality on a LinOp — linop_set_data_ndim","title":"Set the data dimensionality on a LinOp — linop_set_data_ndim","text":"Set data dimensionality LinOp","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_data_ndim.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the data dimensionality on a LinOp — linop_set_data_ndim","text":"","code":"linop_set_data_ndim(ptr, value)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_data_ndim.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the data dimensionality on a LinOp — linop_set_data_ndim","text":"ptr External pointer LinOp. value Integer dimensionality (0 = scalar, 2 = matrix).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_dense_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Set dense data on a LinOp — linop_set_dense_data","title":"Set dense data on a LinOp — linop_set_dense_data","text":"Set dense data LinOp","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_dense_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set dense data on a LinOp — linop_set_dense_data","text":"","code":"linop_set_dense_data(ptr, value)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_dense_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set dense data on a LinOp — linop_set_dense_data","text":"ptr External pointer LinOp. value Dense matrix data.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_linop_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Set a LinOp data sub-tree on a LinOp — linop_set_linop_data","title":"Set a LinOp data sub-tree on a LinOp — linop_set_linop_data","text":"Set LinOp data sub-tree LinOp","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_linop_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set a LinOp data sub-tree on a LinOp — linop_set_linop_data","text":"","code":"linop_set_linop_data(ptr, data_ptr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_linop_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set a LinOp data sub-tree on a LinOp — linop_set_linop_data","text":"ptr External pointer LinOp. data_ptr External pointer data LinOp sub-tree.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_sparse_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Set sparse data on a LinOp — linop_set_sparse_data","title":"Set sparse data on a LinOp — linop_set_sparse_data","text":"Set sparse data LinOp","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_sparse_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set sparse data on a LinOp — linop_set_sparse_data","text":"","code":"linop_set_sparse_data(ptr, value)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_sparse_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set sparse data on a LinOp — linop_set_sparse_data","text":"ptr External pointer LinOp. value Sparse matrix data (dgCMatrix similar).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_type.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the type of a LinOp — linop_set_type","title":"Set the type of a LinOp — linop_set_type","text":"Set type LinOp","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_type.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the type of a LinOp — linop_set_type","text":"","code":"linop_set_type(ptr, type)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_set_type.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the type of a LinOp — linop_set_type","text":"ptr External pointer LinOp. type Character string – one .LINOP_TYPES.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_size_push_back.html","id":null,"dir":"Reference","previous_headings":"","what":"Push a dimension to the LinOp size vector — linop_size_push_back","title":"Push a dimension to the LinOp size vector — linop_size_push_back","text":"Push dimension LinOp size vector","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_size_push_back.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Push a dimension to the LinOp size vector — linop_size_push_back","text":"","code":"linop_size_push_back(ptr, value)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_size_push_back.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Push a dimension to the LinOp size vector — linop_size_push_back","text":"ptr External pointer LinOp. value Integer dimension value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_slice_push_back.html","id":null,"dir":"Reference","previous_headings":"","what":"Push a slice (index vector) to a LinOp — linop_slice_push_back","title":"Push a slice (index vector) to a LinOp — linop_slice_push_back","text":"Push slice (index vector) LinOp","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_slice_push_back.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Push a slice (index vector) to a LinOp — linop_slice_push_back","text":"","code":"linop_slice_push_back(ptr, int_vector)"},{"path":"https://www.cvxgrp.org/CVXR/reference/linop_slice_push_back.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Push a slice (index vector) to a LinOp — linop_slice_push_back","text":"ptr External pointer LinOp. int_vector Integer vector indices (0-based C++).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log1p_atom.html","id":null,"dir":"Reference","previous_headings":"","what":"Log(1 + x) – elementwise — log1p_atom","title":"Log(1 + x) – elementwise — log1p_atom","text":"Log(1 + x) – elementwise","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log1p_atom.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Log(1 + x) – elementwise — log1p_atom","text":"","code":"log1p_atom(x) log1p_expr(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/log1p_atom.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Log(1 + x) – elementwise — log1p_atom","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log1p_atom.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Log(1 + x) – elementwise — log1p_atom","text":"Log1p atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_det.html","id":null,"dir":"Reference","previous_headings":"","what":"Log-determinant — log_det","title":"Log-determinant — log_det","text":"Computes log(det()) PSD matrix .","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_det.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Log-determinant — log_det","text":"","code":"log_det(A)"},{"path":"https://www.cvxgrp.org/CVXR/reference/log_det.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Log-determinant — log_det","text":"square PSD matrix expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_det.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Log-determinant — log_det","text":"expression representing log(det())","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_normcdf.html","id":null,"dir":"Reference","previous_headings":"","what":"Elementwise log of the standard normal CDF — log_normcdf","title":"Elementwise log of the standard normal CDF — log_normcdf","text":"Quadratic approximation log(pnorm(x)) modest accuracy range -4 4.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_normcdf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise log of the standard normal CDF — log_normcdf","text":"","code":"log_normcdf(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/log_normcdf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise log of the standard normal CDF — log_normcdf","text":"x Expression numeric value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_normcdf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise log of the standard normal CDF — log_normcdf","text":"concave Expression representing log(Phi(x)).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_sum_exp.html","id":null,"dir":"Reference","previous_headings":"","what":"Log-sum-exp: log(sum(exp(x))) — log_sum_exp","title":"Log-sum-exp: log(sum(exp(x))) — log_sum_exp","text":"Log-sum-exp: log(sum(exp(x)))","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_sum_exp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Log-sum-exp: log(sum(exp(x))) — log_sum_exp","text":"","code":"log_sum_exp(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/log_sum_exp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Log-sum-exp: log(sum(exp(x))) — log_sum_exp","text":"x Expression axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical: keep reduced dimensions?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/log_sum_exp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Log-sum-exp: log(sum(exp(x))) — log_sum_exp","text":"LogSumExp atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/loggamma.html","id":null,"dir":"Reference","previous_headings":"","what":"Elementwise log of the gamma function — loggamma","title":"Elementwise log of the gamma function — loggamma","text":"Piecewise linear approximation log(gamma(x)). modest accuracy full range, approaching perfect accuracy x goes infinity.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/loggamma.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise log of the gamma function — loggamma","text":"","code":"loggamma(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/loggamma.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise log of the gamma function — loggamma","text":"x Expression numeric value (must positive DCP).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/loggamma.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise log of the gamma function — loggamma","text":"convex Expression representing log(gamma(x)).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/logistic.html","id":null,"dir":"Reference","previous_headings":"","what":"Logistic function: log(1 + exp(x)) – elementwise — logistic","title":"Logistic function: log(1 + exp(x)) – elementwise — logistic","text":"Logistic function: log(1 + exp(x)) – elementwise","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/logistic.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Logistic function: log(1 + exp(x)) – elementwise — logistic","text":"","code":"logistic(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/logistic.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Logistic function: log(1 + exp(x)) – elementwise — logistic","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/logistic.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Logistic function: log(1 + exp(x)) – elementwise — logistic","text":"Logistic atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/make_sparse_diagonal_matrix.html","id":null,"dir":"Reference","previous_headings":"","what":"Make a CSC sparse diagonal matrix — make_sparse_diagonal_matrix","title":"Make a CSC sparse diagonal matrix — make_sparse_diagonal_matrix","text":"Make CSC sparse diagonal matrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/make_sparse_diagonal_matrix.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Make a CSC sparse diagonal matrix — make_sparse_diagonal_matrix","text":"","code":"make_sparse_diagonal_matrix(size, diagonal = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/make_sparse_diagonal_matrix.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Make a CSC sparse diagonal matrix — make_sparse_diagonal_matrix","text":"size number rows columns diagonal specified, diagonal values, case size ignored","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/make_sparse_diagonal_matrix.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Make a CSC sparse diagonal matrix — make_sparse_diagonal_matrix","text":"compressed sparse column diagonal matrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":null,"dir":"Reference","previous_headings":"","what":"Standard R Functions for CVXR Expressions — math_atoms","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"CVXR registers methods standard R functions create appropriate atoms applied Expression objects. CVXR expressions, computes matrix/vector norm atom. inputs, falls Matrix::norm dispatches via S4 Matrix base matrix objects. CVXR expressions, computes standard deviation atom (ddof=0 default, matching CVXPY/numpy convention). numeric inputs, falls sd. CVXR expressions, computes variance atom (ddof=0 default). numeric inputs, falls var. CVXR expressions, computes outer product two vectors. inputs, falls outer. CVXR expressions, dispatches DiagVec (vector diagonal matrix) DiagMat (extract diagonal matrix), matching CVXPY's cp.diag() behavior. inputs, falls Matrix::diag dispatches via S4 Matrix base matrix objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"","code":"norm(x, type = \"2\", ...) sd(x, ...) var(x, ...) outer(X, Y, ...) diag(x, nrow, ncol, names = TRUE, k = 0L)"},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"x Expression, matrix, vector, scalar. type Norm type: \"1\", \"2\" (default), \"\"/\"\" (infinity), \"F\"/\"f\" (Frobenius). ... non-Expression inputs: passed outer. X Expression numeric. Y Expression numeric. nrow non-Expression: passed Matrix::diag. ncol non-Expression: passed Matrix::diag. names non-Expression: passed Matrix::diag. k Integer diagonal offset Expressions . k = 0 (default) main diagonal.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"Expression numeric value. Expression numeric value. Expression numeric value. Expression matrix. Expression, matrix, vector.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"k parameter (-diagonal offset) available Expression inputs. full-featured version k non-Expression inputs, use DiagVec DiagMat directly.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"math-group-elementwise-via-s-group-generic-","dir":"Reference","previous_headings":"","what":"Math group (elementwise, via S3 group generic)","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"abs(x) Absolute value (convex, nonneg) exp(x) Exponential (convex, positive) log(x) Natural logarithm (concave, domain x >= 0) sqrt(x) Square root via power(x, 0.5) (concave) log1p(x) log(1+x) compound expression (concave) log2(x), log10(x) Base-2/10 logarithm cumsum(x) Cumulative sum (affine) cummax(x) Cumulative max (convex) cumprod(x) Cumulative product ceiling(x), floor(x) Round /(MIP)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"summary-group-via-s-group-generic-","dir":"Reference","previous_headings":"","what":"Summary group (via S3 group generic)","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"sum(x) Sum entries (affine) max(x) Maximum entry (convex) min(x) Minimum entry (concave)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"s-generic-methods","dir":"Reference","previous_headings":"","what":"S3 generic methods","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"mean(x) Arithmetic mean; pass axis/keepdims via ... diff(x) First-order differences; also cvxr_diff","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"masking-wrappers","dir":"Reference","previous_headings":"","what":"Masking wrappers","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"mask base/stats versions dispatch argument type: norm(x) 2-norm; use type \"1\", \"\" (infinity), \"F\" (Frobenius) sd(x) Standard deviation (ddof=0 expressions) var(x) Variance (ddof=0 expressions) outer(X, Y) Outer product two vector expressions","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/math_atoms.html","id":"advanced-usage","dir":"Reference","previous_headings":"","what":"Advanced usage","title":"Standard R Functions for CVXR Expressions — math_atoms","text":"axis-aware reductions, keepdims, options available standard interface, use explicit functions: cvxr_norm, cvxr_mean, cvxr_diff, cvxr_std, cvxr_var, cvxr_outer.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_frac.html","id":null,"dir":"Reference","previous_headings":"","what":"Matrix fractional function — matrix_frac","title":"Matrix fractional function — matrix_frac","text":"Computes \\(\\mathrm{trace}(X^T P^{-1} X)\\). P constant matrix, uses QuadForm shortcut efficiency.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_frac.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Matrix fractional function — matrix_frac","text":"","code":"matrix_frac(X, P)"},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_frac.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Matrix fractional function — matrix_frac","text":"X matrix expression (n m) P square matrix expression (n n), must PSD","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_frac.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Matrix fractional function — matrix_frac","text":"expression representing \\(\\mathrm{trace}(X^T P^{-1} X)\\)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_trace.html","id":null,"dir":"Reference","previous_headings":"","what":"Trace of a square matrix expression — matrix_trace","title":"Trace of a square matrix expression — matrix_trace","text":"matrix_trace(%*% B), uses O(n^2) identity trace(%*% B) = sum(* t(B)) instead forming full matrix product.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_trace.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Trace of a square matrix expression — matrix_trace","text":"","code":"matrix_trace(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_trace.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Trace of a square matrix expression — matrix_trace","text":"x Expression (square matrix)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/matrix_trace.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Trace of a square matrix expression — matrix_trace","text":"Trace atom equivalent expression (scalar)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/max_elemwise.html","id":null,"dir":"Reference","previous_headings":"","what":"Elementwise maximum of expressions — max_elemwise","title":"Elementwise maximum of expressions — max_elemwise","text":"Elementwise maximum expressions","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/max_elemwise.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise maximum of expressions — max_elemwise","text":"","code":"max_elemwise(...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/max_elemwise.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise maximum of expressions — max_elemwise","text":"... Expressions (least 2)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/max_elemwise.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise maximum of expressions — max_elemwise","text":"Maximum atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/max_entries.html","id":null,"dir":"Reference","previous_headings":"","what":"Maximum entry of an expression — max_entries","title":"Maximum entry of an expression — max_entries","text":"Maximum entry expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/max_entries.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Maximum entry of an expression — max_entries","text":"","code":"max_entries(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/max_entries.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Maximum entry of an expression — max_entries","text":"x Expression axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/max_entries.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Maximum entry of an expression — max_entries","text":"MaxEntries atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/min_elemwise.html","id":null,"dir":"Reference","previous_headings":"","what":"Elementwise minimum of expressions — min_elemwise","title":"Elementwise minimum of expressions — min_elemwise","text":"Elementwise minimum expressions","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/min_elemwise.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise minimum of expressions — min_elemwise","text":"","code":"min_elemwise(...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/min_elemwise.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise minimum of expressions — min_elemwise","text":"... Expressions (least 2)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/min_elemwise.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise minimum of expressions — min_elemwise","text":"Minimum atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/min_entries.html","id":null,"dir":"Reference","previous_headings":"","what":"Minimum entry of an expression — min_entries","title":"Minimum entry of an expression — min_entries","text":"Minimum entry expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/min_entries.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Minimum entry of an expression — min_entries","text":"","code":"min_entries(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/min_entries.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Minimum entry of an expression — min_entries","text":"x Expression axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/min_entries.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Minimum entry of an expression — min_entries","text":"MinEntries atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/mixed_norm.html","id":null,"dir":"Reference","previous_headings":"","what":"Mixed norm (\\(L_{p,q}\\) norm): column-wise p-norm, then q-norm — mixed_norm","title":"Mixed norm (\\(L_{p,q}\\) norm): column-wise p-norm, then q-norm — mixed_norm","text":"Mixed norm (\\(L_{p,q}\\) norm): column-wise p-norm, q-norm","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/mixed_norm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Mixed norm (\\(L_{p,q}\\) norm): column-wise p-norm, then q-norm — mixed_norm","text":"","code":"mixed_norm(X, p = 2, q = 1)"},{"path":"https://www.cvxgrp.org/CVXR/reference/mixed_norm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Mixed norm (\\(L_{p,q}\\) norm): column-wise p-norm, then q-norm — mixed_norm","text":"X Expression (matrix) p Inner norm parameter (default 2) q Outer norm parameter (default 1)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/mixed_norm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Mixed norm (\\(L_{p,q}\\) norm): column-wise p-norm, then q-norm — mixed_norm","text":"Expression representing mixed norm","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/mul_sign.html","id":null,"dir":"Reference","previous_headings":"","what":"Sign of a product of two expressions — mul_sign","title":"Sign of a product of two expressions — mul_sign","text":"Determines whether product two expressions nonnegative, nonpositive, unknown, using sign multiplication table.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/mul_sign.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sign of a product of two expressions — mul_sign","text":"","code":"mul_sign(lh_expr, rh_expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/mul_sign.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sign of a product of two expressions — mul_sign","text":"lh_expr Expression object (left-hand operand) rh_expr Expression object (right-hand operand)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/mul_sign.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sign of a product of two expressions — mul_sign","text":"Named logical vector c(is_nonneg, is_nonpos)","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/multiply.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Elementwise multiplication (deprecated) — multiply","text":"","code":"multiply(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/multiply.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Elementwise multiplication (deprecated) — multiply","text":"x, y Expressions numeric values.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/multiply.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Elementwise multiplication (deprecated) — multiply","text":"Expression representing elementwise product.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/multiply.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Elementwise multiplication (deprecated) — multiply","text":"Use * operator instead: x * y.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/name.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Expression Name — name","title":"Get Expression Name — name","text":"Returns human-readable string representation CVXR expression, variable, constraint.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/name.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Expression Name — name","text":"","code":"name(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/name.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Expression Name — name","text":"x CVXR expression, variable, parameter, constant, constraint.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/name.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Expression Name — name","text":"character string.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/name.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get Expression Name — name","text":"","code":"x <- Variable(2, name = \"x\") name(x) # \"x\" #> [1] \"x\" name(x + 1) # \"x + 1\" #> [1] \"x + 1\""},{"path":"https://www.cvxgrp.org/CVXR/reference/neg.html","id":null,"dir":"Reference","previous_headings":"","what":"Negative part: -min(x, 0) — neg","title":"Negative part: -min(x, 0) — neg","text":"Negative part: -min(x, 0)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/neg.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Negative part: -min(x, 0) — neg","text":"","code":"neg(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/neg.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Negative part: -min(x, 0) — neg","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/neg.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Negative part: -min(x, 0) — neg","text":"negated Minimum atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm1.html","id":null,"dir":"Reference","previous_headings":"","what":"L1 norm of an expression — norm1","title":"L1 norm of an expression — norm1","text":"L1 norm expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm1.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"L1 norm of an expression — norm1","text":"","code":"norm1(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/norm1.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"L1 norm of an expression — norm1","text":"x Expression axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical: keep reduced dimensions?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm1.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"L1 norm of an expression — norm1","text":"Norm1 atom","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/norm2.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Euclidean norm (deprecated alias) — norm2","text":"","code":"norm2(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/norm2.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Euclidean norm (deprecated alias) — norm2","text":"x Expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm2.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Euclidean norm (deprecated alias) — norm2","text":"Expression representing L2 norm.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm2.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Euclidean norm (deprecated alias) — norm2","text":"Use p_norm(x, 2) instead.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_inf.html","id":null,"dir":"Reference","previous_headings":"","what":"L-infinity norm of an expression — norm_inf","title":"L-infinity norm of an expression — norm_inf","text":"L-infinity norm expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_inf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"L-infinity norm of an expression — norm_inf","text":"","code":"norm_inf(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_inf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"L-infinity norm of an expression — norm_inf","text":"x Expression axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical: keep reduced dimensions?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_inf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"L-infinity norm of an expression — norm_inf","text":"NormInf atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_nuc.html","id":null,"dir":"Reference","previous_headings":"","what":"Nuclear norm (sum of singular values) — norm_nuc","title":"Nuclear norm (sum of singular values) — norm_nuc","text":"Nuclear norm (sum singular values)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_nuc.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Nuclear norm (sum of singular values) — norm_nuc","text":"","code":"norm_nuc(A)"},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_nuc.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Nuclear norm (sum of singular values) — norm_nuc","text":"matrix expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/norm_nuc.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Nuclear norm (sum of singular values) — norm_nuc","text":"expression representing nuclear norm ","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/normcdf.html","id":null,"dir":"Reference","previous_headings":"","what":"Standard Normal Cumulative Distribution Function — normcdf","title":"Standard Normal Cumulative Distribution Function — normcdf","text":"Elementwise standard normal CDF \\(\\Phi(x)\\). smooth (DNLP) atom: neither convex concave, usable disciplined-nonlinear- programming path.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/normcdf.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Standard Normal Cumulative Distribution Function — normcdf","text":"","code":"normcdf(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/normcdf.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Standard Normal Cumulative Distribution Function — normcdf","text":"x Expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/normcdf.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Standard Normal Cumulative Distribution Function — normcdf","text":"Normcdf atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/num_cones.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Number of Cones in a Constraint — num_cones","title":"Get the Number of Cones in a Constraint — num_cones","text":"Get Number Cones Constraint","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/num_cones.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Number of Cones in a Constraint — num_cones","text":"","code":"num_cones(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/num_cones.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Number of Cones in a Constraint — num_cones","text":"x cone constraint object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/num_cones.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Number of Cones in a Constraint — num_cones","text":"Integer.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/numeric_value.html","id":null,"dir":"Reference","previous_headings":"","what":"Compute the Numeric Value of an Atom — numeric_value","title":"Compute the Numeric Value of an Atom — numeric_value","text":"Compute Numeric Value Atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/numeric_value.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compute the Numeric Value of an Atom — numeric_value","text":"","code":"numeric_value(x, values, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/numeric_value.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compute the Numeric Value of an Atom — numeric_value","text":"x atom object. values List numeric values atom's arguments. ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/numeric_value.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compute the Numeric Value of an Atom — numeric_value","text":"Numeric value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/objective.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Problem Objective (read-only) — objective","title":"Get Problem Objective (read-only) — objective","text":"Returns problem's objective.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/objective.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Problem Objective (read-only) — objective","text":"","code":"objective(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/objective.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Problem Objective (read-only) — objective","text":"x Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/objective.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Problem Objective (read-only) — objective","text":"Minimize Maximize object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/objective.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get Problem Objective (read-only) — objective","text":"Problem objects immutable: objective modified construction. change objective, create new Problem().","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/objective.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get Problem Objective (read-only) — objective","text":"","code":"x <- Variable(2) prob <- Problem(Minimize(sum_entries(x)), list(x >= 1)) objective(prob) #> minimize SumEntries(var82, NULL, FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/one_minus_pos.html","id":null,"dir":"Reference","previous_headings":"","what":"The difference 1 - x with domain (0, 1) — one_minus_pos","title":"The difference 1 - x with domain (0, 1) — one_minus_pos","text":"Log-log concave atom DGP. Solve psolve(problem, gp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/one_minus_pos.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"The difference 1 - x with domain (0, 1) — one_minus_pos","text":"","code":"one_minus_pos(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/one_minus_pos.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"The difference 1 - x with domain (0, 1) — one_minus_pos","text":"x Expression (elementwise (0, 1))","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/one_minus_pos.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"The difference 1 - x with domain (0, 1) — one_minus_pos","text":"OneMInusPos atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/one_minus_pos.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"The difference 1 - x with domain (0, 1) — one_minus_pos","text":"","code":"x <- Variable(pos = TRUE) prob <- Problem(Maximize(one_minus_pos(x)), list(x >= 0.1, x <= 0.5)) if (FALSE) psolve(prob, gp = TRUE) # \\dontrun{}"},{"path":"https://www.cvxgrp.org/CVXR/reference/p_norm.html","id":null,"dir":"Reference","previous_headings":"","what":"General p-norm of an expression — p_norm","title":"General p-norm of an expression — p_norm","text":"General p-norm expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/p_norm.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"General p-norm of an expression — p_norm","text":"","code":"p_norm( x, p = 2, axis = NULL, keepdims = FALSE, max_denom = 1024L, approx = TRUE )"},{"path":"https://www.cvxgrp.org/CVXR/reference/p_norm.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"General p-norm of an expression — p_norm","text":"x Expression p Numeric exponent (default 2) axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical max_denom Integer max denominator rational approx approx TRUE (default), use SOC approximation. FALSE, use exact power cone.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/p_norm.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"General p-norm of an expression — p_norm","text":"Pnorm, PnormApprox, Norm1, NormInf atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/param_dict.html","id":null,"dir":"Reference","previous_headings":"","what":"Get all Parameters of a Problem as a Named List — param_dict","title":"Get all Parameters of a Problem as a Named List — param_dict","text":"Mirrors CVXPY's Problem.param_dict property (cvxpy/problems/problem.py:260-264): returns named list keyed parameter's name, value Parameter object .","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/param_dict.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get all Parameters of a Problem as a Named List — param_dict","text":"","code":"param_dict(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/param_dict.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get all Parameters of a Problem as a Named List — param_dict","text":"x Problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/param_dict.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get all Parameters of a Problem as a Named List — param_dict","text":"Named list Parameter objects, keyed name.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/parameters.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Parameters in an Expression — parameters","title":"Get the Parameters in an Expression — parameters","text":"Get Parameters Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/parameters.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Parameters in an Expression — parameters","text":"","code":"parameters(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/parameters.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Parameters in an Expression — parameters","text":"x expression problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/parameters.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Parameters in an Expression — parameters","text":"List Parameter objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_optimize.html","id":null,"dir":"Reference","previous_headings":"","what":"Partial optimization transform — partial_optimize","title":"Partial optimization transform — partial_optimize","text":"Builds Expression representing optimal value prob function variables choose optimise . Useful two-stage / hierarchical optimisation, custom atom definitions, embedding sub-problems inside larger problems.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_optimize.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Partial optimization transform — partial_optimize","text":"","code":"partial_optimize( prob, opt_vars = NULL, dont_opt_vars = NULL, solver = NULL, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_optimize.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Partial optimization transform — partial_optimize","text":"prob Problem partially optimise. opt_vars Optional list Variables optimise . dont_opt_vars Optional list Variables keep free arguments resulting expression. solver Optional solver name (passed psolve() PartialProblem evaluated via value() grad()). ... Additional named arguments forwarded psolve() value() / grad() called.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_optimize.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Partial optimization transform — partial_optimize","text":"PartialProblem expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_optimize.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Partial optimization transform — partial_optimize","text":"Exactly one opt_vars dont_opt_vars may NULL; missing list taken complement (relative full list variables prob). supplied, must together cover every variable prob. returned PartialProblem Expression scalar shape: convex prob DCP Minimize objective concave DCP Maximize. Embed like expression larger Problem; larger problem's canonicalizer pull inner objective constraints outer cone form single solve handles layers.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_optimize.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Partial optimization transform — partial_optimize","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(3) t <- Variable(3) abs_x <- partial_optimize( Problem(Minimize(sum_entries(t)), list(-t <= x, x <= t)), opt_vars = list(t) ) ## abs_x is now an expression of x alone, equivalent to sum(abs(x)). } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_trace.html","id":null,"dir":"Reference","previous_headings":"","what":"Partial trace of a tensor product expression — partial_trace","title":"Partial trace of a tensor product expression — partial_trace","text":"Assumes expr 2D square matrix representing Kronecker product length(dims) subsystems. Returns partial trace subsystem index axis (1-indexed).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_trace.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Partial trace of a tensor product expression — partial_trace","text":"","code":"partial_trace(expr, dims, axis = 1L)"},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_trace.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Partial trace of a tensor product expression — partial_trace","text":"expr Expression (2D square matrix) dims Integer vector subsystem dimensions axis Integer (1-indexed) subsystem trace ","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_trace.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Partial trace of a tensor product expression — partial_trace","text":"Expression representing partial trace","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_transpose.html","id":null,"dir":"Reference","previous_headings":"","what":"Partial transpose of a tensor product expression — partial_transpose","title":"Partial transpose of a tensor product expression — partial_transpose","text":"Assumes expr 2D square matrix representing Kronecker product length(dims) subsystems. Returns partial transpose transpose applied subsystem index axis (1-indexed).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_transpose.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Partial transpose of a tensor product expression — partial_transpose","text":"","code":"partial_transpose(expr, dims, axis = 1L)"},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_transpose.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Partial transpose of a tensor product expression — partial_transpose","text":"expr Expression (2D square matrix) dims Integer vector subsystem dimensions axis Integer (1-indexed) subsystem transpose","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/partial_transpose.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Partial transpose of a tensor product expression — partial_transpose","text":"Expression representing partial transpose","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/perspective.html","id":null,"dir":"Reference","previous_headings":"","what":"Perspective Transform — perspective","title":"Perspective Transform — perspective","text":"Creates perspective transform scalar convex concave expression. Given scalar expression f(x) nonneg variable s, perspective s * f(x/s).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/perspective.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Perspective Transform — perspective","text":"","code":"perspective(f, s, f_recession = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/perspective.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Perspective Transform — perspective","text":"f scalar convex concave Expression. s nonneg Variable (scalar). f_recession Optional recession function handling s = 0.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/perspective.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Perspective Transform — perspective","text":"Perspective expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/pf_eigenvalue.html","id":null,"dir":"Reference","previous_headings":"","what":"Perron-Frobenius eigenvalue of a positive matrix — pf_eigenvalue","title":"Perron-Frobenius eigenvalue of a positive matrix — pf_eigenvalue","text":"Log-log convex atom DGP. Solve psolve(problem, gp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/pf_eigenvalue.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Perron-Frobenius eigenvalue of a positive matrix — pf_eigenvalue","text":"","code":"pf_eigenvalue(X)"},{"path":"https://www.cvxgrp.org/CVXR/reference/pf_eigenvalue.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Perron-Frobenius eigenvalue of a positive matrix — pf_eigenvalue","text":"X Expression (positive square matrix)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/pf_eigenvalue.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Perron-Frobenius eigenvalue of a positive matrix — pf_eigenvalue","text":"PfEigenvalue atom (scalar)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/pf_eigenvalue.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Perron-Frobenius eigenvalue of a positive matrix — pf_eigenvalue","text":"","code":"X <- Variable(c(2, 2), pos = TRUE) prob <- Problem(Minimize(pf_eigenvalue(X)), list(X[1,1] >= 0.1, X[2,2] >= 0.1)) if (FALSE) psolve(prob, gp = TRUE) # \\dontrun{}"},{"path":"https://www.cvxgrp.org/CVXR/reference/pos.html","id":null,"dir":"Reference","previous_headings":"","what":"Positive part: max(x, 0) — pos","title":"Positive part: max(x, 0) — pos","text":"Positive part: max(x, 0)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/pos.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Positive part: max(x, 0) — pos","text":"","code":"pos(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/pos.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Positive part: max(x, 0) — pos","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/pos.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Positive part: max(x, 0) — pos","text":"Maximum atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/power.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Power atom — power","title":"Create a Power atom — power","text":"Create Power atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/power.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Power atom — power","text":"","code":"power(x, p, max_denom = 1024L, approx = TRUE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/power.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Power atom — power","text":"x Expression (base), positive constant p variable (identity b^x = exp(x * log(b)) used). p Numeric exponent, Parameter, Expression. p non-constant Expression x positive constant, dispatches exp(p * log(x)). max_denom Maximum denominator rational approximation approx TRUE (default), use SOC approximation. FALSE, use exact power cone.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/power.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Power atom — power","text":"Power PowerApprox atom, exp expression const-base case.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/power.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Create a Power atom — power","text":"sqrt(x) CVXR expression dispatches Power(x, 0.5) via Math group generic. See math_atoms standard R function dispatch.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Problem Data for a Solver — problem_data","title":"Get Problem Data for a Solver — problem_data","text":"Returns problem data passed specific solver, along reduction chain inverse data solution retrieval.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Problem Data for a Solver — problem_data","text":"","code":"problem_data( x, solver = NULL, gp = FALSE, enforce_dpp = FALSE, ignore_dpp = FALSE, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Problem Data for a Solver — problem_data","text":"x Problem object. solver Character string naming solver, NULL automatic selection. gp Logical; TRUE, parse problem geometric program. enforce_dpp Logical; TRUE, raise error parametrized problem DPP instead compiling non-DPP. ignore_dpp Logical; TRUE, treat DPP problem non-DPP (skip DPP fast path). ... Additional solver options.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Problem Data for a Solver — problem_data","text":"list components data, chain, inverse_data.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_solution.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Raw Solution Object (deprecated) — problem_solution","text":"","code":"problem_solution(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_solution.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Raw Solution Object (deprecated) — problem_solution","text":"x Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_solution.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Raw Solution Object (deprecated) — problem_solution","text":"Solution object, NULL problem solved.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_solution.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get the Raw Solution Object (deprecated) — problem_solution","text":"Use solution instead.","code":""},{"path":[]},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_status.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Solution Status of a Problem (deprecated) — problem_status","text":"","code":"problem_status(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_status.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Solution Status of a Problem (deprecated) — problem_status","text":"x Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_status.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Solution Status of a Problem (deprecated) — problem_status","text":"Character string, NULL problem solved.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_status.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get the Solution Status of a Problem (deprecated) — problem_status","text":"Use status instead.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_unpack_results.html","id":null,"dir":"Reference","previous_headings":"","what":"Unpack Solver Results into a Problem — problem_unpack_results","title":"Unpack Solver Results into a Problem — problem_unpack_results","text":"Inverts reduction chain unpacks raw solver solution original problem's variables constraints. step 3 decomposed solve pipeline: problem_data() – compile problem solve_via_data(chain, data) – call solver problem_unpack_results() – invert unpack","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_unpack_results.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Unpack Solver Results into a Problem — problem_unpack_results","text":"","code":"problem_unpack_results(problem, solution, chain, inverse_data)"},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_unpack_results.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Unpack Solver Results into a Problem — problem_unpack_results","text":"problem Problem object. solution raw solver result solve_via_data(). chain SolvingChain problem_data(). inverse_data inverse data list problem_data().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_unpack_results.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Unpack Solver Results into a Problem — problem_unpack_results","text":"problem object (invisibly), solution unpacked.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/problem_unpack_results.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Unpack Solver Results into a Problem — problem_unpack_results","text":"calling function, variable values available via value() constraint duals via dual_value().","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/prod_entries.html","id":null,"dir":"Reference","previous_headings":"","what":"Product of entries along an axis — prod_entries","title":"Product of entries along an axis — prod_entries","text":"Used DGP (geometric programming) context. Solve psolve(problem, gp = TRUE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/prod_entries.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Product of entries along an axis — prod_entries","text":"","code":"prod_entries(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/prod_entries.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Product of entries along an axis — prod_entries","text":"x Expression axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Whether keep reduced dimensions","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/prod_entries.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Product of entries along an axis — prod_entries","text":"Prod atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/prod_entries.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Product of entries along an axis — prod_entries","text":"","code":"x <- Variable(3, pos = TRUE) prob <- Problem(Minimize(prod_entries(x)), list(x >= 2)) if (FALSE) psolve(prob, gp = TRUE) # \\dontrun{}"},{"path":"https://www.cvxgrp.org/CVXR/reference/project.html","id":null,"dir":"Reference","previous_headings":"","what":"Project a Value onto the Domain of a Leaf — project","title":"Project a Value onto the Domain of a Leaf — project","text":"Project Value onto Domain Leaf","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/project.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Project a Value onto the Domain of a Leaf — project","text":"","code":"project(x, val, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/project.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Project a Value onto the Domain of a Leaf — project","text":"x leaf expression object. val value project. ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/project.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Project a Value onto the Domain of a Leaf — project","text":"projected value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/psolve.html","id":null,"dir":"Reference","previous_headings":"","what":"Solve a Convex Optimization Problem — psolve","title":"Solve a Convex Optimization Problem — psolve","text":"Solves problem returns optimal objective value. solving, variable values can retrieved value, constraint dual values dual_value, solver information solver_stats.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/psolve.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Solve a Convex Optimization Problem — psolve","text":"","code":"psolve( problem, solver = NULL, gp = FALSE, qcp = FALSE, verbose = FALSE, warm_start = FALSE, requires_grad = FALSE, nlp = FALSE, enforce_dpp = FALSE, ignore_dpp = FALSE, solver_path = NULL, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/psolve.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Solve a Convex Optimization Problem — psolve","text":"problem Problem object. solver Character string naming solver use (e.g., \"CLARABEL\", \"SCS\", \"OSQP\", \"HIGHS\"), NULL automatic selection. gp Logical; TRUE, solve geometric program (DGP). qcp Logical; TRUE, solve quasiconvex program (DQCP) via bisection. needed non-DCP DQCP problems. verbose Logical; TRUE, print solver output. warm_start Logical; TRUE, use current variable values warm-start point solver. requires_grad Logical; TRUE, route solve DIFFCP wrapper backward() / derivative() can recover gradients. nlp Logical; TRUE, solve problem disciplined nonlinear program (DNLP) using NLP reduction chain NLP solver (e.g. \"UNO\"). problem must satisfy is_dnlp(). enforce_dpp Logical; TRUE, raise error parametrized problem DPP instead compiling non-DPP. ignore_dpp Logical; TRUE, treat DPP problem non-DPP (skip DPP fast path). solver_path Optional fallback chain. character vector solver names list whose entries either character names length-2 list(name, opts) pairs. solver tried sequence; first succeeds returns result. every solver fails, SolverError-classed condition raised per-solver error messages. combined solver. Mirrors CVXPY's solver_path argument. ... Solver options passed solver_opts(). Includes chain-construction options (use_quad_obj), standard tolerances (feastol, reltol, abstol, num_iter), solver-specific parameters (e.g., eps_abs, scip_params). See solver_opts details. DQCP problems (qcp = TRUE), additional arguments include low, high, eps, max_iters, max_iters_interval_search.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/psolve.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Solve a Convex Optimization Problem — psolve","text":"optimal objective value (numeric scalar), Inf / -Inf infeasible / unbounded problems.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/psolve.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Solve a Convex Optimization Problem — psolve","text":"","code":"x <- Variable() prob <- Problem(Minimize(x), list(x >= 5)) result <- psolve(prob, solver = \"CLARABEL\")"},{"path":"https://www.cvxgrp.org/CVXR/reference/ptp.html","id":null,"dir":"Reference","previous_headings":"","what":"Peak-to-peak (range): max(x) - min(x) — ptp","title":"Peak-to-peak (range): max(x) - min(x) — ptp","text":"Computes range values along axis: max(x) - min(x). result always nonnegative.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ptp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Peak-to-peak (range): max(x) - min(x) — ptp","text":"","code":"ptp(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/ptp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Peak-to-peak (range): max(x) - min(x) — ptp","text":"x Expression numeric value. axis NULL (), 0 (columns), 1 (rows). keepdims Logical; keep reduced dimension?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/ptp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Peak-to-peak (range): max(x) - min(x) — ptp","text":"Expression representing max(x) - min(x).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_form.html","id":null,"dir":"Reference","previous_headings":"","what":"Quadratic form x^T P x — quad_form","title":"Quadratic form x^T P x — quad_form","text":"x constant, returns t(Conj(x)) %*% P %*% x (affine P). P constant, returns QuadForm atom (quadratic x). least one x P must constant.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_form.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Quadratic form x^T P x — quad_form","text":"","code":"quad_form(x, P, assume_PSD = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_form.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Quadratic form x^T P x — quad_form","text":"x Expression (vector) P Expression (square matrix, symmetric/Hermitian) assume_PSD TRUE, assume P PSD without checking (P constant).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_form.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Quadratic form x^T P x — quad_form","text":"QuadForm atom affine Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_form_dpp_scope_active.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a quad_form DPP Scope is Active — quad_form_dpp_scope_active","title":"Check if a quad_form DPP Scope is Active — quad_form_dpp_scope_active","text":"Check quad_form DPP Scope Active","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_form_dpp_scope_active.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a quad_form DPP Scope is Active — quad_form_dpp_scope_active","text":"","code":"quad_form_dpp_scope_active()"},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_form_dpp_scope_active.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a quad_form DPP Scope is Active — quad_form_dpp_scope_active","text":"Logical; TRUE with_quad_form_dpp_scope block active.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_over_lin.html","id":null,"dir":"Reference","previous_headings":"","what":"Sum of squares divided by a scalar — quad_over_lin","title":"Sum of squares divided by a scalar — quad_over_lin","text":"Sum squares divided scalar","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_over_lin.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sum of squares divided by a scalar — quad_over_lin","text":"","code":"quad_over_lin(x, y, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_over_lin.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sum of squares divided by a scalar — quad_over_lin","text":"x Expression y Expression (scalar, positive) axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical: keep reduced dimensions?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/quad_over_lin.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sum of squares divided by a scalar — quad_over_lin","text":"QuadOverLin atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/real_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract Real Part of Expression — real_expr","title":"Extract Real Part of Expression — real_expr","text":"Returns real part complex expression. R's native Re() dispatches CVXR expressions via Complex S3 group handler.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/real_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract Real Part of Expression — real_expr","text":"","code":"real_expr(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/real_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract Real Part of Expression — real_expr","text":"expr CVXR Expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/real_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract Real Part of Expression — real_expr","text":"Real_ atom.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-chain-rule.html","id":null,"dir":"Reference","previous_headings":"","what":"Reduction chain-rule hooks (dict-in / dict-out) — reduction-chain-rule","title":"Reduction chain-rule hooks (dict-in / dict-out) — reduction-chain-rule","text":"Walk solving chain Problem$backward() / Problem$derivative(). hook takes returns named list keyed .character(leaf@id) whose values shaped arrays (leaf's dim). base Reduction methods identity pass-throughs.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-chain-rule.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reduction chain-rule hooks (dict-in / dict-out) — reduction-chain-rule","text":"","code":"var_backward(x, del_vars) var_forward(x, dvars) param_backward(x, dparams) param_forward(x, param_deltas)"},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-chain-rule.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Reduction chain-rule hooks (dict-in / dict-out) — reduction-chain-rule","text":"x Reduction. del_vars Named list var-id -> gradient array (outer representation). dvars Named list var-id -> delta array (inner representation). dparams Named list param-id -> gradient array (inner representation). param_deltas Named list param-id -> delta array (outer representation).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-chain-rule.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reduction chain-rule hooks (dict-in / dict-out) — reduction-chain-rule","text":"var_backward: map inner (reduced) representation. var_forward: map outer (original) representation. param_backward: map outer (original) representation. param_forward: map inner (transformed) representation.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-id-map.html","id":null,"dir":"Reference","previous_headings":"","what":"Reduction leaf-id maps — reduction-id-map","title":"Reduction leaf-id maps — reduction-id-map","text":"Reduction leaf-id maps","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-id-map.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reduction leaf-id maps — reduction-id-map","text":"","code":"var_id_map(x) param_id_map(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-id-map.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Reduction leaf-id maps — reduction-id-map","text":"x Reduction.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction-id-map.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reduction leaf-id maps — reduction-id-map","text":"named list orig-id -> character vector reduced-id(s); empty default (reduction replaces leaves).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_accepts.html","id":null,"dir":"Reference","previous_headings":"","what":"Check if a Reduction Accepts a Problem — reduction_accepts","title":"Check if a Reduction Accepts a Problem — reduction_accepts","text":"Check Reduction Accepts Problem","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_accepts.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check if a Reduction Accepts a Problem — reduction_accepts","text":"","code":"reduction_accepts(x, problem, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_accepts.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check if a Reduction Accepts a Problem — reduction_accepts","text":"x Reduction object. problem Problem object. ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_accepts.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check if a Reduction Accepts a Problem — reduction_accepts","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_apply.html","id":null,"dir":"Reference","previous_headings":"","what":"Apply a Reduction to a Problem — reduction_apply","title":"Apply a Reduction to a Problem — reduction_apply","text":"Apply Reduction Problem","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_apply.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Apply a Reduction to a Problem — reduction_apply","text":"","code":"reduction_apply(x, problem, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_apply.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Apply a Reduction to a Problem — reduction_apply","text":"x Reduction object. problem Problem object. ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_apply.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Apply a Reduction to a Problem — reduction_apply","text":"List (new_problem, inverse_data).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_invert.html","id":null,"dir":"Reference","previous_headings":"","what":"Invert a Solution through a Reduction — reduction_invert","title":"Invert a Solution through a Reduction — reduction_invert","text":"Invert Solution Reduction","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_invert.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Invert a Solution through a Reduction — reduction_invert","text":"","code":"reduction_invert(x, solution, inverse_data, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_invert.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Invert a Solution through a Reduction — reduction_invert","text":"x Reduction object. solution solution object. inverse_data Inverse data apply. ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reduction_invert.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Invert a Solution through a Reduction — reduction_invert","text":"solution original problem.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/rel_entr.html","id":null,"dir":"Reference","previous_headings":"","what":"Relative Entropy: x*log(x/y) — rel_entr","title":"Relative Entropy: x*log(x/y) — rel_entr","text":"Relative Entropy: x*log(x/y)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/rel_entr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Relative Entropy: x*log(x/y) — rel_entr","text":"","code":"rel_entr(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/rel_entr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Relative Entropy: x*log(x/y) — rel_entr","text":"x Expression y Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/rel_entr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Relative Entropy: x*log(x/y) — rel_entr","text":"RelEntr atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reshape_expr.html","id":null,"dir":"Reference","previous_headings":"","what":"Reshape an expression to a new shape — reshape_expr","title":"Reshape an expression to a new shape — reshape_expr","text":"Reshape expression new shape","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reshape_expr.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reshape an expression to a new shape — reshape_expr","text":"","code":"reshape_expr(x, dim, order = \"F\")"},{"path":"https://www.cvxgrp.org/CVXR/reference/reshape_expr.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Reshape an expression to a new shape — reshape_expr","text":"x Expression numeric value. dim Integer vector length 2: target shape c(nrow, ncol). single integer treated c(dim, 1). Use -1 infer dimension. order Character: \"F\" (column-major, default) \"C\" (row-major).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/reshape_expr.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reshape an expression to a new shape — reshape_expr","text":"Reshape expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/residual.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Residual of a Constraint — residual","title":"Get the Residual of a Constraint — residual","text":"Returns residual constraint, measuring much constraint violated satisfied.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/residual.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Residual of a Constraint — residual","text":"","code":"residual(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/residual.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Residual of a Constraint — residual","text":"x constraint object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/residual.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Residual of a Constraint — residual","text":"Numeric array, NULL expression value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/resolvent.html","id":null,"dir":"Reference","previous_headings":"","what":"Resolvent inverse(sI - X) — resolvent","title":"Resolvent inverse(sI - X) — resolvent","text":"Equivalent (1/s) * eye_minus_inv(X / s).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/resolvent.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Resolvent inverse(sI - X) — resolvent","text":"","code":"resolvent(X, s)"},{"path":"https://www.cvxgrp.org/CVXR/reference/resolvent.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Resolvent inverse(sI - X) — resolvent","text":"X Expression (positive square matrix) s positive scalar","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/resolvent.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Resolvent inverse(sI - X) — resolvent","text":"expression resolvent","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sample_bounds.html","id":null,"dir":"Reference","previous_headings":"","what":"Sampling Bounds for NLP Random Restarts — sample_bounds","title":"Sampling Bounds for NLP Random Restarts — sample_bounds","text":"Get set Variable's sample_bounds – (low, high) region used draw random initial points best_of NLP solves (psolve(prob, nlp = TRUE, best_of = n)). set, overrides variable's value random initialization; NULL (default) finite variable bounds used instead. Supply pair c(low, high) (scalars broadcast variable shape) list(low, high) per-entry vectors; set NULL clear.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sample_bounds.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sampling Bounds for NLP Random Restarts — sample_bounds","text":"","code":"sample_bounds(x, ...) sample_bounds(x) <- value"},{"path":"https://www.cvxgrp.org/CVXR/reference/sample_bounds.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sampling Bounds for NLP Random Restarts — sample_bounds","text":"x Variable. ... used. value (low, high) pair, NULL clear.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sample_bounds.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sampling Bounds for NLP Random Restarts — sample_bounds","text":"sample_bounds(x) returns stored list(low, high) NULL; setter returns modified variable.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/save_dual_value.html","id":null,"dir":"Reference","previous_headings":"","what":"Save Dual Variable Values from Solver Output — save_dual_value","title":"Save Dual Variable Values from Solver Output — save_dual_value","text":"Save Dual Variable Values Solver Output","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/save_dual_value.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Save Dual Variable Values from Solver Output — save_dual_value","text":"","code":"save_dual_value(x, val)"},{"path":"https://www.cvxgrp.org/CVXR/reference/save_dual_value.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Save Dual Variable Values from Solver Output — save_dual_value","text":"x constraint object. val dual value solver.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/save_dual_value.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Save Dual Variable Values from Solver Output — save_dual_value","text":"Invisible constraint (side effect: sets dual variable values).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalar_product.html","id":null,"dir":"Reference","previous_headings":"","what":"Scalar product (alias for vdot) — scalar_product","title":"Scalar product (alias for vdot) — scalar_product","text":"Scalar product (alias vdot)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalar_product.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Scalar product (alias for vdot) — scalar_product","text":"","code":"scalar_product(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/scalar_product.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Scalar product (alias for vdot) — scalar_product","text":"x Expression numeric value. y Expression numeric value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalar_product.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Scalar product (alias for vdot) — scalar_product","text":"scalar Expression representing sum(x * y).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalarize.html","id":null,"dir":"Reference","previous_headings":"","what":"Scalarize multiple objectives into a single objective — scalarize","title":"Scalarize multiple objectives into a single objective — scalarize","text":"Transforms combining several Minimize/Maximize objectives one objective multi-objective optimization. Mirrors CVXPY's cvxpy.transforms.scalarize submodule; access members $:","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalarize.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Scalarize multiple objectives into a single objective — scalarize","text":"","code":"scalarize"},{"path":"https://www.cvxgrp.org/CVXR/reference/scalarize.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Scalarize multiple objectives into a single objective — scalarize","text":"named list four functions.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalarize.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Scalarize multiple objectives into a single objective — scalarize","text":"scalarize$weighted_sum(objectives, weights) – weighted sum objectives. scalarize$targets_and_priorities(objectives, priorities, targets, limits = NULL, off_target = 1e-5) – penalize objective within [target, limit] range; negative priority flips objective sense. scalarize$max(objectives, weights) – minimize largest weighted objective term. scalarize$log_sum_exp(objectives, weights, gamma = 1.0) – smooth maximum; gamma -> 0 approaches weighted_sum, gamma -> Inf approaches max.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalarize.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Scalarize multiple objectives into a single objective — scalarize","text":"","code":"x <- Variable() objs <- list(Minimize(square(x)), Minimize(square(x - 1))) obj <- scalarize$weighted_sum(objs, c(1, 1)) if (FALSE) psolve(Problem(obj)) # \\dontrun{}"},{"path":"https://www.cvxgrp.org/CVXR/reference/scalene.html","id":null,"dir":"Reference","previous_headings":"","what":"Scalene penalty: alpha * pos(x) + beta * neg(x) — scalene","title":"Scalene penalty: alpha * pos(x) + beta * neg(x) — scalene","text":"Scalene penalty: alpha * pos(x) + beta * neg(x)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalene.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Scalene penalty: alpha * pos(x) + beta * neg(x) — scalene","text":"","code":"scalene(x, alpha, beta)"},{"path":"https://www.cvxgrp.org/CVXR/reference/scalene.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Scalene penalty: alpha * pos(x) + beta * neg(x) — scalene","text":"x Expression alpha Coefficient positive part beta Coefficient negative part","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/scalene.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Scalene penalty: alpha * pos(x) + beta * neg(x) — scalene","text":"Expression representing scalene penalty","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/set_label.html","id":null,"dir":"Reference","previous_headings":"","what":"Attach a label to an expression — set_label","title":"Attach a label to an expression — set_label","text":"CVXPY-parity setter returns first argument calls can chained (e.g. sum_squares(x) |> set_label(\"cost\")). See format_labeled() pretty-printer consumes labels.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/set_label.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Attach a label to an expression — set_label","text":"","code":"set_label(x, value)"},{"path":"https://www.cvxgrp.org/CVXR/reference/set_label.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Attach a label to an expression — set_label","text":"x Expression object. value label (character; coerced via .character). Pass NULL clear existing label.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/set_label.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Attach a label to an expression — set_label","text":"x label updated.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/shape_from_args.html","id":null,"dir":"Reference","previous_headings":"","what":"Infer Shape from Arguments — shape_from_args","title":"Infer Shape from Arguments — shape_from_args","text":"Infer Shape Arguments","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/shape_from_args.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Infer Shape from Arguments — shape_from_args","text":"","code":"shape_from_args(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/shape_from_args.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Infer Shape from Arguments — shape_from_args","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/shape_from_args.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Infer Shape from Arguments — shape_from_args","text":"Integer vector shape dimensions.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sigma_max.html","id":null,"dir":"Reference","previous_headings":"","what":"Maximum singular value — sigma_max","title":"Maximum singular value — sigma_max","text":"Maximum singular value","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sigma_max.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Maximum singular value — sigma_max","text":"","code":"sigma_max(A)"},{"path":"https://www.cvxgrp.org/CVXR/reference/sigma_max.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Maximum singular value — sigma_max","text":"matrix expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sigma_max.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Maximum singular value — sigma_max","text":"expression representing maximum singular value ","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sign_from_args.html","id":null,"dir":"Reference","previous_headings":"","what":"Infer Sign from Arguments — sign_from_args","title":"Infer Sign from Arguments — sign_from_args","text":"Infer Sign Arguments","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sign_from_args.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Infer Sign from Arguments — sign_from_args","text":"","code":"sign_from_args(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/sign_from_args.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Infer Sign from Arguments — sign_from_args","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sign_from_args.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Infer Sign from Arguments — sign_from_args","text":"Character string: sign constant.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/size.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Expression Size — size","title":"Get Expression Size — size","text":"Returns total number elements expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/size.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Expression Size — size","text":"","code":"size(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/size.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Expression Size — size","text":"x CVXR expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/size.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Expression Size — size","text":"integer (product shape dimensions).","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/size_metrics.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Size Metrics for a Problem — size_metrics","title":"Get Size Metrics for a Problem — size_metrics","text":"Mirrors CVXPY's Problem.size_metrics property (cvxpy/problems/problem.py:486-490, class lines 1690-1752): returns SizeMetrics object summarising problem's scale.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/size_metrics.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Size Metrics for a Problem — size_metrics","text":"","code":"size_metrics(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/size_metrics.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Size Metrics for a Problem — size_metrics","text":"x Problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/size_metrics.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Size Metrics for a Problem — size_metrics","text":"SizeMetrics object seven numeric fields.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/smith_annotation.html","id":null,"dir":"Reference","previous_headings":"","what":"Smith Form Annotation for an Expression Node — smith_annotation","title":"Smith Form Annotation for an Expression Node — smith_annotation","text":"Returns LaTeX-math annotation data visualizing canonicalization pipeline. atom class can override provide custom LaTeX name, definition, conic form. default stub auto-generates class metadata.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/smith_annotation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Smith Form Annotation for an Expression Node — smith_annotation","text":"","code":"smith_annotation(expr, aux_var = \"t\", child_vars = character(0), ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/smith_annotation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Smith Form Annotation for an Expression Node — smith_annotation","text":"expr Expression, Atom, Leaf. aux_var Character: auxiliary variable name assigned node (e.g., \"t_3\"). child_vars Character vector: auxiliary variable names children. ... Reserved future use.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/smith_annotation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Smith Form Annotation for an Expression Node — smith_annotation","text":"list components: latex_name, latex_definition, conic, doc_topic, developer.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solution.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Raw Solution Object — solution","title":"Get the Raw Solution Object — solution","text":"Returns raw Solution object recent solve, containing primal dual variable values, status, solver attributes.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solution.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Raw Solution Object — solution","text":"","code":"solution(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/solution.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Raw Solution Object — solution","text":"x Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solution.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Raw Solution Object — solution","text":"Solution object, NULL problem solved.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solve_via_data.html","id":null,"dir":"Reference","previous_headings":"","what":"Solve via Raw Data — solve_via_data","title":"Solve via Raw Data — solve_via_data","text":"Calls solver pre-compiled problem data (step 2 decomposed solve pipeline). Dispatches x: x SolvingChain, delegates terminal solver proper cache management.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solve_via_data.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Solve via Raw Data — solve_via_data","text":"","code":"solve_via_data( x, data, warm_start = FALSE, verbose = FALSE, solver_opts = list(), ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/solve_via_data.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Solve via Raw Data — solve_via_data","text":"x SolvingChain (preferred) Solver object. data Named list solver data problem_data(). warm_start Logical; use warm-start supported. verbose Logical; print solver output. solver_opts Named list solver-specific options. ... Additional arguments forwarded method (e.g. problem SolvingChain method, solver_cache Solver method).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solve_via_data.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Solve via Raw Data — solve_via_data","text":"Solver-specific result (named list).","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/solver-constants.html","id":null,"dir":"Reference","previous_headings":"","what":"Solver Name Constants — solver-constants","title":"Solver Name Constants — solver-constants","text":"Character string constants identifying available solvers.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver-constants.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Solver Name Constants — solver-constants","text":"","code":"SCS_SOLVER OSQP_SOLVER CLARABEL_SOLVER DIFFCP_SOLVER HIGHS_SOLVER MOSEK_SOLVER GUROBI_SOLVER GLPK_SOLVER GLPK_MI_SOLVER ECOS_SOLVER ECOS_BB_SOLVER CPLEX_SOLVER CVXOPT_SOLVER PIQP_SOLVER SCIP_SOLVER XPRESS_SOLVER IPOPT_SOLVER KNITRO_SOLVER UNO_SOLVER COPT_SOLVER"},{"path":"https://www.cvxgrp.org/CVXR/reference/solver-constants.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Solver Name Constants — solver-constants","text":"character string.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_default_param.html","id":null,"dir":"Reference","previous_headings":"","what":"Standard Solver Parameter Mappings — solver_default_param","title":"Standard Solver Parameter Mappings — solver_default_param","text":"Returns named list mapping standard CVXR parameter names (reltol, abstol, feastol, num_iter) solver-specific parameter names default values. Used internally psolve translate standard parameters solver-native names.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_default_param.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Standard Solver Parameter Mappings — solver_default_param","text":"","code":"solver_default_param()"},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_default_param.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Standard Solver Parameter Mappings — solver_default_param","text":"named list keyed solver name (e.g. \"CLARABEL\", \"OSQP\"). element list standard parameter mappings, mapping name (solver-native parameter name) value (default value).","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_name.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Solver Name — solver_name","title":"Get Solver Name — solver_name","text":"Get Solver Name","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_name.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Solver Name — solver_name","text":"","code":"solver_name(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_name.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Solver Name — solver_name","text":"x Solver object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_name.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Solver Name — solver_name","text":"Character string solver name.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_opts.html","id":null,"dir":"Reference","previous_headings":"","what":"Create Solver Options — solver_opts","title":"Create Solver Options — solver_opts","text":"Constructs structured list solver options use psolve problem_data. Known parameters sorted named slots; solver-specific parameters collected $solver_specific.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_opts.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create Solver Options — solver_opts","text":"","code":"solver_opts( use_quad_obj = TRUE, feastol = NULL, reltol = NULL, abstol = NULL, num_iter = NULL, ... )"},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_opts.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create Solver Options — solver_opts","text":"use_quad_obj Logical. TRUE (default), quadratic objectives use QP matrix path. FALSE, forces conic decomposition via quad_form_canon. feastol Feasibility tolerance (solver-agnostic). Translated solver-native name internal mapping. NULL uses solver default. reltol Relative tolerance. NULL uses solver default. abstol Absolute tolerance. NULL uses solver default. num_iter Maximum iterations. NULL uses solver default. ... Solver-specific parameters passed directly solver (e.g., eps_abs, scip_params, mosek_params).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_opts.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create Solver Options — solver_opts","text":"named list class \"solver_opts\".","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_opts.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create Solver Options — solver_opts","text":"","code":"solver_opts(feastol = 1e-6) #> $use_quad_obj #> [1] TRUE #> #> $feastol #> [1] 1e-06 #> #> $reltol #> NULL #> #> $abstol #> NULL #> #> $num_iter #> NULL #> #> $solver_specific #> list() #> #> attr(,\"class\") #> [1] \"solver_opts\" solver_opts(use_quad_obj = FALSE, eps_abs = 1e-7) #> $use_quad_obj #> [1] FALSE #> #> $feastol #> NULL #> #> $reltol #> NULL #> #> $abstol #> NULL #> #> $num_iter #> NULL #> #> $solver_specific #> $solver_specific$eps_abs #> [1] 1e-07 #> #> #> attr(,\"class\") #> [1] \"solver_opts\" solver_opts(scip_params = list(\"limits/time\" = 10)) #> $use_quad_obj #> [1] TRUE #> #> $feastol #> NULL #> #> $reltol #> NULL #> #> $abstol #> NULL #> #> $num_iter #> NULL #> #> $solver_specific #> $solver_specific$scip_params #> $solver_specific$scip_params$`limits/time` #> [1] 10 #> #> #> #> attr(,\"class\") #> [1] \"solver_opts\""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_stats.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Solver Statistics — solver_stats","title":"Get Solver Statistics — solver_stats","text":"Returns solver statistics recent solve, including solve time, setup time, iteration count.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_stats.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Solver Statistics — solver_stats","text":"","code":"solver_stats(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_stats.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Solver Statistics — solver_stats","text":"x Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/solver_stats.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Solver Statistics — solver_stats","text":"SolverStats object, NULL problem solved.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/split_adjoint.html","id":null,"dir":"Reference","previous_headings":"","what":"Adjoint of split_solution — split_adjoint","title":"Adjoint of split_solution — split_adjoint","text":"Given named list mapping variable ids (shape-aligned) deltas, packs single length-x_length numeric vector var_id_to_col order. Mirrors ParamConeProg.split_adjoint cone_matrix_stuffing.py:304-318.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/split_adjoint.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Adjoint of split_solution — split_adjoint","text":"","code":"split_adjoint(param_prog, del_vars)"},{"path":"https://www.cvxgrp.org/CVXR/reference/split_adjoint.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Adjoint of split_solution — split_adjoint","text":"param_prog ParamConeProg. del_vars named list .character(var_id) -> array.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/split_adjoint.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Adjoint of split_solution — split_adjoint","text":"Numeric vector length x_length.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/split_solution.html","id":null,"dir":"Reference","previous_headings":"","what":"Split a primal solution into per-variable arrays — split_solution","title":"Split a primal solution into per-variable arrays — split_solution","text":"Mirrors ParamConeProg.split_solution cone_matrix_stuffing.py:282-302.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/split_solution.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Split a primal solution into per-variable arrays — split_solution","text":"","code":"split_solution(param_prog, sltn, active_vars = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/split_solution.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Split a primal solution into per-variable arrays — split_solution","text":"param_prog ParamConeProg. sltn Numeric vector length x_length – primal x conic forward solve. active_vars Optional character vector variable ids restrict output . Default: variables.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/split_solution.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Split a primal solution into per-variable arrays — split_solution","text":"named list mapping .character(var_id) numeric array variable's shape.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/square.html","id":null,"dir":"Reference","previous_headings":"","what":"Square of an expression: x^2 — square","title":"Square of an expression: x^2 — square","text":"Square expression: x^2","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/square.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Square of an expression: x^2 — square","text":"","code":"square(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/square.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Square of an expression: x^2 — square","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/square.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Square of an expression: x^2 — square","text":"Power atom p=2","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/status-constants.html","id":null,"dir":"Reference","previous_headings":"","what":"Solution Status Constants — status-constants","title":"Solution Status Constants — status-constants","text":"Character string constants representing possible solution statuses returned problem_status.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/status-constants.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Solution Status Constants — status-constants","text":"","code":"OPTIMAL INFEASIBLE UNBOUNDED SOLVER_ERROR OPTIMAL_INACCURATE INFEASIBLE_INACCURATE UNBOUNDED_INACCURATE USER_LIMIT INFEASIBLE_OR_UNBOUNDED"},{"path":"https://www.cvxgrp.org/CVXR/reference/status-constants.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Solution Status Constants — status-constants","text":"character string.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/status.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Solution Status of a Problem — status","title":"Get the Solution Status of a Problem — status","text":"Returns status string recent solve, \"optimal\", \"infeasible\", \"unbounded\".","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/status.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Solution Status of a Problem — status","text":"","code":"status(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/status.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Solution Status of a Problem — status","text":"x Problem object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/status.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Solution Status of a Problem — status","text":"Character string, NULL problem solved.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_entries.html","id":null,"dir":"Reference","previous_headings":"","what":"Sum the entries of an expression — sum_entries","title":"Sum the entries of an expression — sum_entries","text":"Sum entries expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_entries.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sum the entries of an expression — sum_entries","text":"","code":"sum_entries(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_entries.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sum the entries of an expression — sum_entries","text":"x Expression numeric value. axis NULL (sum ), 1 (row-wise, like apply(X,1,sum)), 2 (column-wise, like apply(X,2,sum)). keepdims Logical: TRUE, keep reduced dimension size 1.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_entries.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sum the entries of an expression — sum_entries","text":"SumEntries expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_largest.html","id":null,"dir":"Reference","previous_headings":"","what":"Sum of k largest entries — sum_largest","title":"Sum of k largest entries — sum_largest","text":"Sum k largest entries","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_largest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sum of k largest entries — sum_largest","text":"","code":"sum_largest(x, k, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_largest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sum of k largest entries — sum_largest","text":"x Expression k Number largest entries sum axis NULL (entries), 1 (row-wise), 2 (column-wise) keepdims Logical; keep reduced dimension size 1","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_largest.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sum of k largest entries — sum_largest","text":"SumLargest atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_signs.html","id":null,"dir":"Reference","previous_headings":"","what":"Sign of a sum of expressions — sum_signs","title":"Sign of a sum of expressions — sum_signs","text":"Determines whether sum list expressions nonnegative, nonpositive, unknown.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_signs.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sign of a sum of expressions — sum_signs","text":"","code":"sum_signs(exprs)"},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_signs.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sign of a sum of expressions — sum_signs","text":"exprs List Expression objects","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_signs.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sign of a sum of expressions — sum_signs","text":"Named logical vector c(is_nonneg, is_nonpos)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_smallest.html","id":null,"dir":"Reference","previous_headings":"","what":"Sum of k smallest entries — sum_smallest","title":"Sum of k smallest entries — sum_smallest","text":"Sum k smallest entries","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_smallest.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sum of k smallest entries — sum_smallest","text":"","code":"sum_smallest(x, k, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_smallest.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sum of k smallest entries — sum_smallest","text":"x Expression k Number smallest entries sum axis NULL (entries), 1 (row-wise), 2 (column-wise) keepdims Logical; keep reduced dimension size 1","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_smallest.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sum of k smallest entries — sum_smallest","text":"Expression equal -SumLargest(-x, k)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_squares.html","id":null,"dir":"Reference","previous_headings":"","what":"Sum of squares (= quad_over_lin(x, 1)) — sum_squares","title":"Sum of squares (= quad_over_lin(x, 1)) — sum_squares","text":"Sum squares (= quad_over_lin(x, 1))","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_squares.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sum of squares (= quad_over_lin(x, 1)) — sum_squares","text":"","code":"sum_squares(x, axis = NULL, keepdims = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_squares.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sum of squares (= quad_over_lin(x, 1)) — sum_squares","text":"x Expression axis NULL (), 1 (row-wise), 2 (column-wise) keepdims Logical: keep reduced dimensions?","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/sum_squares.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Sum of squares (= quad_over_lin(x, 1)) — sum_squares","text":"QuadOverLin atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/supports_quad_obj.html","id":null,"dir":"Reference","previous_headings":"","what":"Does Solver Support Quadratic Objectives? — supports_quad_obj","title":"Does Solver Support Quadratic Objectives? — supports_quad_obj","text":"CVXPY v1.8.2: controls whether conic path keeps quadratic objective P matrix decomposes cones.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/supports_quad_obj.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Does Solver Support Quadratic Objectives? — supports_quad_obj","text":"","code":"supports_quad_obj(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/supports_quad_obj.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Does Solver Support Quadratic Objectives? — supports_quad_obj","text":"x solver object.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/supports_quad_obj.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Does Solver Support Quadratic Objectives? — supports_quad_obj","text":"Logical scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/to_latex.html","id":null,"dir":"Reference","previous_headings":"","what":"Convert CVXR Object to LaTeX — to_latex","title":"Convert CVXR Object to LaTeX — to_latex","text":"Renders CVXR Problem, Expression, Constraint LaTeX string. Problem-level output uses optidef package (mini*/maxi* environments) atom macros dcp.sty (shipped system.file(\"sty\", \"dcp.sty\", package = \"CVXR\")).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/to_latex.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Convert CVXR Object to LaTeX — to_latex","text":"","code":"to_latex(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/to_latex.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Convert CVXR Object to LaTeX — to_latex","text":"x Problem, Expression, Constraint, Objective. ... Reserved future options.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/to_latex.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Convert CVXR Object to LaTeX — to_latex","text":"character string containing LaTeX code.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/to_latex.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Convert CVXR Object to LaTeX — to_latex","text":"","code":"x <- Variable(3, name = \"x\") cat(to_latex(p_norm(x, 2))) #> \\cvxnorm{x}_{2} # \\cvxnorm{x}_2"},{"path":"https://www.cvxgrp.org/CVXR/reference/total_variation.html","id":null,"dir":"Reference","previous_headings":"","what":"Total variation of a vector or matrix — total_variation","title":"Total variation of a vector or matrix — total_variation","text":"Computes total variation using L1 norm discrete gradients vectors L2 norm discrete gradients matrices.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/total_variation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Total variation of a vector or matrix — total_variation","text":"","code":"total_variation(value, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/total_variation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Total variation of a vector or matrix — total_variation","text":"value Expression numeric constant (vector matrix) ... Additional matrix expressions extending third dimension","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/total_variation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Total variation of a vector or matrix — total_variation","text":"Expression representing total variation","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/tr_inv.html","id":null,"dir":"Reference","previous_headings":"","what":"Trace of matrix inverse — tr_inv","title":"Trace of matrix inverse — tr_inv","text":"Computes \\(\\mathrm{tr}(X^{-1})\\) PSD matrix X.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/tr_inv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Trace of matrix inverse — tr_inv","text":"","code":"tr_inv(X)"},{"path":"https://www.cvxgrp.org/CVXR/reference/tr_inv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Trace of matrix inverse — tr_inv","text":"X square PSD matrix expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/tr_inv.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Trace of matrix inverse — tr_inv","text":"expression representing \\(\\mathrm{tr}(X^{-1})\\)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/tree_copy.html","id":null,"dir":"Reference","previous_headings":"","what":"Deep Copy of an Expression Tree — tree_copy","title":"Deep Copy of an Expression Tree — tree_copy","text":"Deep Copy Expression Tree","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/tree_copy.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Deep Copy of an Expression Tree — tree_copy","text":"","code":"tree_copy(x, id_objects = NULL)"},{"path":"https://www.cvxgrp.org/CVXR/reference/tree_copy.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Deep Copy of an Expression Tree — tree_copy","text":"x canonicalizable object. id_objects Optional identity map deduplication.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/tree_copy.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Deep Copy of an Expression Tree — tree_copy","text":"deep copy entire expression tree.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/tv.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Total variation (deprecated alias) — tv","text":"","code":"tv(...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/tv.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Total variation (deprecated alias) — tv","text":"... Arguments passed total_variation().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/tv.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Total variation (deprecated alias) — tv","text":"Use total_variation() instead.","code":""},{"path":[]},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/unpack_results.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Unpack Results (backward-compatible alias) — unpack_results","text":"","code":"unpack_results(problem, solution, chain, inverse_data)"},{"path":"https://www.cvxgrp.org/CVXR/reference/unpack_results.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Unpack Results (backward-compatible alias) — unpack_results","text":"problem Problem object. solution raw solver result solve_via_data(). chain SolvingChain problem_data(). inverse_data inverse data list problem_data().","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/unpack_results.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Unpack Results (backward-compatible alias) — unpack_results","text":"problem object (invisibly), solution unpacked.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/unpack_results.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Unpack Results (backward-compatible alias) — unpack_results","text":"Use problem_unpack_results() instead. alias exists backward compatibility older CVXR examples.","code":""},{"path":[]},{"path":"https://www.cvxgrp.org/CVXR/reference/update_parameters.html","id":null,"dir":"Reference","previous_headings":"","what":"Update Parameters for DPP Fast Path — update_parameters","title":"Update Parameters for DPP Fast Path — update_parameters","text":"Update Parameters DPP Fast Path","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/update_parameters.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Update Parameters for DPP Fast Path — update_parameters","text":"","code":"update_parameters(x, problem, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/update_parameters.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Update Parameters for DPP Fast Path — update_parameters","text":"x Reduction object. problem Problem object. ... Additional arguments.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/update_parameters.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Update Parameters for DPP Fast Path — update_parameters","text":"NULL (called side effects).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/upper_tri.html","id":null,"dir":"Reference","previous_headings":"","what":"Extract strict upper triangle of a square matrix — upper_tri","title":"Extract strict upper triangle of a square matrix — upper_tri","text":"Extract strict upper triangle square matrix","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/upper_tri.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Extract strict upper triangle of a square matrix — upper_tri","text":"","code":"upper_tri(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/upper_tri.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Extract strict upper triangle of a square matrix — upper_tri","text":"x Expression (square matrix)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/upper_tri.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Extract strict upper triangle of a square matrix — upper_tri","text":"UpperTri atom (column vector)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/validate_arguments.html","id":null,"dir":"Reference","previous_headings":"","what":"Validate Arguments to an Atom — validate_arguments","title":"Validate Arguments to an Atom — validate_arguments","text":"Validate Arguments Atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/validate_arguments.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Validate Arguments to an Atom — validate_arguments","text":"","code":"validate_arguments(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/validate_arguments.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Validate Arguments to an Atom — validate_arguments","text":"x atom object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/validate_arguments.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Validate Arguments to an Atom — validate_arguments","text":"Invisible NULL (error invalid).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/value-set.html","id":null,"dir":"Reference","previous_headings":"","what":"Set the Value of a Leaf Expression — value<-","title":"Set the Value of a Leaf Expression — value<-","text":"Assigns numeric value Variable Parameter.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/value-set.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Set the Value of a Leaf Expression — value<-","text":"","code":"value(x) <- value"},{"path":"https://www.cvxgrp.org/CVXR/reference/value-set.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Set the Value of a Leaf Expression — value<-","text":"x leaf expression object. value value assign.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/value-set.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Set the Value of a Leaf Expression — value<-","text":"modified object (invisibly).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/value.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Numeric Value of an Expression — value","title":"Get the Numeric Value of an Expression — value","text":"Returns numeric value CVXR expression, variable, constant. variables, value set solving problem.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/value.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Numeric Value of an Expression — value","text":"","code":"value(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/value.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Numeric Value of an Expression — value","text":"x expression object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/value.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Numeric Value of an Expression — value","text":"numeric matrix, NULL value set.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/var_dict.html","id":null,"dir":"Reference","previous_headings":"","what":"Get all Variables of a Problem as a Named List — var_dict","title":"Get all Variables of a Problem as a Named List — var_dict","text":"Mirrors CVXPY's Problem.var_dict property (cvxpy/problems/problem.py:267-271): returns named list keyed variable's name, value Variable object .","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/var_dict.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get all Variables of a Problem as a Named List — var_dict","text":"","code":"var_dict(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/var_dict.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get all Variables of a Problem as a Named List — var_dict","text":"x Problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/var_dict.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get all Variables of a Problem as a Named List — var_dict","text":"Named list Variable objects, keyed name.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/variables.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Variables in an Expression — variables","title":"Get the Variables in an Expression — variables","text":"Get Variables Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/variables.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Variables in an Expression — variables","text":"","code":"variables(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/variables.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Variables in an Expression — variables","text":"x expression problem object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/variables.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Variables in an Expression — variables","text":"List Variable objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vdot.html","id":null,"dir":"Reference","previous_headings":"","what":"Vector dot product (inner product) — vdot","title":"Vector dot product (inner product) — vdot","text":"Computes inner product: sum element-wise products flattening. Returns scalar expression.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vdot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Vector dot product (inner product) — vdot","text":"","code":"vdot(x, y)"},{"path":"https://www.cvxgrp.org/CVXR/reference/vdot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Vector dot product (inner product) — vdot","text":"x Expression numeric value. y Expression numeric value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vdot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Vector dot product (inner product) — vdot","text":"scalar Expression representing sum(x * y).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vec.html","id":null,"dir":"Reference","previous_headings":"","what":"Vectorize an expression (column vector) — vec","title":"Vectorize an expression (column vector) — vec","text":"Reshapes expression column vector shape (n*m, 1).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vec.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Vectorize an expression (column vector) — vec","text":"","code":"vec(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/vec.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Vectorize an expression (column vector) — vec","text":"x Expression numeric value.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vec.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Vectorize an expression (column vector) — vec","text":"Reshape atom (column vector).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vec_to_upper_tri.html","id":null,"dir":"Reference","previous_headings":"","what":"Reshape a vector into an upper triangular matrix — vec_to_upper_tri","title":"Reshape a vector into an upper triangular matrix — vec_to_upper_tri","text":"Inverts upper_tri. Takes flat vector returns upper triangular matrix (row-major order, matching CVXPY convention).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vec_to_upper_tri.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Reshape a vector into an upper triangular matrix — vec_to_upper_tri","text":"","code":"vec_to_upper_tri(expr, strict = FALSE)"},{"path":"https://www.cvxgrp.org/CVXR/reference/vec_to_upper_tri.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Reshape a vector into an upper triangular matrix — vec_to_upper_tri","text":"expr Expression (vector). strict Logical. TRUE, returns strictly upper triangular matrix (diagonal zero). FALSE, includes diagonal. Default FALSE.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vec_to_upper_tri.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Reshape a vector into an upper triangular matrix — vec_to_upper_tri","text":"Expression representing upper triangular matrix.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/violation.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the Violation of a Constraint — violation","title":"Get the Violation of a Constraint — violation","text":"Returns scalar violation (distance feasibility) constraint.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/violation.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the Violation of a Constraint — violation","text":"","code":"violation(x, ...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/violation.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the Violation of a Constraint — violation","text":"x constraint object. ... used.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/violation.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the Violation of a Constraint — violation","text":"Numeric scalar.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/visualize.html","id":null,"dir":"Reference","previous_headings":"","what":"Visualize the Canonicalization Pipeline of a CVXR Problem — visualize","title":"Visualize the Canonicalization Pipeline of a CVXR Problem — visualize","text":"Displays Smith form decomposition convex optimization problem, showing stage DCP canonicalization pipeline: expression tree, Smith form, relaxed Smith form, conic form, (optionally) standard cone form solver data.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/visualize.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Visualize the Canonicalization Pipeline of a CVXR Problem — visualize","text":"","code":"visualize( problem, output = c(\"text\", \"json\", \"html\", \"latex\", \"tikz\"), solver = NULL, digits = 4L, file = NULL, open = interactive(), doc_base = \"https://cvxr.rbind.io/reference/\" )"},{"path":"https://www.cvxgrp.org/CVXR/reference/visualize.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Visualize the Canonicalization Pipeline of a CVXR Problem — visualize","text":"problem Problem object. output Character: output format. \"text\" Console display (default). \"json\" JSON data model (interop HTML/Python). \"html\" Interactive D3+KaTeX HTML (Phase 2). \"latex\" LaTeX align* environments (Phase 3). \"tikz\" TikZ forest tree diagrams (Phase 3). solver Solver specification matrix stuffing stages (4-5). NULL (default) shows Stages 0-3 zero overhead. TRUE uses default solver (psolve()). character string (e.g., \"Clarabel\") uses specific solver. digits Integer: significant digits displaying scalar constants. Integer-valued constants (0, 1, -3) always display without decimals regardless setting. Defaults 4. file Character: path HTML output file. NULL (default), temporary file used. open Logical: whether open HTML file browser. Defaults TRUE interactive sessions. doc_base Character: base URL atom documentation links. Defaults CVXR pkgdown site.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/visualize.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Visualize the Canonicalization Pipeline of a CVXR Problem — visualize","text":"\"text\": invisible model list. \"json\": JSON string (list jsonlite available). \"html\": file path (invisibly). formats: rendered output (Phase 2+).","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/visualize.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Visualize the Canonicalization Pipeline of a CVXR Problem — visualize","text":"","code":"if (FALSE) { # \\dontrun{ x <- Variable(3, name = \"x\") prob <- Problem(Minimize(p_norm(x, 2)), list(x >= 1)) visualize(prob) # Stages 0-3 only visualize(prob, solver = TRUE) # Stages 0-5, default solver visualize(prob, solver = \"Clarabel\") # Stages 0-5, specific solver visualize(prob, output = \"html\", solver = TRUE) } # }"},{"path":"https://www.cvxgrp.org/CVXR/reference/vstack.html","id":null,"dir":"Reference","previous_headings":"","what":"Vertical concatenation of expressions — vstack","title":"Vertical concatenation of expressions — vstack","text":"Vertical concatenation expressions","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vstack.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Vertical concatenation of expressions — vstack","text":"","code":"vstack(...)"},{"path":"https://www.cvxgrp.org/CVXR/reference/vstack.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Vertical concatenation of expressions — vstack","text":"... Expressions (number columns)","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/vstack.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Vertical concatenation of expressions — vstack","text":"VStack atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/with_dpp_scope.html","id":null,"dir":"Reference","previous_headings":"","what":"Execute Expression Within DPP Scope — with_dpp_scope","title":"Execute Expression Within DPP Scope — with_dpp_scope","text":"Within scope, Parameter objects treated affine (constant) curvature analysis. used internally is_dpp() check DPP compliance.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/with_dpp_scope.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Execute Expression Within DPP Scope — with_dpp_scope","text":"","code":"with_dpp_scope(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/with_dpp_scope.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Execute Expression Within DPP Scope — with_dpp_scope","text":"expr R expression evaluate within DPP scope.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/with_dpp_scope.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Execute Expression Within DPP Scope — with_dpp_scope","text":"result evaluating expr.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/with_quad_form_dpp_scope.html","id":null,"dir":"Reference","previous_headings":"","what":"Execute Expression Within a quad_form DPP Scope — with_quad_form_dpp_scope","title":"Execute Expression Within a quad_form DPP Scope — with_quad_form_dpp_scope","text":"Execute Expression Within quad_form DPP Scope","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/with_quad_form_dpp_scope.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Execute Expression Within a quad_form DPP Scope — with_quad_form_dpp_scope","text":"","code":"with_quad_form_dpp_scope(expr)"},{"path":"https://www.cvxgrp.org/CVXR/reference/with_quad_form_dpp_scope.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Execute Expression Within a quad_form DPP Scope — with_quad_form_dpp_scope","text":"expr R expression evaluate within quad_form DPP scope.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/with_quad_form_dpp_scope.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Execute Expression Within a quad_form DPP Scope — with_quad_form_dpp_scope","text":"result evaluating expr.","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/xexp.html","id":null,"dir":"Reference","previous_headings":"","what":"x * exp(x) – elementwise — xexp","title":"x * exp(x) – elementwise — xexp","text":"x * exp(x) – elementwise","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/xexp.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"x * exp(x) – elementwise — xexp","text":"","code":"xexp(x)"},{"path":"https://www.cvxgrp.org/CVXR/reference/xexp.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"x * exp(x) – elementwise — xexp","text":"x Expression","code":""},{"path":"https://www.cvxgrp.org/CVXR/reference/xexp.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"x * exp(x) – elementwise — xexp","text":"Xexp atom","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-191","dir":"Changelog","previous_headings":"","what":"CVXR 1.9.1","title":"CVXR 1.9.1","text":"first CRAN release since 1.8.2 large one: tracks CVXPY 1.9.1 folds changes internal 1.8.2-1 1.9.0 development cycles. headline additions derivative API differentiable convex programs, disciplined nonlinear programming (DNLP), interval-bounds propagation native solver-bound support.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"disciplined-nonlinear-programming-dnlp-1-9-1","dir":"Changelog","previous_headings":"","what":"Disciplined nonlinear programming (DNLP)","title":"CVXR 1.9.1","text":"Solve smooth nonlinear programs psolve(prob, nlp = TRUE). problem must satisfy new is_dnlp() grammar (disciplined nonlinear program); DCP problems subset, DCP problem also valid DNLP. New smooth atoms usable DNLPs: sin(), cos(), tan(), sinh(), tanh(), asinh(), atanh(), normcdf(). prod() now recognized smooth atom, problems involving products entries (including prod_entries(X, axis = ...)) DNLP solvable NLP path. classically-differentiable atoms now report is_atom_smooth() matching CVXPY 1.9: affine atoms, exp, log, entr, logistic, kl_div, rel_entr, xexp, power (constant exponent), geo_mean, log_sum_exp, quad_form, quad_over_lin, prod. result smooth convex/concave functions sum_squares() linearizable directions (is_smooth() TRUE), piecewise atoms (abs, min, max) remain convex/concave-. New predicate exports: is_smooth(), is_atom_smooth(), is_linearizable_convex(), is_linearizable_concave(). Piecewise-linear atoms used DNLP (abs, max, max_elemwise, norm_inf, sum_largest, sum_smallest) now initialize epigraph variables canonicalization, NLP backend complete starting point. sum_largest initializes threshold (k+1)-th largest entry, matching CVXPY’s warm-start fix. New convolve() atom, CVXPY 1.9’s preferred (numpy-style) name 1-D discrete-convolution conv() atom. numeric input falls stats::convolve(). DNLP path powered derivatives optional sparsediff package can solve optional ipopt Uno R packages. NLP solver names: \"IPOPT\", \"UNO\" (variants \"uno_ipm\" / \"uno_sqp\"), \"KNITRO\", \"COPT\"; \"KNITRO\" \"COPT\" registered require solver bindings yet available R. installed, IPOPT first automatic NLP solver, matching CVXPY’s preference order. quad_over_lin() sum_squares() now canonicalize axis-aware reductions (axis = 1 axis = 2) batched second-order cone constraints, closing CVXPY parity gap sum_squares(..., axis = ...) objectives constraints. UNO interface defaults interior-point ipopt preset (plus MUMPS), differs CVXPY’s filtersqp default. CVXPY’s filtersqp uses BQPD active-set solver quadratic subproblems, handles indefinite Hessians. bundled Uno build HiGHS-(BQPD bundled CRAN-license compatible), HiGHS solves convex quadratic subproblems, filtersqp fails nonconvex DNLPs. interior-point ipopt preset factors regularized KKT system MUMPS robust convex nonconvex problems. Force SQP path solver = \"uno_sqp\" (preset = \"filtersqp\"); reliable problems whose subproblem Hessians stay positive semidefinite. Best--N random restarts nonconvex DNLPs: psolve(prob, nlp = TRUE, best_of = n) solves n random initial points keeps best result. Random initialization draws variable’s sample_bounds(var) <- c(low, high) (set) finite variable bounds. per-run objectives available via solver_stats(prob)@extra_stats$all_objs_from_best_of. NLP solve, dual_value() returns constraint duals recovered solver (CVXR addition; duals exposed CVXPY’s NLP interface).","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"derivative-api-for-differentiable-convex-programs-1-9-1","dir":"Changelog","previous_headings":"","what":"Derivative API for differentiable convex programs","title":"CVXR 1.9.1","text":"New derivative API backed diffcp R package: psolve(prob, requires_grad = TRUE) followed backward(prob) derivative(prob); gradient(x)<- delta(x)<- set tangent / cotangent values leaves. chain rule wired Dgp2Dcp (log/exp) Complex2Real (real/imag split).","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"bounds-propagation-1-9-1","dir":"Changelog","previous_headings":"","what":"Bounds propagation","title":"CVXR 1.9.1","text":"get_bounds() now works expression, just variables: propagates interval bounds affine, elementwise, piecewise-linear atoms (e.g. get_bounds(%*% x + b), get_bounds(abs(x)), get_bounds(sum(x))). Bounds returned shaped expression’s dimensions. Variable bounds may now sparse Matrix objects symbolic bounds involving Parameters. get_bounds() preserves sparse numeric bounds skips symbolic bounds, solve-time attribute lowering enforces symbolic constraints. Parameter values containing matching Inf entries now validate correctly. Solvers expose native variable bounds now consume dense numeric bounds directly instead adding bound constraints: HiGHS (LP/MILP QP paths), Gurobi (QP/MIQP conic/SOCP), CPLEX (QP/MIQP), XPRESS (QP/MIQP conic/SOCP), PIQP (QP), SCIP (conic). Sparse bounds continue constraint lowering. Parametric variable bounds use bound tensors (HiGHS), changing Parameter bounds updates native solver bounds DPP re-solves. Bounds inferred DCP auxiliary variables now preserved solvers consume native variable bounds. Attribute reduction now compacts 2D symmetric, PSD, NSD, diagonal Parameters rebuilding full expressions. Variables now report Parameters embedded expression bounds include bounds DPP/DGP compliance checks.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"highs-warm-start-and-column-name-validation-1-9-1","dir":"Changelog","previous_headings":"","what":"HiGHS warm-start and column-name validation","title":"CVXR 1.9.1","text":"HiGHS warm-start now enabled. psolve(prob, solver = \"HIGHS\", warm_start = TRUE) reuses previous solution via persistent-solver API (hi_solver_set_solution) across LP, MILP, QP paths. requires highs (>= 1.14), now available CRAN; older highs warm-start tests skip solves fall back cold starts. validate_column_name() checks name HiGHS LP-file column-name rules, mirroring CVXPY’s highs_conif.validate_column_name. Known limitation: writing model file original variable names yet supported — R highs package exposes column-name setter, written model carry generic names (c0, c1, …).","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"geometric-and-parameterized-programming-1-9-1","dir":"Changelog","previous_headings":"","what":"Geometric and parameterized programming","title":"CVXR 1.9.1","text":"Positive (DGP) variables now accept numeric parametric bounds gp = TRUE (e.g. Variable(pos = TRUE, bounds = list(lb, ub)) lb/ub Parameters). DGP reduction log-transforms bounds log domain lowers constraints; parametric bounds canonicalize DGP tree without eagerly evaluating log(value(param)), DPP re-solves changed bound parameters work. is_dpp() gains context argument (\"dcp\" \"dgp\"), matching CVXPY’s is_dpp(context=...). \"dgp\" context variable’s symbolic bounds must log-log-affine (e.g. product positive Parameters DGP-DPP though DCP-DPP; norm()/sum() bounds rejected). New partial_optimize() transform. CPLEX now solves LP/SOCP/MI-LP/MI-SOCP problems conic path translating SOC blocks Rcplex quadratic constraints.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"new-atoms-transforms-and-accessors-1-9-1","dir":"Changelog","previous_headings":"","what":"New atoms, transforms, and accessors","title":"CVXR 1.9.1","text":"New sign() atom (DQCP, scalar input). psolve() gains solver_path argument solver fallback chains. New set_label() / label<- / format_labeled() attaching user-supplied labels expressions. power(), geo_mean(), p_norm() approx = TRUE now warn selected solver supports power cones (approx = FALSE uses exact PowCone3D / PowConeND form). MOSEK now supports mixed-integer programs (requires Rmosek 11.1.1+). solver_stats() MOSEK now populates solve_time, num_iters, extra_stats. New param_dict(), var_dict(), size_metrics() accessors Problem. Variable(value = ...) accepts initial value construction. New CallbackParam class — Parameter subclass whose value computed every read user-supplied callback. project() accepts index-based boolean = c(, j, ...) integer = c(, j, ...) attributes (1-based). validate_arguments() now called Cummax, Cumprod, MinEntries constructors.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"performance-1-9-1","dir":"Changelog","previous_headings":"","what":"Performance","title":"CVXR 1.9.1","text":"Problem canonicalization solving faster 1.8.2 CRAN release wide range problems. Two changes account gain: new .fast_new helper S7 expression construction (roughly 40% lower wall-clock atom-dense PSD-heavy problems), routing S7 class-membership checks hot canonicalization path cached check object’s class vector instead S7::S7_inherits() (rebuilt class name every call; per-node cone-detection scan benefits ). Deterministic memory allocation unchanged. internal changes user-visible API difference.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"bug-fixes-1-9-1","dir":"Changelog","previous_headings":"","what":"Bug fixes","title":"CVXR 1.9.1","text":"Bug fix (also affected 1.8.x): problem_data() get_problem_data() now take explicit gp argument. Previously gp = TRUE passed ... silently ignored, compiling geometric program DCP problem. Bug fix (also affected 1.8.x): psolve() now takes explicit enforce_dpp ignore_dpp arguments, matching CVXPY’s solve(). Previously silently swallowed ...; enforce_dpp = TRUE now raises non-DPP parametrized problem instead falling back non-DPP compile. Fixed QP-path canonicalization quad_over_lin(expr, constant) decision uses canonicalized denominator, matching CVXPY 1.9 behavior cases quad_over_lin(exp(x), 1) keep ExpCone without adding SOC block. Fix Variable(c(n, n), diag = TRUE) handling CvxAttr2Constr. Fix perspective() canonicalizer PSD, NSD, diag matrix variables. Fix project() sparse Matrix-package objects.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"notes-1-9-1","dir":"Changelog","previous_headings":"","what":"Notes","title":"CVXR 1.9.1","text":"Complex-parameter DPP fast-path parity remains deliberate feature gap: complex parameters evaluated Complex2Real CVXR’s R sparse-matrix backend carry complex sparse parameter tensors. Ordinary complex expression solving still supported Complex2Real. CVXR’s 2-D positive-dimensional model support zero-sized expressions, constraints, solves. Generated data-dependent models skip vacuous constraints use explicit zero contributions mask filter selects entries.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-182","dir":"Changelog","previous_headings":"","what":"CVXR 1.8.2","title":"CVXR 1.8.2","text":"CRAN release: 2026-04-04","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"new-solvers-scip-and-xpress-total-1-8-2","dir":"Changelog","previous_headings":"","what":"New solvers: SCIP and XPRESS (15 total)","title":"CVXR 1.8.2","text":"Added SCIP solver (14th solver) via R scip package. Supports LP, SOCP, MI-LP, MI-SOCP problems. SCIP registered conic solver path SUPPORTED_CONSTRAINTS = list(Zero, NonNeg, SOC) MIP_CAPABLE = TRUE. SCIP solver parameters can passed via scip_params sub-list (matching CVXPY convention) path-style parameter names like \"limits/time\", \"limits/gap\". Duals currently extracted (R scip package lacks dual API). 29 tests mirroring CVXPY’s TestSCIP class. Added XPRESS solver (15th solver) via R xpress package dual-interface architecture: QP path (XPRESS_QP_Solver) LP/QP conic path (XPRESS_Conic_Solver) SOCP/MI-LP/MI-SOCP. paths support Zero NonNeg constraints; conic path also supports SOC. MIP warm-start supported.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"diag-and-norm-dispatch-fixes-1-8-2","dir":"Changelog","previous_headings":"","what":"diag() and norm() dispatch fixes","title":"CVXR 1.8.2","text":"diag() now works CVXR expressions: diag(vector_expr) creates diagonal matrix (DiagVec), diag(square_matrix_expr) extracts diagonal (DiagMat). Falls Matrix::diag() non-Expression inputs, correctly handling Matrix S4 objects base R matrices. norm() fallthrough now delegates Matrix::norm() instead base::norm(), fixing norm(sparse_matrix) CVXR loaded. t() mean() switched S7 method() registerS3method() avoid demoting Matrix’s S4 generics.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxpy-parity-1-8-2","dir":"Changelog","previous_headings":"","what":"CVXPY 1.8.2 parity","title":"CVXR 1.8.2","text":"applicable bug fixes CVXPY v1.8.2 ported, annotated ## CVXPY v1.8.2 fix: source.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"solver_opts-and-use_quad_obj-1-8-2","dir":"Changelog","previous_headings":"","what":"solver_opts() and use_quad_obj","title":"CVXR 1.8.2","text":"New solver_opts() constructor unified solver options. Standard tolerance parameters (feastol, reltol, abstol, num_iter) solver-specific parameters now flow psolve(...) via solver_opts() constructor. New use_quad_obj option (default TRUE): FALSE, forces conic decomposition path instead QP, enabling quad_form_canon detect indefinite P matrices. New supports_quad_obj() generic conic solvers (Clarabel SCS return TRUE, others FALSE).","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"element-wise-matrix-indexing-specialindex-1-8-2","dir":"Changelog","previous_headings":"","what":"Element-wise matrix indexing (SpecialIndex)","title":"CVXR 1.8.2","text":"New SpecialIndex atom (mirroring CVXPY’s special_index) enables R-idiomatic element-wise selection matrix expressions: 2-column matrix indexing: x[cbind(rows, cols)] Logical matrix indexing: x[mask] Linear integer indexing: x[c(1, 5, 9)] Logical vector indexing: x[c(TRUE, FALSE, ...)] makes natural constrain specific entries matrix variable, e.g., fixing observed entries partially-known matrix: Previously, x[] matrix expression errored “Single-index selection matrices supported.” workaround required element-wise multiply binary mask, unintuitive. Internally uses sparse selection matrix multiplication (reshape → sparse matmul), requiring C++ changes.","code":"ind <- which(!is.na(Rmiss), arr.ind = TRUE) prob <- Problem(Minimize(obj), list(X[ind] == Rmiss[ind]))"},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"bug-fixes-1-8-2","dir":"Changelog","previous_headings":"","what":"Bug Fixes","title":"CVXR 1.8.2","text":"Fixed O(n²) memory usage sum_squares(), power(x, 2), quad_over_lin(), huber() first argument many elements (e.g., regression residuals thousands observations). quadratic canonicalizer converting sparse identity matrix dense form. Memory now scales linearly problem size.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-181","dir":"Changelog","previous_headings":"","what":"CVXR 1.8.1","title":"CVXR 1.8.1","text":"CRAN release: 2026-03-06","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"complete-rewrite-using-s7-object-system-1-8-1","dir":"Changelog","previous_headings":"","what":"Complete rewrite using S7 object system","title":"CVXR 1.8.1","text":"ground-rewrite CVXR using R’s S7 object system, designed isomorphic CVXPY 1.8.1 long-term maintainability. ~4-5x faster CVXR 1.0-15 typical problems.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"new-features-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"New features","title":"CVXR 1.8.1","text":"S7 class system replaces S4 expression, constraint, problem classes. Significantly faster construction method dispatch. 13 solvers initial release: Clarabel (default), SCS, OSQP, HiGHS, MOSEK, Gurobi, GLPK, GLPK_MI, ECOS, ECOS_BB, CPLEX, CVXOPT, PIQP. Mixed-integer programming via GLPK_MI, ECOS_BB, Gurobi, HiGHS (boolean = TRUE integer = TRUE Variable()). Parameter support via Parameter() class DPP (Disciplined Parameterized Programming) efficient re-solves parameter values change. 50+ atom classes covering LP, QP, SOCP, SDP, exponential cone, power cone problems. psolve() primary solve interface, returning optimal value directly. solve() backward-compatibility wrapper returning cvxr_result list $value, $status, $solver, $getValue(), $getDualValue(). verbose = TRUE option psolve() structured solve output timing information. Standard solver parameters (feastol, reltol, abstol, num_iter) psolve() automatic translation solver-native names via solver_default_param(). Solver-native parameters ... take priority. Automatic solver selection based problem type. Warm-start support 7 solvers (OSQP, SCS, Clarabel, Gurobi, MOSEK, PIQP; HiGHS blocked R package limitation). Decomposed solve API: problem_data(), solve_via_data(), problem_unpack_results() compile-/solve-many workflows. visualize() problem introspection: text display Smith form annotations, interactive HTML output (D3 tree + KaTeX), -demand DCP violation analysis non-compliant problems, curvature coloring constraint nodes, matrix stuffing visualization (Stages 4-5: Standard Form + Solver Data) via new solver parameter. Matrix package interoperability via as_cvxr_expr(). Sparse Matrix objects (dgCMatrix, dgeMatrix, etc.) use S4 dispatch preempts S7/S3, direct arithmetic like sparseA %*% x fails. Wrapping as_cvxr_expr(sparseA) %*% x converts CVXR Constant preserving sparsity. Base R matrix numeric work natively without wrapping. Full 2D broadcasting + - operators, matching CVXPY’s Expression.broadcast(). Expressions compatible different shapes (e.g., (1, n) + (m, 1) → (m, n)) now work correctly constraints objectives. Previously scalar promotion supported. Correct solver-cone routing matching CVXPY’s atom classifications. Atoms canonicalize PSD cones (MatrixFrac, TrInv, SigmaMax, NormNuc, LambdaSumLargest) now correctly classified, ensuring solvers like ECOS don’t support SDP rejected clear error message instead cryptic dimension mismatch. Approximate variants (PnormApprox, PowerApprox, GeoMeanApprox) correctly route SOC; exact variants route native cone types (PowCone3D, PowConeND).","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"breaking-changes-from-cvxrx-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"Breaking changes from CVXR 1.x","title":"CVXR 1.8.1","text":"S7 classes replace S4. Use Variable(n) instead new(\"Variable\", n). Requires R >= 4.3.0 (chooseOpsMethod() S7 @ support). solve() now returns cvxr_result S3 list, S4 object. Use psolve() direct numeric return value. getValue(x) getDualValue(con) deprecated. Use value(x) dual_value(con) solving instead. problem_status(), problem_solution(), get_problem_data() deprecated. Use status(), solution(), problem_data() instead. axis parameter uses 1-based indexing matching R’s apply() MARGIN convention: axis = 1 row-wise (reduce columns), axis = 2 column-wise (reduce rows), axis = NULL entries. Internal class structure completely changed (S7 instead S4). Code accessed slots directly need updating. S4 class checks like (x, \"Variable\") longer work. Use S7_inherits(x, Variable).","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"convenience-atoms-and-functions-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"Convenience atoms and functions","title":"CVXR 1.8.1","text":"ptp(x, axis, keepdims) – peak--peak (range): max(x) - min(x). cvxr_mean(x, axis, keepdims) – arithmetic mean along axis. cvxr_std(x, axis, keepdims, ddof) – standard deviation. cvxr_var(x, axis, keepdims, ddof) – variance. vdot(x, y) – vector dot product (inner product). scalar_product(x, y) – alias vdot. cvxr_outer(x, y) – outer product two vectors. inv_prod(x) – reciprocal product entries. loggamma(x) – elementwise log gamma function (piecewise linear approximation). log_normcdf(x) – elementwise log standard normal CDF (quadratic approximation). cummax_expr(x, axis) – cumulative maximum along axis. dotsort(X, W) – weighted sorted dot product (generalization sum_largest/sum_smallest). diff_pos(), resolvent() – DGP convenience functions.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"clean-api-names-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"Clean API names","title":"CVXR 1.8.1","text":"status(prob) – returns solution status (replaces problem_status()). solution(prob) – returns raw Solution object (replaces problem_solution()). problem_data(prob, solver) – returns solver-ready data (replaces get_problem_data()). Old names still work emit -per-session deprecation warnings.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"backward-compatibility-aliases-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"Backward-compatibility aliases","title":"CVXR 1.8.1","text":"tv() deprecated alias total_variation(). norm2(x) deprecated alias p_norm(x, 2). multiply(x, y) deprecated alias x * y. installed_solvers() lists available solver packages.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"advanced-features-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"Advanced features","title":"CVXR 1.8.1","text":"DPP (Disciplined Parameterized Programming) efficient parameter re-solve compilation caching. DGP (Disciplined Geometric Programming) via psolve(prob, gp = TRUE). New atoms: prod_entries(), cumprod(), one_minus_pos(), eye_minus_inv(), pf_eigenvalue(), gmatmul(). DQCP (Disciplined Quasiconvex Programming) via psolve(prob, qcp = TRUE). New atoms: ceil_expr(), floor_expr(), condition_number(), gen_lambda_max(), dist_ratio(). Complex variable support via Variable(n, complex = TRUE) Complex2Real reduction. Atoms: Conj_(), Real_(), Imag_(), expr_H() conjugate transpose. perspective(f, s) atom perspective functions. FiniteSet(expr, values) constraint discrete optimization. Boolean logic atoms: (), (), (), Xor(), implies(), iff(). %>>% %<<% operators PSD NSD constraints. as_cvxr_expr() helper wrapping R objects CVXR constants. Required Matrix package objects (dgCMatrix, dgeMatrix, etc.) use S4 dispatch preempts S7/S3. Preserves sparsity (unlike .matrix()). Base R matrix/numeric work natively without wrapping.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"bug-fixes-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"Bug fixes","title":"CVXR 1.8.1","text":"Fixed kron() KRON_L coefficient matrix construction. Fixed CvxAttr2Constr index type matrix variable handling. Fixed Clarabel PowConeND bridge uniquely-named cones. Fixed C++ diag offset super/sub-diagonals (k != 0). Fixed DQCP bisection: infinity check, stale bounds Maximize, conditional high-endpoint seeding. Fixed MOSEK dual extraction (suc - slc reconstruction). Fixed OSQP/HiGHS inequality dual sign convention.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"known-limitations-1-8-1","dir":"Changelog","previous_headings":"Complete rewrite using S7 object system","what":"Known limitations","title":"CVXR 1.8.1","text":"Matrix package objects (dgCMatrix, dgeMatrix, ddiMatrix, sparseVector) used directly CVXR operators due S4 dispatch preempting S7/S3. Wrap as_cvxr_expr() first. Base R matrix/numeric work natively. R dispatch limitation requiring upstream changes S7 /Matrix. Warm-start HiGHS implemented (works highs 1.14) upstream R highs PR exposing setSolution() yet actioned maintainers; lives branch highs-warm-start. Complex SOC dual variables recovered (CVXPY implement — complex2real.py:56 declares UNIMPLEMENTED_COMPLEX_DUALS = (SOC, OpRelEntrConeQuad)). Complex SOC primal canonicalization works. Deferred future release: RelEntrConeQuad / OpRelEntrConeQuad, quantum atoms, CPLEX conic (SOC) path.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-15","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-15","title":"CVXR 1.0-15","text":"CRAN release: 2024-11-07 Revert clarabel requirement use enhance rather import really necessary (Issue 142). Update return codes user_limit etc infeasible_inaccurate match CVXPY gurobi Add S3 print method result solve(). Move upper_tri_to_full C++ Drop use R6 classes Address bug copying Power object (Issue 145).","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-14","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-14","title":"CVXR 1.0-14","text":"CRAN release: 2024-06-27 Address inefficiency use diagonal matrices qp2quad_form.R Add initial interface clarabel solver","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-13","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-13","title":"CVXR 1.0-13","text":"CRAN release: 2024-06-01 Address inefficient processing cones MOSEK (Issue 137 reported aszekMosek) Fix extract_quadratic_coeffs use sparse matrix sweep place better memory use (reported Marissa Reitsma)","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-12","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-12","title":"CVXR 1.0-12","text":"CRAN release: 2024-02-01 Rmosek removed CRAN, moved drat repo Cleaned problematic Rd files shown CRAN results","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-11","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-11","title":"CVXR 1.0-11","text":"CRAN release: 2022-10-30 careful coercing dgCMatrix via (((, \"CsparseMatrix\"), \"generalMatrix\")) Modify class inheritance checks use inherits()","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-10","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-10","title":"CVXR 1.0-10","text":"CRAN release: 2021-11-10 Now requiring updated scs 3.0 import","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-9","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-9","title":"CVXR 1.0-9","text":"CRAN release: 2021-01-19 Now importing ECOSolveR version 0.5.4 higher Added fixes Matrix 1.3 update Somewhat better typesetting Power class documentation (Issue #86)","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-8-to-10-3","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-8 to 1.0-3","title":"CVXR 1.0-8 to 1.0-3","text":"CRAN release: 2020-09-13 Conforming CRAN suggestions non-CRAN packages, actual changes.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-2","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-2","title":"CVXR 1.0-2","text":"Added exponential cone support MOSEK uncommented associated test. Added JSS publication DOI.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10-1","dir":"Changelog","previous_headings":"","what":"CVXR 1.0-1","title":"CVXR 1.0-1","text":"CRAN release: 2020-04-02 Many small fixes solver interfaces Reference semantics Parameter Warm start OSQP updates solver cache Solver parameter defaults explicit now New tests added solver combinations","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-10","dir":"Changelog","previous_headings":"","what":"CVXR 1.0","title":"CVXR 1.0","text":"CRAN release: 2020-02-02 Major release implementing reductions, many new solvers.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-099","dir":"Changelog","previous_headings":"","what":"CVXR 0.99","title":"CVXR 0.99","text":"CRAN release: 2018-05-26 Bug fix: duplicated integer boolean indices. Bug fix: correct typo constraint specification GLPK. Added tutorial articles based v0.99 CVXR website using solvers, integer programming, MOSEK GUROBI examples.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-098-1","dir":"Changelog","previous_headings":"","what":"CVXR 0.98-1","title":"CVXR 0.98-1","text":"Minor typographical fixes.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-098","dir":"Changelog","previous_headings":"","what":"CVXR 0.98","title":"CVXR 0.98","text":"Dropped delay_load parameter dropped reticulate::import_from_path, per changes reticulate. Cleaned hooks reticulate commercial solvers.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-097-1","dir":"Changelog","previous_headings":"","what":"CVXR 0.97-1","title":"CVXR 0.97-1","text":"Minor typo documentation fixes.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-097","dir":"Changelog","previous_headings":"","what":"CVXR 0.97","title":"CVXR 0.97","text":"Added LPSOLVE via lpSolveAPI Added GLPK via Rglpk Added MOSEK Added GUROBI Bug fix: issue #25. CVXR expressions retain dimensions. Culprit drop = FALSE (function Index.get_special_slice) suspected.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-096","dir":"Changelog","previous_headings":"","what":"CVXR 0.96","title":"CVXR 0.96","text":"Added note CVXR can probably compiled source earlier versions R. issue #24 Using pkgdown. also addresses issue #23 Bug fix: issue #28 Function intf_sign (interface.R) unnecessarily using tolerance parameter, now eliminated.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-095","dir":"Changelog","previous_headings":"","what":"CVXR 0.95","title":"CVXR 0.95","text":"CRAN release: 2018-02-20 Updated Solver.solve adapt new ECOSolveR. Require version 0.4 ECOSolveR now. Updated unpack_results behave exactly like CVXPY. Added documentation testthat tests. Documented Speed.","code":""},{"path":"https://www.cvxgrp.org/CVXR/news/index.html","id":"cvxr-094-4","dir":"Changelog","previous_headings":"","what":"CVXR 0.94-4","title":"CVXR 0.94-4","text":"CRAN release: 2017-11-20 First CRAN release 2017-11-20.","code":""}]