00001 /*************************************************************************** 00002 * @file gnn_affine.h 00003 * @brief gnn_affine Header File. 00004 * 00005 * @date : 05-10-03 11:56 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_AFFINE_H_ 00026 #define _GNN_AFFINE_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_affine node. 00042 * @ingroup gnn_affine_doc 00043 * 00044 * This datatype holds the information for a \ref gnn_affine node. 00045 * Basically, it extends the \ref gnn_node with special pointers to get fast 00046 * accesses to the amplitudes and variances. 00047 */ 00048 typedef struct _gnn_affine gnn_affine; 00049 00050 struct _gnn_affine 00051 { 00052 gnn_node node; /**< Subyacent \ref gnn_node. */ 00053 00054 gsl_vector_view a_view; /**< View to the amplitudes. */ 00055 gsl_vector_view da_view; /**< View to teh amplitude gradients. */ 00056 gsl_vector_int_view af_view; /**< View to the amplitude freeze flags. */ 00057 00058 gsl_vector *buf; /**< Buffer for fast evaluations. */ 00059 00060 gsl_vector_view b_view; /**< View to the variances. */ 00061 gsl_vector_view db_view; /**< View to the variance gradients. */ 00062 gsl_vector_int_view bf_view; /**< View to the variance freeze flags. */ 00063 00064 gsl_vector *a; /**< Pointer to the amplitude vector. */ 00065 gsl_vector *da; /**< Pointer to the amplitude gradients. */ 00066 gsl_vector_int *af; /**< Pointer to the amplitude freeze flags. */ 00067 gsl_vector *b; /**< Pointer to the variance vector. */ 00068 gsl_vector *db; /**< Pointer to the variance gradients. */ 00069 gsl_vector_int *bf; /**< Pointer to the variance freeze flags. */ 00070 }; 00071 00072 00073 00074 /******************************************/ 00075 /* Public Interface */ 00076 /******************************************/ 00077 00078 gnn_node * 00079 gnn_affine_new (int input_size, double a, double b); 00080 00081 gnn_node * 00082 gnn_affine_standard_new (int input_size); 00083 00084 #endif /* _GNN_AFFINE_H_ */ 00085 00086 00087
1.2.18