') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); qoco-org · GitHub
Skip to content
@qoco-org

qoco-org

An organization for the QOCO solver and related repositories

QOCO - Quadratic Objective Conic Optimizer

drawing

PyPI DownloadsLicenseDocumentation

QOCO is a convex solver for Second-Order Cone Programs (SOCPs) which implements a primal-dual interior point method. It is written in C, has a BSD-3-Clause license, and is contained in qoco.

QOCOGEN is a code generator housed in qocogen which takes in an second-order cone program problem family and generates a customized C solver (called qoco_custom) for the specified problem family which implements the same algorithm as QOCO. This customized solver is library-free, only uses static memory allocation, and can be a few times faster than QOCO.

QOCO has a python interface, and can be used in CVXPY.

Check out the documentation to learn how to use QOCO and QOCOGEN in your projects.

Installing

C

QOCO's C code can be found here, and build instructions can be found here.

Python

QOCO is available through PyPI by running

pip install qoco

QOCOGEN is only available through PyPI and can be installed by running

pip install qocogen

Matlab

QOCO's matlab wrapper can be found here, and build instructions can be found here.

Citing

@article{chari2026qoco,
title = {{QOCO}: a quadratic objective conic optimizer with custom solver generation},
author = {Chari, Govind M. and A\c{c}ıkmeşe, Beh\c{c}et},
journal = {Mathematical Programming Computation},
issn = {1867-2957},
url = {http://dx.doi.org/10.1007/s12532-026-00311-8},
doi = {10.1007/s12532-026-00311-8},
publisher = {Springer Science and Business Media LLC},
year = {2026},
month = mar,
}

Popular repositories Loading

  1. qoco qocoPublic

    Quadratic Objective Conic Optimizer

    C 56 5

  2. qocogen qocogenPublic

    Custom solver generator for quadratic objective SOCPs

    Python 18 1

  3. qoco-python qoco-pythonPublic

    Python interface for the QOCO solver

    Python 12 1

  4. qoco-matlab qoco-matlabPublic

    Matlab interface for the QOCO solver

    MATLAB 7

  5. QOCO.jl QOCO.jlPublic

    Julia MOI interface to the Quadratic Objective Conic Optimizer

    Julia 5 1

  6. qoco-benchmarks qoco-benchmarksPublic

    Benchmarks from qoco paper

    TeX 3

Repositories

Showing 9 of 9 repositories

Top languages

Loading…

Most used topics

Loading…