/***** *Property of the University of British Columbia (UBC), *Copyright 2001, by UBC. * *By receiving this code, you are agreeing to the following terms: *1. You will use this code for academic purposes only. *2. For academic use only, you may distribute the binary or executable code * to persons at UBC or the Univ. of Western Australia who have previously * read and agreed to these terms, but you must distribute the SOURCE code * with it. *3. Each file of source code so distributed must have this header attached. *4. If the code is revised, the programmer's name and revision date must be added * to the Revision List below, as well as the revisions identified in the code. *5. You will not make this code more widely available via any method such as * publishing in print, email mail-list, usenet posting, website etc. *6. UBC reserves all rights to this work and all derivative works. * *For other proposed purposes please contact: *The University-Industry Liaison Office *IRC Room 331 - 2194 Health Sciences Mall *University of British Columbia *Vancouver, BC, Canada V6T 1Z3 *Tel: (604) 822-8580 *Fax: (604) 822-8589 * *or contact: *Peter D. Lawrence, Professor at peterl@ece.ubc.ca or *Greg Z. Grudic, Assistant Professor, at grudic@cs.colorado.edu * *Revision List: *Greg Grudic, August 28, 1998. *Robin Atkins, August 31, 2000. *Peter Lawrence, December 31, 2001. *****/ /* % % File: pc.h % Program: Header file for Functional Approximation code % % Author: Greg Grudic % */ #include #include #define POLY_DIM 2 #define POLY_TERMS 10 #define MAX_APPROX 10 /*Robin: number of cross-validation sets*/ /*#define ERASE_APPROX_RIGHT_AWAY*/ #define BUILD_APPR /*Robin: Do Training phase*/ #define TEST_APPROX /*Robin: Do Testing phase */ #define TRUE 1 #define FALSE 0 #define SPLIT_OUTPUT TRUE /*pdl: if TRUE output the DataTrain and DataVal files when MAX_APPROX = 1. If FALSE, do not output them at all*/ #define LEVEL_INPUTS POLY_DIM-1 #define NON_1_INPUTS POLY_TERMS-1 typedef double My_Real; #define Scale(x,m,b) (((m*x)+b) > 1.0 ? 1.0:\ ((m*x)+b) < -1.0 ? -1.0:\ ((m*x)+b)) struct Poly_defn { unsigned int input_num[LEVEL_INPUTS]; My_Real a[POLY_TERMS]; My_Real scale_to_output; My_Real m_scale_out, b_scale_out; struct Poly_defn *np; }; struct Cascade_Poly_defn { unsigned int dim; unsigned int first_input; unsigned int num_of_levels; My_Real ave_value; My_Real *m_scale, *b_scale; struct Poly_defn *first_poly; My_Real *x_s; }; typedef struct Poly_defn Poly; typedef struct Cascade_Poly_defn Cascade_Poly;