[9] | 1 | /* glplib.h (miscellaneous library routines) */ |
---|
| 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, 2011 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 GLPLIB_H |
---|
| 26 | #define GLPLIB_H |
---|
| 27 | |
---|
| 28 | #define bigmul _glp_lib_bigmul |
---|
| 29 | void bigmul(int n, int m, unsigned short x[], unsigned short y[]); |
---|
| 30 | /* multiply unsigned integer numbers of arbitrary precision */ |
---|
| 31 | |
---|
| 32 | #define bigdiv _glp_lib_bigdiv |
---|
| 33 | void bigdiv(int n, int m, unsigned short x[], unsigned short y[]); |
---|
| 34 | /* divide unsigned integer numbers of arbitrary precision */ |
---|
| 35 | |
---|
| 36 | #ifndef GLP_LONG_DEFINED |
---|
| 37 | #define GLP_LONG_DEFINED |
---|
| 38 | typedef struct { int lo, hi; } glp_long; |
---|
| 39 | /* long integer data type */ |
---|
| 40 | #endif |
---|
| 41 | |
---|
| 42 | typedef struct { glp_long quot, rem; } glp_ldiv; |
---|
| 43 | /* result of long integer division */ |
---|
| 44 | |
---|
| 45 | #define xlset _glp_lib_xlset |
---|
| 46 | glp_long xlset(int x); |
---|
| 47 | /* expand integer to long integer */ |
---|
| 48 | |
---|
| 49 | #define xlneg _glp_lib_xlneg |
---|
| 50 | glp_long xlneg(glp_long x); |
---|
| 51 | /* negate long integer */ |
---|
| 52 | |
---|
| 53 | #define xladd _glp_lib_xladd |
---|
| 54 | glp_long xladd(glp_long x, glp_long y); |
---|
| 55 | /* add long integers */ |
---|
| 56 | |
---|
| 57 | #define xlsub _glp_lib_xlsub |
---|
| 58 | glp_long xlsub(glp_long x, glp_long y); |
---|
| 59 | /* subtract long integers */ |
---|
| 60 | |
---|
| 61 | #define xlcmp _glp_lib_xlcmp |
---|
| 62 | int xlcmp(glp_long x, glp_long y); |
---|
| 63 | /* compare long integers */ |
---|
| 64 | |
---|
| 65 | #define xlmul _glp_lib_xlmul |
---|
| 66 | glp_long xlmul(glp_long x, glp_long y); |
---|
| 67 | /* multiply long integers */ |
---|
| 68 | |
---|
| 69 | #define xldiv _glp_lib_xldiv |
---|
| 70 | glp_ldiv xldiv(glp_long x, glp_long y); |
---|
| 71 | /* divide long integers */ |
---|
| 72 | |
---|
| 73 | #define xltod _glp_lib_xltod |
---|
| 74 | double xltod(glp_long x); |
---|
| 75 | /* convert long integer to double */ |
---|
| 76 | |
---|
| 77 | #define xltoa _glp_lib_xltoa |
---|
| 78 | char *xltoa(glp_long x, char *s); |
---|
| 79 | /* convert long integer to character string */ |
---|
| 80 | |
---|
| 81 | #define str2int _glp_lib_str2int |
---|
| 82 | int str2int(const char *str, int *val); |
---|
| 83 | /* convert character string to value of int type */ |
---|
| 84 | |
---|
| 85 | #define str2num _glp_lib_str2num |
---|
| 86 | int str2num(const char *str, double *val); |
---|
| 87 | /* convert character string to value of double type */ |
---|
| 88 | |
---|
| 89 | #define strspx _glp_lib_strspx |
---|
| 90 | char *strspx(char *str); |
---|
| 91 | /* remove all spaces from character string */ |
---|
| 92 | |
---|
| 93 | #define strtrim _glp_lib_strtrim |
---|
| 94 | char *strtrim(char *str); |
---|
| 95 | /* remove trailing spaces from character string */ |
---|
| 96 | |
---|
| 97 | #define strrev _glp_lib_strrev |
---|
| 98 | char *strrev(char *s); |
---|
| 99 | /* reverse character string */ |
---|
| 100 | |
---|
| 101 | #define gcd _glp_lib_gcd |
---|
| 102 | int gcd(int x, int y); |
---|
| 103 | /* find greatest common divisor of two integers */ |
---|
| 104 | |
---|
| 105 | #define gcdn _glp_lib_gcdn |
---|
| 106 | int gcdn(int n, int x[]); |
---|
| 107 | /* find greatest common divisor of n integers */ |
---|
| 108 | |
---|
| 109 | #define lcm _glp_lib_lcm |
---|
| 110 | int lcm(int x, int y); |
---|
| 111 | /* find least common multiple of two integers */ |
---|
| 112 | |
---|
| 113 | #define lcmn _glp_lib_lcmn |
---|
| 114 | int lcmn(int n, int x[]); |
---|
| 115 | /* find least common multiple of n integers */ |
---|
| 116 | |
---|
| 117 | #define round2n _glp_lib_round2n |
---|
| 118 | double round2n(double x); |
---|
| 119 | /* round floating-point number to nearest power of two */ |
---|
| 120 | |
---|
| 121 | #define fp2rat _glp_lib_fp2rat |
---|
| 122 | int fp2rat(double x, double eps, double *p, double *q); |
---|
| 123 | /* convert floating-point number to rational number */ |
---|
| 124 | |
---|
| 125 | #define jday _glp_lib_jday |
---|
| 126 | int jday(int d, int m, int y); |
---|
| 127 | /* convert calendar date to Julian day number */ |
---|
| 128 | |
---|
| 129 | #define jdate _glp_lib_jdate |
---|
| 130 | int jdate(int j, int *d, int *m, int *y); |
---|
| 131 | /* convert Julian day number to calendar date */ |
---|
| 132 | |
---|
| 133 | #endif |
---|
| 134 | |
---|
| 135 | /* eof */ |
---|