9 static float *g_DPBuffer1;
10 static float *g_DPBuffer2;
12 static unsigned g_CacheLB;
14 void AllocBit(unsigned LA, unsigned LB)
16 g_Mx_TBBit.Alloc("TBBit", LA+1, LB+1);
17 g_TBBit = g_Mx_TBBit.GetData();
20 MYFREE(g_DPBuffer1, g_CacheLB, AllocBit);
21 MYFREE(g_DPBuffer2, g_CacheLB, AllocBit);
26 //g_DPBuffer1 = myalloc<float>(g_CacheLB+3);
27 //g_DPBuffer2 = myalloc<float>(g_CacheLB+3);
28 g_DPBuffer1 = MYALLOC(float, g_CacheLB+3, AllocBit);
29 g_DPBuffer2 = MYALLOC(float, g_CacheLB+3, AllocBit);
30 g_DPRow1 = g_DPBuffer1 + 1;
31 g_DPRow2 = g_DPBuffer2 + 1;
35 void TraceBackBit(unsigned LA, unsigned LB, char State, PathData &PD)
39 StartTimer(TraceBackBit);
40 char *PathPtr = PD.Back;
47 Log("TraceBackBit\n");
55 Log("i=%3d j=%3d state=%c\n", (int) i, (int) j, State);
67 asserta(i > 0 && j > 0);
71 else if (t & TRACEBITS_IM)
99 Die("TraceBackBit, invalid state %c", State);
103 EndTimer(TraceBackBit);
106 void TraceBackBitSW(unsigned LA, unsigned LB, unsigned Besti, unsigned Bestj,
107 unsigned &Leni, unsigned &Lenj, PathData &PD)
111 StartTimer(TraceBackBitSW);
112 char *PathPtr = PD.Back;
119 Log("TraceBackBitSW\n");
128 Log("i=%3d j=%3d state=%c\n", (int) i, (int) j, State);
137 asserta(i > 0 && j > 0);
139 if (t & TRACEBITS_DM)
141 else if (t & TRACEBITS_IM)
143 else if (t & TRACEBITS_SM)
145 Leni = Besti - i + 1;
146 Lenj = Bestj - j + 1;
148 EndTimer(TraceBackBitSW);
159 if (t & TRACEBITS_MD)
169 if (t & TRACEBITS_MI)
177 Die("TraceBackBitSW, invalid state %c", State);