| /*********************************************************************/ |
| /* */ |
| /* Nagoya Institute of Technology, Aichi, Japan, */ |
| /* Nara Institute of Science and Technology, Nara, Japan */ |
| /* and */ |
| /* Carnegie Mellon University, Pittsburgh, PA */ |
| /* Copyright (c) 2003-2004 */ |
| /* All Rights Reserved. */ |
| /* */ |
| /* Permission is hereby granted, free of charge, to use and */ |
| /* distribute this software and its documentation without */ |
| /* restriction, including without limitation the rights to use, */ |
| /* copy, modify, merge, publish, distribute, sublicense, and/or */ |
| /* sell copies of this work, and to permit persons to whom this */ |
| /* work is furnished to do so, subject to the following conditions: */ |
| /* */ |
| /* 1. The code must retain the above copyright notice, this list */ |
| /* of conditions and the following disclaimer. */ |
| /* 2. Any modifications must be clearly marked as such. */ |
| /* 3. Original authors' names are not deleted. */ |
| /* */ |
| /* NAGOYA INSTITUTE OF TECHNOLOGY, NARA INSTITUTE OF SCIENCE AND */ |
| /* TECHNOLOGY, CARNEGIE MELLON UNIVERSITY, AND THE CONTRIBUTORS TO */ |
| /* THIS WORK DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, */ |
| /* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, */ |
| /* IN NO EVENT SHALL NAGOYA INSTITUTE OF TECHNOLOGY, NARA */ |
| /* INSTITUTE OF SCIENCE AND TECHNOLOGY, CARNEGIE MELLON UNIVERSITY, */ |
| /* NOR THE CONTRIBUTORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR */ |
| /* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM */ |
| /* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, */ |
| /* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN */ |
| /* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ |
| /* */ |
| /*********************************************************************/ |
| /* */ |
| /* Author : Tomoki Toda (tomoki@ics.nitech.ac.jp) */ |
| /* Date : June 2004 */ |
| /* */ |
| /* Functions shared between mlpg and mlsa */ |
| /*-------------------------------------------------------------------*/ |
| |
| #ifndef __CST_VC_H |
| #define __CST_VC_H |
| |
| typedef struct LVECTOR_STRUCT { |
| long length; |
| long *data; |
| long *imag; |
| } *LVECTOR; |
| |
| typedef struct DVECTOR_STRUCT { |
| long length; |
| double *data; |
| double *imag; |
| } *DVECTOR; |
| |
| typedef struct DMATRIX_STRUCT { |
| long row; |
| long col; |
| double **data; |
| double **imag; |
| } *DMATRIX; |
| |
| #define XBOOL int |
| #define XTRUE 1 |
| #define XFALSE 0 |
| |
| #define NODATA NULL |
| |
| #define FABS(x) ((x) >= 0.0 ? (x) : -(x)) |
| #define LABS(x) ((x) >= 0 ? (x) : -(x)) |
| #define MAX(a, b) ((a) > (b) ? (a) : (b)) |
| |
| #define xdvnull() xdvalloc(0) |
| |
| #define xdvnums(length, value) xdvinit((double)(value), 0.0, (double)(length)) |
| #define xdvzeros(length) xdvnums(length, 0.0) |
| |
| LVECTOR xlvalloc(long length); |
| void xlvfree(LVECTOR x); |
| DVECTOR xdvalloc(long length); |
| DVECTOR xdvcut(DVECTOR x, long offset, long length); |
| void xdvfree(DVECTOR vector); |
| double dvmax(DVECTOR x, long *index); |
| double dvmin(DVECTOR x, long *index); |
| DMATRIX xdmalloc(long row, long col); |
| void xdmfree(DMATRIX matrix); |
| DVECTOR xdvinit(double j, double incr, double n); |
| |
| double dvsum(DVECTOR x); |
| |
| #define RANDMAX 32767 |
| #define B0 0x00000001 |
| #define B28 0x10000000 |
| #define B31 0x80000000 |
| #define B31_ 0x7fffffff |
| #define Z 0x00000000 |
| |
| typedef enum {MFALSE, MTRUE} Boolean; |
| |
| #endif /* __CST_VC_H */ |