/* For copyright information, see olden_v1.0/COPYRIGHT */ /* build.c * * By: Martin C. Carlisle * 6/15/94 * builds the tree for the Power Pricing problem * * based on code by: Steve Lumetta, Sherry Li, and Ismail Khalil * University of California at Berkeley */ #include "power.h" Root build_tree() { register int i; register Root t; #ifdef FUTURES int j; future_cell_int fc[NUM_FEEDERS]; #else register Lateral l; #endif t = (Root) ALLOC(0,sizeof(*t)); #ifdef FUTURES for (i=0,j=0; ifeeders[i]=(Lateral) fc[i].value; } #else for (i=0; ifeeders[i]=l; } #endif t->theta_R = 0.8; t->theta_I = 0.16; return t; } Lateral build_lateral(int i, int num) { register int j,k; register Lateral l; register Branch b; #ifdef FUTURES future_cell_int fc; #else register Lateral next; #endif if (num == 0) return NULL; #ifndef PLAIN { int x,m,q,proc; x = (i+num-1)*BRANCHES_PER_LATERAL+BRANCHES_PER_LATERAL-1; m = 1000%__NumNodes; q = 1000/__NumNodes; if (xnext_lateral = (Lateral) fc.value; #else l->next_lateral = next; #endif l->branch = b; l->R = 1/300000.0; l->X = 0.000001; l->alpha = 0.0; l->beta = 0.0; return l; } Branch build_branch(int i, int j, int num) { register Leaf l; register Branch b; #ifdef FUTURES future_cell_int fc; #endif if (num == 0) return NULL; /* allocate branch */ #ifndef PLAIN { int x,m,q,proc; x = i+j+num-1; m = 1000%__NumNodes; q = 1000/__NumNodes; if (xnext_branch= build_branch(i,j,num-1); #else FUTURE(i,j,num-1,build_branch,&fc); #endif for (i=0; ileaves[i] = l; } #ifdef FUTURES TOUCH(&fc); b->next_branch = (Branch) fc.value; #endif /* fill in values */ b->R = 0.0001; b->X = 0.00002; b->alpha = 0.0; b->beta = 0.0; return b; } Leaf build_leaf() { register Leaf l; l = (Leaf) mymalloc(sizeof(*l)); l->D.P = 1.0; l->D.Q = 1.0; return l; }