Nothing
#####
## DO NOT EDIT THIS FILE!! EDIT THE SOURCE INSTEAD: rsrc_tree/atoms/symbolic_quad_form.R
#####
## CVXPY SOURCE: atoms/quad_form.py lines 134-184
## SymbolicQuadForm -- placeholder for quadratic form in QP path
##
## Created by quad canonicalizers when quad_obj=TRUE. Delegates all DCP
## queries to original_expression. Replaced by dummy Variable during
## P matrix extraction in coeff_quad_form.
SymbolicQuadForm <- new_class("SymbolicQuadForm", parent = Atom, package = "CVXR",
properties = list(
original_expression = class_any, # the original atom (QuadForm, Power, etc.)
block_indices = class_any # list of index vectors or NULL
),
constructor = function(x, P, expr, block_indices = NULL, id = NULL) {
if (is.null(id)) id <- next_expr_id()
x <- as_expr(x)
P <- as_expr(P)
shape <- expr@shape
new_object(S7_object(),
id = as.integer(id),
.cache = new.env(parent = emptyenv()),
args = list(x, P),
shape = shape,
original_expression = expr,
block_indices = block_indices
)
}
)
# -- get_data: for expr_copy reconstruction -----------------------
## Returns extra constructor args beyond x and P
method(get_data, SymbolicQuadForm) <- function(x) {
list(x@original_expression, x@block_indices)
}
# -- shape: delegate to original expression ----------------------
method(shape_from_args, SymbolicQuadForm) <- function(x) {
shape_from_args(x@original_expression)
}
# -- sign: delegate to original expression -----------------------
method(sign_from_args, SymbolicQuadForm) <- function(x) {
sign_from_args(x@original_expression)
}
# -- curvature: delegate to original expression ------------------
method(is_atom_convex, SymbolicQuadForm) <- function(x) {
is_atom_convex(x@original_expression)
}
method(is_atom_concave, SymbolicQuadForm) <- function(x) {
is_atom_concave(x@original_expression)
}
# -- monotonicity: delegate to original expression ---------------
method(is_incr, SymbolicQuadForm) <- function(x, idx, ...) {
is_incr(x@original_expression, idx)
}
method(is_decr, SymbolicQuadForm) <- function(x, idx, ...) {
is_decr(x@original_expression, idx)
}
# -- quadratic analysis ------------------------------------------
method(is_quadratic, SymbolicQuadForm) <- function(x) TRUE
# -- numeric: not needed (replaced before evaluation) ------------
method(numeric_value, SymbolicQuadForm) <- function(x, values, ...) {
cli_abort("{.cls SymbolicQuadForm} cannot be evaluated numerically.")
}
# -- graph_implementation: should never be called ----------------
method(graph_implementation, SymbolicQuadForm) <- function(x, arg_objs, shape, data = NULL, ...) {
cli_abort("{.cls SymbolicQuadForm} should be replaced before canonicalization.")
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.