1 /* glpbfx.h (basis factorization interface, bignum arithmetic) */ 2 3 /*********************************************************************** 4 * This code is part of GLPK (GNU Linear Programming Kit). 5 * 6 * Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 7 * 2009, 2010 Andrew Makhorin, Department for Applied Informatics, 8 * Moscow Aviation Institute, Moscow, Russia. All rights reserved. 9 * E-mail: <mao@gnu.org>. 10 * 11 * GLPK is free software: you can redistribute it and/or modify it 12 * under the terms of the GNU General Public License as published by 13 * the Free Software Foundation, either version 3 of the License, or 14 * (at your option) any later version. 15 * 16 * GLPK is distributed in the hope that it will be useful, but WITHOUT 17 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 18 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 19 * License for more details. 20 * 21 * You should have received a copy of the GNU General Public License 22 * along with GLPK. If not, see <http://www.gnu.org/licenses/>. 23 ***********************************************************************/ 24 25 #ifndef GLPBFX_H 26 #define GLPBFX_H 27 28 #include "glpgmp.h" 29 30 #ifndef GLPBFX_DEFINED 31 #define GLPBFX_DEFINED 32 typedef struct { double _opaque_bfx; } BFX; 33 #endif 34 35 #define bfx_create_binv _glp_bfx_create_binv 36 #define bfx_is_valid _glp_bfx_is_valid 37 #define bfx_invalidate _glp_bfx_invalidate 38 #define bfx_factorize _glp_bfx_factorize 39 #define bfx_ftran _glp_bfx_ftran 40 #define bfx_btran _glp_bfx_btran 41 #define bfx_update _glp_bfx_update 42 #define bfx_delete_binv _glp_bfx_delete_binv 43 44 BFX *bfx_create_binv(void); 45 /* create factorization of the basis matrix */ 46 47 int bfx_is_valid(BFX *binv); 48 /* check if factorization is valid */ 49 50 void bfx_invalidate(BFX *binv); 51 /* invalidate factorization of the basis matrix */ 52 53 int bfx_factorize(BFX *binv, int m, int (*col)(void *info, int j, 54 int ind[], mpq_t val[]), void *info); 55 /* compute factorization of the basis matrix */ 56 57 void bfx_ftran(BFX *binv, mpq_t x[], int save); 58 /* perform forward transformation (FTRAN) */ 59 60 void bfx_btran(BFX *binv, mpq_t x[]); 61 /* perform backward transformation (BTRAN) */ 62 63 int bfx_update(BFX *binv, int j); 64 /* update factorization of the basis matrix */ 65 66 void bfx_delete_binv(BFX *binv); 67 /* delete factorization of the basis matrix */ 68 69 #endif 70 71 /* eof */ 72