00001 /*************************************************************************** 00002 * @file gnn_gcomm.h 00003 * @brief gnn_gcomm Header File. 00004 * 00005 * @date : 28-09-03 21:09 00006 * @author : Pedro Ortega C. <peortega@dcc.uchile.cl> 00007 * Copyright 2003 Pedro Ortega C. 00008 ****************************************************************************/ 00009 /* 00010 * This program is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2 of the License, or 00013 * (at your option) any later version. 00014 * 00015 * This program is distributed in the hope that it will be useful, 00016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 * GNU Library General Public License for more details. 00019 * 00020 * You should have received a copy of the GNU General Public License 00021 * along with this program; if not, write to the Free Software 00022 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00023 */ 00024 00025 #ifndef _GNN_GCOMM_H_ 00026 #define _GNN_GCOMM_H_ 00027 00028 /******************************************/ 00029 /* Include Files */ 00030 /******************************************/ 00031 00032 #include "gnn_node.h" 00033 00034 00035 00036 /******************************************/ 00037 /* Typedefs */ 00038 /******************************************/ 00039 00040 /** 00041 * @brief The structure for a \ref gnn_gcomm node. 00042 * @ingroup gnn_gcomm_doc 00043 * 00044 * This datatype holds the information for a \ref gnn_gcomm node. 00045 * Basically, it extends the \ref gnn_node with special pointers to get fast 00046 * accesses to the needed vector slices. 00047 */ 00048 typedef struct _gnn_gcomm gnn_gcomm; 00049 00050 struct _gnn_gcomm 00051 { 00052 gnn_node node; /**< Subyacent \ref gnn_node. */ 00053 00054 size_t rep; /**< Amount of replications to the input. */ 00055 double sumw; /**< Last \f$ \sum_k w_k^2 \f$. */ 00056 gsl_vector *alpha; /**< The last computed \f$\alpha_k\f$. */ 00057 00058 gsl_vector *xbuf; /**< The total working buffer. */ 00059 00060 gsl_vector_view x_view; /**< The input view of the buffer. */ 00061 gsl_vector *x; /**< A pointer to the input buffer slice. */ 00062 00063 gsl_vector_view *X_view; /**< Array of subvector views of the buffer. */ 00064 gsl_vector **X; /**< Array of the buffer's subvectors. */ 00065 }; 00066 00067 00068 00069 /******************************************/ 00070 /* Public Interface */ 00071 /******************************************/ 00072 00073 gnn_node * 00074 gnn_gcomm_new (size_t input_size, size_t output_size); 00075 00076 00077 00078 #endif /* _GNN_GCOMM_H_ */ 00079 00080 00081
1.2.18