/*
 
							 
						 
					
						
							
								
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								 *  Copyright  ( c )  The  acados  authors . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  This  file  is  part  of  acados . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  The  2 - Clause  BSD  License 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  Redistribution  and  use  in  source  and  binary  forms ,  with  or  without 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  modification ,  are  permitted  provided  that  the  following  conditions  are  met : 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  1.  Redistributions  of  source  code  must  retain  the  above  copyright  notice , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  this  list  of  conditions  and  the  following  disclaimer . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  2.  Redistributions  in  binary  form  must  reproduce  the  above  copyright  notice , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  this  list  of  conditions  and  the  following  disclaimer  in  the  documentation 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  and / or  other  materials  provided  with  the  distribution . 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 * 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  THIS  SOFTWARE  IS  PROVIDED  BY  THE  COPYRIGHT  HOLDERS  AND  CONTRIBUTORS  " AS IS " 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  AND  ANY  EXPRESS  OR  IMPLIED  WARRANTIES ,  INCLUDING ,  BUT  NOT  LIMITED  TO ,  THE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  IMPLIED  WARRANTIES  OF  MERCHANTABILITY  AND  FITNESS  FOR  A  PARTICULAR  PURPOSE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  ARE  DISCLAIMED .  IN  NO  EVENT  SHALL  THE  COPYRIGHT  HOLDER  OR  CONTRIBUTORS  BE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  LIABLE  FOR  ANY  DIRECT ,  INDIRECT ,  INCIDENTAL ,  SPECIAL ,  EXEMPLARY ,  OR 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  CONSEQUENTIAL  DAMAGES  ( INCLUDING ,  BUT  NOT  LIMITED  TO ,  PROCUREMENT  OF 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  SUBSTITUTE  GOODS  OR  SERVICES ;  LOSS  OF  USE ,  DATA ,  OR  PROFITS ;  OR  BUSINESS 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  INTERRUPTION )  HOWEVER  CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY ,  WHETHER  IN 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  CONTRACT ,  STRICT  LIABILITY ,  OR  TORT  ( INCLUDING  NEGLIGENCE  OR  OTHERWISE ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  ARISING  IN  ANY  WAY  OUT  OF  THE  USE  OF  THIS  SOFTWARE ,  EVEN  IF  ADVISED  OF  THE 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 *  POSSIBILITY  OF  SUCH  DAMAGE . ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								 */ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifndef INTERFACES_ACADOS_C_CONDENSING_INTERFACE_H_ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# define INTERFACES_ACADOS_C_CONDENSING_INTERFACE_H_ 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifdef __cplusplus 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								extern  " C "  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  "acados/ocp_qp/ocp_qp_full_condensing.h" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# include  "acados/ocp_qp/ocp_qp_partial_condensing.h" 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  enum  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    PARTIAL_CONDENSING , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    FULL_CONDENSING , 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  condensing_t ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    condensing_t  condensing_type ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  condensing_plan ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								typedef  struct 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    ocp_qp_xcond_config  * config ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  * dims ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  * opts ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  * mem ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								    void  * work ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  condensing_module ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								ocp_qp_xcond_config  * ocp_qp_condensing_config_create ( condensing_plan  * plan ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								void  * ocp_qp_condensing_opts_create ( ocp_qp_xcond_config  * config ,  void  * dims_ ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								acados_size_t  ocp_qp_condensing_calculate_size ( ocp_qp_xcond_config  * config ,  void  * dims_ ,  void  * opts_ ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								condensing_module  * ocp_qp_condensing_assign ( ocp_qp_xcond_config  * config ,  void  * dims_ , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            void  * opts_ ,  void  * raw_memory ) ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								condensing_module  * ocp_qp_condensing_create ( ocp_qp_xcond_config  * config ,  void  * dims_ , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								                                            void  * opts_ ) ; 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								int  ocp_qp_condense ( condensing_module  * module ,  void  * qp_in ,  void  * qp_out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								//
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								int  ocp_qp_expand ( condensing_module  * module ,  void  * qp_in ,  void  * qp_out ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# ifdef __cplusplus 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}  /* extern "C" */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								# endif   // INTERFACES_ACADOS_C_CONDENSING_INTERFACE_H_