/*
* ECOS - Embedded Conic Solver.
* Copyright (C) 2012-2015 A. Domahidi [domahidi@embotech.com],
* Automatic Control Lab, ETH Zurich & embotech GmbH, Zurich, Switzerland.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
/* data type definitions used with ECOS */
#ifndef __GLBLOPTS_H__
#define __GLBLOPTS_H__
/* SET PRINT LEVEL ----------------------------------------------------- */
#define PRINTLEVEL (2) /* 0: no prints */
/* 1: only final info */
/* 2: progress print per iteration */
/* 3: debug level, enables print & dump fcns. */
#define MATLAB_FLUSH_PRINTS
/* print each iteration directly to Matlab. */
/* this options considerably slows down the */
/* solver, but is useful if you solve big */
/* problems. */
/* SET PROFILING LEVEL ------------------------------------------------- */
#define PROFILING (1) /* 0: no timing information */
/* 1: runtime (divided in setup and solve) */
/* 2: detailed profiling */
/* SET DEBUG LEVEL ----------------------------------------------------- */
#define DEBUG (0) /* 0: no debugging information */
/* 1: debug info & dump intermediate results */
/* (flag used only for development) */
/* DATA TYPES ---------------------------------------------------------- */
#include
#include
/* NOTE: Currently, pfloat MUST be double for ecos */
typedef double pfloat; /* for numerical values */
#define ECOS_INFINITY (DBL_MAX + DBL_MAX)
#define ECOS_NAN (ECOS_INFINITY - ECOS_INFINITY)
#if defined(_MSC_VER) && (_MSC_VER < 1900)
/* this will also return true if x is nan, but we don't check that anyway */
#define isinf(x) (!_finite(x))
#endif
/* Exponential cone */
#define EXPCONE /*When defined the exponential cone solver code is enabled*/
/* SYSTEM INCLUDES FOR PRINTING ---------------------------------------- */
#if PRINTLEVEL > 0
#ifdef MATLAB_MEX_FILE
#include "mex.h"
#define PRINTTEXT mexPrintf
// #elif defined PYTHON
// #include
// #define PRINTTEXT PySys_WriteStdout
#else
#define PRINTTEXT printf
#endif
#include
#else
#define PRINTTEXT(...)
#endif
#include "SuiteSparse_config.h"
/* USE SAME NUMBER REPRESENTATION FOR INDEXING AS AMD AND LDL ---------- */
#if defined(DLONG) && !defined(LDL_LONG) || defined(LDL_LONG) && !defined(DLONG)
#error "Inconsistent definition of DLONG and LDL_LONG"
#endif
#ifdef DLONG
typedef SuiteSparse_long idxint;
#else
typedef int idxint;
#endif
/* SYSTEM INCLUDE IF COMPILING FOR MATLAB ------------------------------ */
#ifdef MATLAB_MEX_FILE
#include "mex.h"
#endif
/* CHOOSE RIGHT MEMORY MANAGER ----------------------------------------- */
#ifdef MATLAB_MEX_FILE
#define MALLOC mxMalloc
#define FREE mxFree
#else
#define MALLOC malloc
#define FREE free
#endif
#endif