File Coverage

EditDistance.xs
Criterion Covered Total %
statement 535 3095 17.2
branch 493 8362 5.9
condition n/a
subroutine n/a
pod n/a
total 1028 11457 8.9


line stmt bran cond sub pod time code
1              
2             #line 453 "lib/PDL/PP.pm"
3             /*
4             * THIS FILE WAS GENERATED BY PDL::PP from EditDistance.pd! Do not modify!
5             */
6              
7             #define PDL_FREE_CODE(trans, destroy, comp_free_code, ntpriv_free_code) \
8             if (destroy) { \
9             comp_free_code \
10             } \
11             if ((trans)->dims_redone) { \
12             ntpriv_free_code \
13             }
14              
15             #include "EXTERN.h"
16             #include "perl.h"
17             #include "XSUB.h"
18             #include "pdl.h"
19             #include "pdlcore.h"
20             #define PDL PDL_EditDistance
21             extern Core* PDL; /* Structure hold core C functions */
22             #line 23 "EditDistance.xs"
23              
24             #define ALIGN_OP_MATCH 0
25             #define ALIGN_OP_INSERT1 1
26             #define ALIGN_OP_INSERT2 2
27             #define ALIGN_OP_SUBSTITUTE 3
28              
29              
30             #line 1857 "lib/PDL/PP.pm"
31             pdl_error pdl__edit_distance_full_readdata(pdl_trans *__privtrans) {
32             pdl_error PDL_err = {0, NULL, 0};
33             #line 34 "EditDistance.xs"
34 2 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in _edit_distance_full:" "broadcast.incs NULL");
35             /* broadcastloop declarations */
36             int __brcloopval;
37             register PDL_Indx __tind0,__tind1; /* counters along dim */
38 2           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
39             /* dims here are how many steps along those dims */
40 2           register PDL_Indx __tinc0_a1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
41 2           register PDL_Indx __tinc0_b1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
42 2           register PDL_Indx __tinc0_costsMatch = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
43 2           register PDL_Indx __tinc0_costsIns = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,0);
44 2           register PDL_Indx __tinc0_costsDel = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,0);
45 2           register PDL_Indx __tinc0_costsSubst = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,5,0);
46 2           register PDL_Indx __tinc0_dist = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,6,0);
47 2           register PDL_Indx __tinc1_a1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
48 2           register PDL_Indx __tinc1_b1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
49 2           register PDL_Indx __tinc1_costsMatch = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
50 2           register PDL_Indx __tinc1_costsIns = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,1);
51 2           register PDL_Indx __tinc1_costsDel = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,1);
52 2           register PDL_Indx __tinc1_costsSubst = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,5,1);
53 2           register PDL_Indx __tinc1_dist = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,6,1);
54             #define PDL_BROADCASTLOOP_START__edit_distance_full_readdata PDL_BROADCASTLOOP_START( \
55             readdata, \
56             __privtrans->broadcast, \
57             __privtrans->vtable, \
58             a1_datap += __offsp[0]; \
59             b1_datap += __offsp[1]; \
60             costsMatch_datap += __offsp[2]; \
61             costsIns_datap += __offsp[3]; \
62             costsDel_datap += __offsp[4]; \
63             costsSubst_datap += __offsp[5]; \
64             dist_datap += __offsp[6]; \
65             , \
66             ( ,a1_datap += __tinc1_a1 - __tinc0_a1 * __tdims0 \
67             ,b1_datap += __tinc1_b1 - __tinc0_b1 * __tdims0 \
68             ,costsMatch_datap += __tinc1_costsMatch - __tinc0_costsMatch * __tdims0 \
69             ,costsIns_datap += __tinc1_costsIns - __tinc0_costsIns * __tdims0 \
70             ,costsDel_datap += __tinc1_costsDel - __tinc0_costsDel * __tdims0 \
71             ,costsSubst_datap += __tinc1_costsSubst - __tinc0_costsSubst * __tdims0 \
72             ,dist_datap += __tinc1_dist - __tinc0_dist * __tdims0 \
73             ), \
74             ( ,a1_datap += __tinc0_a1 \
75             ,b1_datap += __tinc0_b1 \
76             ,costsMatch_datap += __tinc0_costsMatch \
77             ,costsIns_datap += __tinc0_costsIns \
78             ,costsDel_datap += __tinc0_costsDel \
79             ,costsSubst_datap += __tinc0_costsSubst \
80             ,dist_datap += __tinc0_dist \
81             ) \
82             )
83             #define PDL_BROADCASTLOOP_END__edit_distance_full_readdata PDL_BROADCASTLOOP_END( \
84             __privtrans->broadcast, \
85             a1_datap -= __tinc1_a1 * __tdims1 + __offsp[0]; \
86             b1_datap -= __tinc1_b1 * __tdims1 + __offsp[1]; \
87             costsMatch_datap -= __tinc1_costsMatch * __tdims1 + __offsp[2]; \
88             costsIns_datap -= __tinc1_costsIns * __tdims1 + __offsp[3]; \
89             costsDel_datap -= __tinc1_costsDel * __tdims1 + __offsp[4]; \
90             costsSubst_datap -= __tinc1_costsSubst * __tdims1 + __offsp[5]; \
91             dist_datap -= __tinc1_dist * __tdims1 + __offsp[6]; \
92             )
93 2           register PDL_Indx __inc_a1_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a1_N1;
94 2           register PDL_Indx __inc_b1_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_b1_M1;
95 2           register PDL_Indx __inc_costsDel_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,4,0)]; (void)__inc_costsDel_N1;register PDL_Indx __inc_costsDel_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,4,1)]; (void)__inc_costsDel_M1;
96 2           register PDL_Indx __inc_costsIns_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,3,0)]; (void)__inc_costsIns_N1;register PDL_Indx __inc_costsIns_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,3,1)]; (void)__inc_costsIns_M1;
97 2           register PDL_Indx __inc_costsMatch_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,0)]; (void)__inc_costsMatch_N1;register PDL_Indx __inc_costsMatch_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,1)]; (void)__inc_costsMatch_M1;
98 2           register PDL_Indx __inc_costsSubst_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,5,0)]; (void)__inc_costsSubst_N1;register PDL_Indx __inc_costsSubst_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,5,1)]; (void)__inc_costsSubst_M1;
99 2           register PDL_Indx __inc_dist_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,6,0)]; (void)__inc_dist_N1;register PDL_Indx __inc_dist_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,6,1)]; (void)__inc_dist_M1;
100             #ifndef PDL_DECLARE_PARAMS__edit_distance_full_1
101             #define PDL_DECLARE_PARAMS__edit_distance_full_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
102             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a1, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
103             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, b1, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP) \
104             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costsMatch, (__privtrans->pdls[2]), 1, PDL_PPSYM_OP) \
105             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costsIns, (__privtrans->pdls[3]), 1, PDL_PPSYM_OP) \
106             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costsDel, (__privtrans->pdls[4]), 1, PDL_PPSYM_OP) \
107             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costsSubst, (__privtrans->pdls[5]), 1, PDL_PPSYM_OP) \
108             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, dist, (__privtrans->pdls[6]), 1, PDL_PPSYM_OP)
109             #endif
110             #define PDL_IF_BAD(t,f) f
111 2           switch (__privtrans->__datatype) { /* Start generic switch */
112 0           case PDL_SB: {
113 0 0         PDL_DECLARE_PARAMS__edit_distance_full_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
114 0 0         PDL_BROADCASTLOOP_START__edit_distance_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
115             int i,j;
116 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
117 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))]; }
118 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
119 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))]; }
120 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
121 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
122 0           PDL_SByte cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
123 0           PDL_SByte cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
124 0           PDL_SByte cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
125 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
126 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
127             } else {
128 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
129             }
130 0 0         if (cost_insert_1 < cost_insert_2) {
131 0 0         if (cost_insert_1 < cost_subst) {
132 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
133             } else {
134 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
135             }
136 0 0         } else if (cost_insert_2 < cost_subst) {
137 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
138             } else {
139 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
140             }
141             }
142             }
143 0 0         }PDL_BROADCASTLOOP_END__edit_distance_full_readdata
    0          
144 0           } break;
145 0           case PDL_B: {
146 0 0         PDL_DECLARE_PARAMS__edit_distance_full_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
147 0 0         PDL_BROADCASTLOOP_START__edit_distance_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
148             int i,j;
149 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
150 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))]; }
151 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
152 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))]; }
153 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
154 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
155 0           PDL_Byte cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
156 0           PDL_Byte cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
157 0           PDL_Byte cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
158 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
159 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
160             } else {
161 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
162             }
163 0 0         if (cost_insert_1 < cost_insert_2) {
164 0 0         if (cost_insert_1 < cost_subst) {
165 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
166             } else {
167 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
168             }
169 0 0         } else if (cost_insert_2 < cost_subst) {
170 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
171             } else {
172 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
173             }
174             }
175             }
176 0 0         }PDL_BROADCASTLOOP_END__edit_distance_full_readdata
    0          
177 0           } break;
178 0           case PDL_S: {
179 0 0         PDL_DECLARE_PARAMS__edit_distance_full_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
180 0 0         PDL_BROADCASTLOOP_START__edit_distance_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
181             int i,j;
182 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
183 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))]; }
184 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
185 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))]; }
186 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
187 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
188 0           PDL_Short cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
189 0           PDL_Short cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
190 0           PDL_Short cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
191 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
192 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
193             } else {
194 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
195             }
196 0 0         if (cost_insert_1 < cost_insert_2) {
197 0 0         if (cost_insert_1 < cost_subst) {
198 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
199             } else {
200 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
201             }
202 0 0         } else if (cost_insert_2 < cost_subst) {
203 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
204             } else {
205 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
206             }
207             }
208             }
209 0 0         }PDL_BROADCASTLOOP_END__edit_distance_full_readdata
    0          
210 0           } break;
211 0           case PDL_US: {
212 0 0         PDL_DECLARE_PARAMS__edit_distance_full_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
213 0 0         PDL_BROADCASTLOOP_START__edit_distance_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
214             int i,j;
215 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
216 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))]; }
217 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
218 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))]; }
219 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
220 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
221 0           PDL_Ushort cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
222 0           PDL_Ushort cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
223 0           PDL_Ushort cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
224 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
225 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
226             } else {
227 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
228             }
229 0 0         if (cost_insert_1 < cost_insert_2) {
230 0 0         if (cost_insert_1 < cost_subst) {
231 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
232             } else {
233 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
234             }
235 0 0         } else if (cost_insert_2 < cost_subst) {
236 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
237             } else {
238 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
239             }
240             }
241             }
242 0 0         }PDL_BROADCASTLOOP_END__edit_distance_full_readdata
    0          
243 0           } break;
244 0           case PDL_L: {
245 0 0         PDL_DECLARE_PARAMS__edit_distance_full_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
246 0 0         PDL_BROADCASTLOOP_START__edit_distance_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
247             int i,j;
248 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
249 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))]; }
250 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
251 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))]; }
252 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
253 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
254 0           PDL_Long cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
255 0           PDL_Long cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
256 0           PDL_Long cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
257 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
258 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
259             } else {
260 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
261             }
262 0 0         if (cost_insert_1 < cost_insert_2) {
263 0 0         if (cost_insert_1 < cost_subst) {
264 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
265             } else {
266 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
267             }
268 0 0         } else if (cost_insert_2 < cost_subst) {
269 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
270             } else {
271 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
272             }
273             }
274             }
275 0 0         }PDL_BROADCASTLOOP_END__edit_distance_full_readdata
    0          
276 0           } break;
277 0           case PDL_UL: {
278 0 0         PDL_DECLARE_PARAMS__edit_distance_full_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
279 0 0         PDL_BROADCASTLOOP_START__edit_distance_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
280             int i,j;
281 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
282 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))]; }
283 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
284 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))]; }
285 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
286 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
287 0           PDL_ULong cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
288 0           PDL_ULong cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
289 0           PDL_ULong cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
290 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
291 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
292             } else {
293 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
294             }
295 0 0         if (cost_insert_1 < cost_insert_2) {
296 0 0         if (cost_insert_1 < cost_subst) {
297 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
298             } else {
299 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
300             }
301 0 0         } else if (cost_insert_2 < cost_subst) {
302 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
303             } else {
304 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
305             }
306             }
307             }
308 0 0         }PDL_BROADCASTLOOP_END__edit_distance_full_readdata
    0          
309 0           } break;
310 0           case PDL_IND: {
311 0 0         PDL_DECLARE_PARAMS__edit_distance_full_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
312 0 0         PDL_BROADCASTLOOP_START__edit_distance_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
313             int i,j;
314 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
315 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))]; }
316 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
317 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))]; }
318 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
319 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
320 0           PDL_Indx cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
321 0           PDL_Indx cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
322 0           PDL_Indx cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
323 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
324 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
325             } else {
326 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
327             }
328 0 0         if (cost_insert_1 < cost_insert_2) {
329 0 0         if (cost_insert_1 < cost_subst) {
330 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
331             } else {
332 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
333             }
334 0 0         } else if (cost_insert_2 < cost_subst) {
335 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
336             } else {
337 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
338             }
339             }
340             }
341 0 0         }PDL_BROADCASTLOOP_END__edit_distance_full_readdata
    0          
342 0           } break;
343 0           case PDL_ULL: {
344 0 0         PDL_DECLARE_PARAMS__edit_distance_full_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
345 0 0         PDL_BROADCASTLOOP_START__edit_distance_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
346             int i,j;
347 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
348 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))]; }
349 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
350 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))]; }
351 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
352 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
353 0           PDL_ULongLong cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
354 0           PDL_ULongLong cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
355 0           PDL_ULongLong cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
356 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
357 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
358             } else {
359 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
360             }
361 0 0         if (cost_insert_1 < cost_insert_2) {
362 0 0         if (cost_insert_1 < cost_subst) {
363 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
364             } else {
365 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
366             }
367 0 0         } else if (cost_insert_2 < cost_subst) {
368 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
369             } else {
370 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
371             }
372             }
373             }
374 0 0         }PDL_BROADCASTLOOP_END__edit_distance_full_readdata
    0          
375 0           } break;
376 0           case PDL_LL: {
377 0 0         PDL_DECLARE_PARAMS__edit_distance_full_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
378 0 0         PDL_BROADCASTLOOP_START__edit_distance_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
379             int i,j;
380 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
381 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))]; }
382 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
383 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))]; }
384 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
385 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
386 0           PDL_LongLong cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
387 0           PDL_LongLong cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
388 0           PDL_LongLong cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
389 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
390 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
391             } else {
392 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
393             }
394 0 0         if (cost_insert_1 < cost_insert_2) {
395 0 0         if (cost_insert_1 < cost_subst) {
396 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
397             } else {
398 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
399             }
400 0 0         } else if (cost_insert_2 < cost_subst) {
401 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
402             } else {
403 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
404             }
405             }
406             }
407 0 0         }PDL_BROADCASTLOOP_END__edit_distance_full_readdata
    0          
408 0           } break;
409 0           case PDL_F: {
410 0 0         PDL_DECLARE_PARAMS__edit_distance_full_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
411 0 0         PDL_BROADCASTLOOP_START__edit_distance_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
412             int i,j;
413 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
414 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))]; }
415 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
416 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))]; }
417 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
418 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
419 0           PDL_Float cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
420 0           PDL_Float cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
421 0           PDL_Float cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
422 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
423 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
424             } else {
425 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
426             }
427 0 0         if (cost_insert_1 < cost_insert_2) {
428 0 0         if (cost_insert_1 < cost_subst) {
429 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
430             } else {
431 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
432             }
433 0 0         } else if (cost_insert_2 < cost_subst) {
434 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
435             } else {
436 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
437             }
438             }
439             }
440 0 0         }PDL_BROADCASTLOOP_END__edit_distance_full_readdata
    0          
441 0           } break;
442 2           case PDL_D: {
443 2 50         PDL_DECLARE_PARAMS__edit_distance_full_1(PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
444 8 50         PDL_BROADCASTLOOP_START__edit_distance_full_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
445             int i,j;
446 12 100         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
447 10           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))]; }
448 14 100         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
449 12           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))]; }
450 12 100         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
451 70 100         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
452 60           PDL_Double cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
453 60           PDL_Double cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
454 60           PDL_Double cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
455 60 100         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
456 8           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
457             } else {
458 52           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
459             }
460 60 100         if (cost_insert_1 < cost_insert_2) {
461 20 100         if (cost_insert_1 < cost_subst) {
462 14           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
463             } else {
464 6           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
465             }
466 40 100         } else if (cost_insert_2 < cost_subst) {
467 22           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
468             } else {
469 18           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
470             }
471             }
472             }
473 2 50         }PDL_BROADCASTLOOP_END__edit_distance_full_readdata
    50          
474 2           } break;
475 0           case PDL_LD: {
476 0 0         PDL_DECLARE_PARAMS__edit_distance_full_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
477 0 0         PDL_BROADCASTLOOP_START__edit_distance_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
478             int i,j;
479 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
480 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))]; }
481 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
482 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))]; }
483 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
484 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
485 0           PDL_LDouble cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
486 0           PDL_LDouble cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
487 0           PDL_LDouble cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
488 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
489 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
490             } else {
491 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
492             }
493 0 0         if (cost_insert_1 < cost_insert_2) {
494 0 0         if (cost_insert_1 < cost_subst) {
495 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
496             } else {
497 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
498             }
499 0 0         } else if (cost_insert_2 < cost_subst) {
500 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
501             } else {
502 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
503             }
504             }
505             }
506 0 0         }PDL_BROADCASTLOOP_END__edit_distance_full_readdata
    0          
507 0           } break;
508 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in _edit_distance_full: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
509             }
510             #undef PDL_IF_BAD
511 2           return PDL_err;
512             }
513              
514             static pdl_datatypes pdl__edit_distance_full_vtable_gentypes[] = { PDL_SB, PDL_B, PDL_S, PDL_US, PDL_L, PDL_UL, PDL_IND, PDL_ULL, PDL_LL, PDL_F, PDL_D, PDL_LD, -1 };
515             static PDL_Indx pdl__edit_distance_full_vtable_realdims[] = { 1, 1, 2, 2, 2, 2, 2 };
516             static char *pdl__edit_distance_full_vtable_parnames[] = { "a1","b1","costsMatch","costsIns","costsDel","costsSubst","dist" };
517             static short pdl__edit_distance_full_vtable_parflags[] = {
518             0,
519             0,
520             0,
521             0,
522             0,
523             0,
524             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
525             };
526             static pdl_datatypes pdl__edit_distance_full_vtable_partypes[] = { -1, -1, -1, -1, -1, -1, -1 };
527             static PDL_Indx pdl__edit_distance_full_vtable_realdims_starts[] = { 0, 1, 2, 4, 6, 8, 10 };
528             static PDL_Indx pdl__edit_distance_full_vtable_realdims_ind_ids[] = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 };
529             static char *pdl__edit_distance_full_vtable_indnames[] = { "M1","N1" };
530             pdl_transvtable pdl__edit_distance_full_vtable = {
531             PDL_TRANS_DO_BROADCAST, 0, pdl__edit_distance_full_vtable_gentypes, 6, 7, NULL /*CORE21*/,
532             pdl__edit_distance_full_vtable_realdims, pdl__edit_distance_full_vtable_parnames,
533             pdl__edit_distance_full_vtable_parflags, pdl__edit_distance_full_vtable_partypes,
534             pdl__edit_distance_full_vtable_realdims_starts, pdl__edit_distance_full_vtable_realdims_ind_ids, 12,
535             2, pdl__edit_distance_full_vtable_indnames,
536             NULL, pdl__edit_distance_full_readdata, NULL,
537             NULL,
538             0,"PDL::EditDistance::_edit_distance_full"
539             };
540              
541              
542 2           pdl_error pdl_run__edit_distance_full(pdl *a1,pdl *b1,pdl *costsMatch,pdl *costsIns,pdl *costsDel,pdl *costsSubst,pdl *dist) {
543 2           pdl_error PDL_err = {0, NULL, 0};
544 2 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
545 2           pdl_trans *__privtrans = PDL->create_trans(&pdl__edit_distance_full_vtable);
546 2 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
547 2           __privtrans->pdls[0] = a1;
548 2           __privtrans->pdls[1] = b1;
549 2           __privtrans->pdls[2] = costsMatch;
550 2           __privtrans->pdls[3] = costsIns;
551 2           __privtrans->pdls[4] = costsDel;
552 2           __privtrans->pdls[5] = costsSubst;
553 2           __privtrans->pdls[6] = dist;
554 2 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
555 2 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
556 2           return PDL_err;
557             }
558              
559             #line 1857 "lib/PDL/PP.pm"
560             pdl_error pdl__edit_align_full_readdata(pdl_trans *__privtrans) {
561             pdl_error PDL_err = {0, NULL, 0};
562             #line 563 "EditDistance.xs"
563 2 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in _edit_align_full:" "broadcast.incs NULL");
564             /* broadcastloop declarations */
565             int __brcloopval;
566             register PDL_Indx __tind0,__tind1; /* counters along dim */
567 2           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
568             /* dims here are how many steps along those dims */
569 2           register PDL_Indx __tinc0_a1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
570 2           register PDL_Indx __tinc0_b1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
571 2           register PDL_Indx __tinc0_costsMatch = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
572 2           register PDL_Indx __tinc0_costsIns = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,0);
573 2           register PDL_Indx __tinc0_costsDel = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,0);
574 2           register PDL_Indx __tinc0_costsSubst = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,5,0);
575 2           register PDL_Indx __tinc0_dist = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,6,0);
576 2           register PDL_Indx __tinc0_align = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,7,0);
577 2           register PDL_Indx __tinc1_a1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
578 2           register PDL_Indx __tinc1_b1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
579 2           register PDL_Indx __tinc1_costsMatch = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
580 2           register PDL_Indx __tinc1_costsIns = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,1);
581 2           register PDL_Indx __tinc1_costsDel = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,1);
582 2           register PDL_Indx __tinc1_costsSubst = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,5,1);
583 2           register PDL_Indx __tinc1_dist = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,6,1);
584 2           register PDL_Indx __tinc1_align = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,7,1);
585             #define PDL_BROADCASTLOOP_START__edit_align_full_readdata PDL_BROADCASTLOOP_START( \
586             readdata, \
587             __privtrans->broadcast, \
588             __privtrans->vtable, \
589             a1_datap += __offsp[0]; \
590             b1_datap += __offsp[1]; \
591             costsMatch_datap += __offsp[2]; \
592             costsIns_datap += __offsp[3]; \
593             costsDel_datap += __offsp[4]; \
594             costsSubst_datap += __offsp[5]; \
595             dist_datap += __offsp[6]; \
596             align_datap += __offsp[7]; \
597             , \
598             ( ,a1_datap += __tinc1_a1 - __tinc0_a1 * __tdims0 \
599             ,b1_datap += __tinc1_b1 - __tinc0_b1 * __tdims0 \
600             ,costsMatch_datap += __tinc1_costsMatch - __tinc0_costsMatch * __tdims0 \
601             ,costsIns_datap += __tinc1_costsIns - __tinc0_costsIns * __tdims0 \
602             ,costsDel_datap += __tinc1_costsDel - __tinc0_costsDel * __tdims0 \
603             ,costsSubst_datap += __tinc1_costsSubst - __tinc0_costsSubst * __tdims0 \
604             ,dist_datap += __tinc1_dist - __tinc0_dist * __tdims0 \
605             ,align_datap += __tinc1_align - __tinc0_align * __tdims0 \
606             ), \
607             ( ,a1_datap += __tinc0_a1 \
608             ,b1_datap += __tinc0_b1 \
609             ,costsMatch_datap += __tinc0_costsMatch \
610             ,costsIns_datap += __tinc0_costsIns \
611             ,costsDel_datap += __tinc0_costsDel \
612             ,costsSubst_datap += __tinc0_costsSubst \
613             ,dist_datap += __tinc0_dist \
614             ,align_datap += __tinc0_align \
615             ) \
616             )
617             #define PDL_BROADCASTLOOP_END__edit_align_full_readdata PDL_BROADCASTLOOP_END( \
618             __privtrans->broadcast, \
619             a1_datap -= __tinc1_a1 * __tdims1 + __offsp[0]; \
620             b1_datap -= __tinc1_b1 * __tdims1 + __offsp[1]; \
621             costsMatch_datap -= __tinc1_costsMatch * __tdims1 + __offsp[2]; \
622             costsIns_datap -= __tinc1_costsIns * __tdims1 + __offsp[3]; \
623             costsDel_datap -= __tinc1_costsDel * __tdims1 + __offsp[4]; \
624             costsSubst_datap -= __tinc1_costsSubst * __tdims1 + __offsp[5]; \
625             dist_datap -= __tinc1_dist * __tdims1 + __offsp[6]; \
626             align_datap -= __tinc1_align * __tdims1 + __offsp[7]; \
627             )
628 2           register PDL_Indx __inc_a1_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a1_N1;
629 2           register PDL_Indx __inc_align_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,7,0)]; (void)__inc_align_N1;register PDL_Indx __inc_align_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,7,1)]; (void)__inc_align_M1;
630 2           register PDL_Indx __inc_b1_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_b1_M1;
631 2           register PDL_Indx __inc_costsDel_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,4,0)]; (void)__inc_costsDel_N1;register PDL_Indx __inc_costsDel_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,4,1)]; (void)__inc_costsDel_M1;
632 2           register PDL_Indx __inc_costsIns_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,3,0)]; (void)__inc_costsIns_N1;register PDL_Indx __inc_costsIns_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,3,1)]; (void)__inc_costsIns_M1;
633 2           register PDL_Indx __inc_costsMatch_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,0)]; (void)__inc_costsMatch_N1;register PDL_Indx __inc_costsMatch_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,1)]; (void)__inc_costsMatch_M1;
634 2           register PDL_Indx __inc_costsSubst_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,5,0)]; (void)__inc_costsSubst_N1;register PDL_Indx __inc_costsSubst_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,5,1)]; (void)__inc_costsSubst_M1;
635 2           register PDL_Indx __inc_dist_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,6,0)]; (void)__inc_dist_N1;register PDL_Indx __inc_dist_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,6,1)]; (void)__inc_dist_M1;
636             #ifndef PDL_DECLARE_PARAMS__edit_align_full_1
637             #define PDL_DECLARE_PARAMS__edit_align_full_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_align,PDL_PPSYM_PARAM_align) \
638             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a1, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
639             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, b1, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP) \
640             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costsMatch, (__privtrans->pdls[2]), 1, PDL_PPSYM_OP) \
641             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costsIns, (__privtrans->pdls[3]), 1, PDL_PPSYM_OP) \
642             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costsDel, (__privtrans->pdls[4]), 1, PDL_PPSYM_OP) \
643             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costsSubst, (__privtrans->pdls[5]), 1, PDL_PPSYM_OP) \
644             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, dist, (__privtrans->pdls[6]), 1, PDL_PPSYM_OP) \
645             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_align, align, (__privtrans->pdls[7]), 1, PDL_PPSYM_PARAM_align)
646             #endif
647             #define PDL_IF_BAD(t,f) f
648 2           switch (__privtrans->__datatype) { /* Start generic switch */
649 0           case PDL_SB: {
650 0 0         PDL_DECLARE_PARAMS__edit_align_full_1(PDL_SByte,A,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
651 0 0         PDL_BROADCASTLOOP_START__edit_align_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
652             int i,j;
653 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
654 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))];
655 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
656             }
657 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
658 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))];
659 0           (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
660             }
661 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
662 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
663 0           PDL_SByte cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
664 0           PDL_SByte cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
665 0           PDL_SByte cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
666             char subst_op;
667 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
668 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
669 0           subst_op = ALIGN_OP_MATCH;
670             } else {
671 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
672 0           subst_op = ALIGN_OP_SUBSTITUTE;
673             }
674 0 0         if (cost_insert_1 < cost_insert_2) {
675 0 0         if (cost_insert_1 < cost_subst) {
676 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
677 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
678             } else {
679 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
680 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
681             }
682 0 0         } else if (cost_insert_2 < cost_subst) {
683 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
684 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
685             } else {
686 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
687 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
688             }
689             }
690             }
691 0 0         }PDL_BROADCASTLOOP_END__edit_align_full_readdata
    0          
692 0           } break;
693 0           case PDL_B: {
694 0 0         PDL_DECLARE_PARAMS__edit_align_full_1(PDL_Byte,B,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
695 0 0         PDL_BROADCASTLOOP_START__edit_align_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
696             int i,j;
697 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
698 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))];
699 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
700             }
701 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
702 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))];
703 0           (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
704             }
705 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
706 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
707 0           PDL_Byte cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
708 0           PDL_Byte cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
709 0           PDL_Byte cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
710             char subst_op;
711 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
712 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
713 0           subst_op = ALIGN_OP_MATCH;
714             } else {
715 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
716 0           subst_op = ALIGN_OP_SUBSTITUTE;
717             }
718 0 0         if (cost_insert_1 < cost_insert_2) {
719 0 0         if (cost_insert_1 < cost_subst) {
720 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
721 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
722             } else {
723 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
724 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
725             }
726 0 0         } else if (cost_insert_2 < cost_subst) {
727 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
728 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
729             } else {
730 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
731 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
732             }
733             }
734             }
735 0 0         }PDL_BROADCASTLOOP_END__edit_align_full_readdata
    0          
736 0           } break;
737 0           case PDL_S: {
738 0 0         PDL_DECLARE_PARAMS__edit_align_full_1(PDL_Short,S,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
739 0 0         PDL_BROADCASTLOOP_START__edit_align_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
740             int i,j;
741 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
742 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))];
743 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
744             }
745 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
746 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))];
747 0           (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
748             }
749 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
750 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
751 0           PDL_Short cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
752 0           PDL_Short cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
753 0           PDL_Short cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
754             char subst_op;
755 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
756 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
757 0           subst_op = ALIGN_OP_MATCH;
758             } else {
759 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
760 0           subst_op = ALIGN_OP_SUBSTITUTE;
761             }
762 0 0         if (cost_insert_1 < cost_insert_2) {
763 0 0         if (cost_insert_1 < cost_subst) {
764 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
765 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
766             } else {
767 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
768 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
769             }
770 0 0         } else if (cost_insert_2 < cost_subst) {
771 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
772 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
773             } else {
774 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
775 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
776             }
777             }
778             }
779 0 0         }PDL_BROADCASTLOOP_END__edit_align_full_readdata
    0          
780 0           } break;
781 0           case PDL_US: {
782 0 0         PDL_DECLARE_PARAMS__edit_align_full_1(PDL_Ushort,U,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
783 0 0         PDL_BROADCASTLOOP_START__edit_align_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
784             int i,j;
785 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
786 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))];
787 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
788             }
789 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
790 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))];
791 0           (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
792             }
793 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
794 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
795 0           PDL_Ushort cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
796 0           PDL_Ushort cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
797 0           PDL_Ushort cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
798             char subst_op;
799 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
800 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
801 0           subst_op = ALIGN_OP_MATCH;
802             } else {
803 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
804 0           subst_op = ALIGN_OP_SUBSTITUTE;
805             }
806 0 0         if (cost_insert_1 < cost_insert_2) {
807 0 0         if (cost_insert_1 < cost_subst) {
808 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
809 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
810             } else {
811 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
812 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
813             }
814 0 0         } else if (cost_insert_2 < cost_subst) {
815 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
816 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
817             } else {
818 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
819 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
820             }
821             }
822             }
823 0 0         }PDL_BROADCASTLOOP_END__edit_align_full_readdata
    0          
824 0           } break;
825 0           case PDL_L: {
826 0 0         PDL_DECLARE_PARAMS__edit_align_full_1(PDL_Long,L,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
827 0 0         PDL_BROADCASTLOOP_START__edit_align_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
828             int i,j;
829 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
830 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))];
831 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
832             }
833 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
834 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))];
835 0           (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
836             }
837 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
838 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
839 0           PDL_Long cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
840 0           PDL_Long cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
841 0           PDL_Long cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
842             char subst_op;
843 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
844 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
845 0           subst_op = ALIGN_OP_MATCH;
846             } else {
847 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
848 0           subst_op = ALIGN_OP_SUBSTITUTE;
849             }
850 0 0         if (cost_insert_1 < cost_insert_2) {
851 0 0         if (cost_insert_1 < cost_subst) {
852 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
853 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
854             } else {
855 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
856 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
857             }
858 0 0         } else if (cost_insert_2 < cost_subst) {
859 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
860 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
861             } else {
862 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
863 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
864             }
865             }
866             }
867 0 0         }PDL_BROADCASTLOOP_END__edit_align_full_readdata
    0          
868 0           } break;
869 0           case PDL_UL: {
870 0 0         PDL_DECLARE_PARAMS__edit_align_full_1(PDL_ULong,K,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
871 0 0         PDL_BROADCASTLOOP_START__edit_align_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
872             int i,j;
873 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
874 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))];
875 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
876             }
877 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
878 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))];
879 0           (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
880             }
881 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
882 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
883 0           PDL_ULong cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
884 0           PDL_ULong cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
885 0           PDL_ULong cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
886             char subst_op;
887 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
888 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
889 0           subst_op = ALIGN_OP_MATCH;
890             } else {
891 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
892 0           subst_op = ALIGN_OP_SUBSTITUTE;
893             }
894 0 0         if (cost_insert_1 < cost_insert_2) {
895 0 0         if (cost_insert_1 < cost_subst) {
896 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
897 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
898             } else {
899 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
900 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
901             }
902 0 0         } else if (cost_insert_2 < cost_subst) {
903 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
904 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
905             } else {
906 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
907 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
908             }
909             }
910             }
911 0 0         }PDL_BROADCASTLOOP_END__edit_align_full_readdata
    0          
912 0           } break;
913 0           case PDL_IND: {
914 0 0         PDL_DECLARE_PARAMS__edit_align_full_1(PDL_Indx,N,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
915 0 0         PDL_BROADCASTLOOP_START__edit_align_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
916             int i,j;
917 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
918 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))];
919 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
920             }
921 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
922 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))];
923 0           (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
924             }
925 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
926 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
927 0           PDL_Indx cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
928 0           PDL_Indx cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
929 0           PDL_Indx cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
930             char subst_op;
931 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
932 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
933 0           subst_op = ALIGN_OP_MATCH;
934             } else {
935 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
936 0           subst_op = ALIGN_OP_SUBSTITUTE;
937             }
938 0 0         if (cost_insert_1 < cost_insert_2) {
939 0 0         if (cost_insert_1 < cost_subst) {
940 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
941 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
942             } else {
943 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
944 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
945             }
946 0 0         } else if (cost_insert_2 < cost_subst) {
947 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
948 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
949             } else {
950 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
951 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
952             }
953             }
954             }
955 0 0         }PDL_BROADCASTLOOP_END__edit_align_full_readdata
    0          
956 0           } break;
957 0           case PDL_ULL: {
958 0 0         PDL_DECLARE_PARAMS__edit_align_full_1(PDL_ULongLong,P,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
959 0 0         PDL_BROADCASTLOOP_START__edit_align_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
960             int i,j;
961 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
962 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))];
963 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
964             }
965 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
966 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))];
967 0           (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
968             }
969 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
970 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
971 0           PDL_ULongLong cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
972 0           PDL_ULongLong cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
973 0           PDL_ULongLong cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
974             char subst_op;
975 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
976 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
977 0           subst_op = ALIGN_OP_MATCH;
978             } else {
979 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
980 0           subst_op = ALIGN_OP_SUBSTITUTE;
981             }
982 0 0         if (cost_insert_1 < cost_insert_2) {
983 0 0         if (cost_insert_1 < cost_subst) {
984 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
985 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
986             } else {
987 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
988 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
989             }
990 0 0         } else if (cost_insert_2 < cost_subst) {
991 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
992 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
993             } else {
994 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
995 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
996             }
997             }
998             }
999 0 0         }PDL_BROADCASTLOOP_END__edit_align_full_readdata
    0          
1000 0           } break;
1001 0           case PDL_LL: {
1002 0 0         PDL_DECLARE_PARAMS__edit_align_full_1(PDL_LongLong,Q,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1003 0 0         PDL_BROADCASTLOOP_START__edit_align_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1004             int i,j;
1005 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1006 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))];
1007 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
1008             }
1009 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1010 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))];
1011 0           (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1012             }
1013 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1014 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1015 0           PDL_LongLong cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
1016 0           PDL_LongLong cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
1017 0           PDL_LongLong cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
1018             char subst_op;
1019 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
1020 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
1021 0           subst_op = ALIGN_OP_MATCH;
1022             } else {
1023 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
1024 0           subst_op = ALIGN_OP_SUBSTITUTE;
1025             }
1026 0 0         if (cost_insert_1 < cost_insert_2) {
1027 0 0         if (cost_insert_1 < cost_subst) {
1028 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1029 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
1030             } else {
1031 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1032 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1033             }
1034 0 0         } else if (cost_insert_2 < cost_subst) {
1035 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1036 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1037             } else {
1038 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1039 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1040             }
1041             }
1042             }
1043 0 0         }PDL_BROADCASTLOOP_END__edit_align_full_readdata
    0          
1044 0           } break;
1045 0           case PDL_F: {
1046 0 0         PDL_DECLARE_PARAMS__edit_align_full_1(PDL_Float,F,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1047 0 0         PDL_BROADCASTLOOP_START__edit_align_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1048             int i,j;
1049 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1050 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))];
1051 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
1052             }
1053 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1054 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))];
1055 0           (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1056             }
1057 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1058 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1059 0           PDL_Float cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
1060 0           PDL_Float cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
1061 0           PDL_Float cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
1062             char subst_op;
1063 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
1064 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
1065 0           subst_op = ALIGN_OP_MATCH;
1066             } else {
1067 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
1068 0           subst_op = ALIGN_OP_SUBSTITUTE;
1069             }
1070 0 0         if (cost_insert_1 < cost_insert_2) {
1071 0 0         if (cost_insert_1 < cost_subst) {
1072 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1073 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
1074             } else {
1075 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1076 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1077             }
1078 0 0         } else if (cost_insert_2 < cost_subst) {
1079 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1080 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1081             } else {
1082 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1083 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1084             }
1085             }
1086             }
1087 0 0         }PDL_BROADCASTLOOP_END__edit_align_full_readdata
    0          
1088 0           } break;
1089 2           case PDL_D: {
1090 2 50         PDL_DECLARE_PARAMS__edit_align_full_1(PDL_Double,D,PDL_Byte,B)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
1091 8 50         PDL_BROADCASTLOOP_START__edit_align_full_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
1092             int i,j;
1093 12 100         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1094 10           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))];
1095 10           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
1096             }
1097 14 100         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1098 12           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))];
1099 12           (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1100             }
1101 12 100         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1102 70 100         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1103 60           PDL_Double cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
1104 60           PDL_Double cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
1105 60           PDL_Double cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
1106             char subst_op;
1107 60 100         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
1108 8           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
1109 8           subst_op = ALIGN_OP_MATCH;
1110             } else {
1111 52           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
1112 52           subst_op = ALIGN_OP_SUBSTITUTE;
1113             }
1114 60 100         if (cost_insert_1 < cost_insert_2) {
1115 20 100         if (cost_insert_1 < cost_subst) {
1116 14           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1117 14           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
1118             } else {
1119 6           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1120 6           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1121             }
1122 40 100         } else if (cost_insert_2 < cost_subst) {
1123 22           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1124 22           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1125             } else {
1126 18           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1127 18           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1128             }
1129             }
1130             }
1131 2 50         }PDL_BROADCASTLOOP_END__edit_align_full_readdata
    50          
1132 2           } break;
1133 0           case PDL_LD: {
1134 0 0         PDL_DECLARE_PARAMS__edit_align_full_1(PDL_LDouble,E,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1135 0 0         PDL_BROADCASTLOOP_START__edit_align_full_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1136             int i,j;
1137 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costsMatch_datap)[0+(__inc_costsMatch_N1*(0))+(__inc_costsMatch_M1*(0))]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1138 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(0))];
1139 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
1140             }
1141 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1142 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(0))+(__inc_costsIns_M1*(j))];
1143 0           (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1144             }
1145 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1146 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1147 0           PDL_LDouble cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costsDel_datap)[0+(__inc_costsDel_N1*(i))+(__inc_costsDel_M1*(j))];
1148 0           PDL_LDouble cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costsIns_datap)[0+(__inc_costsIns_N1*(i))+(__inc_costsIns_M1*(j))];
1149 0           PDL_LDouble cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
1150             char subst_op;
1151 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
1152 0           cost_subst += (costsMatch_datap)[0+(__inc_costsMatch_N1*(i))+(__inc_costsMatch_M1*(j))];
1153 0           subst_op = ALIGN_OP_MATCH;
1154             } else {
1155 0           cost_subst += (costsSubst_datap)[0+(__inc_costsSubst_N1*(i))+(__inc_costsSubst_M1*(j))];
1156 0           subst_op = ALIGN_OP_SUBSTITUTE;
1157             }
1158 0 0         if (cost_insert_1 < cost_insert_2) {
1159 0 0         if (cost_insert_1 < cost_subst) {
1160 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1161 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
1162             } else {
1163 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1164 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1165             }
1166 0 0         } else if (cost_insert_2 < cost_subst) {
1167 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1168 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1169             } else {
1170 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1171 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1172             }
1173             }
1174             }
1175 0 0         }PDL_BROADCASTLOOP_END__edit_align_full_readdata
    0          
1176 0           } break;
1177 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in _edit_align_full: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
1178             }
1179             #undef PDL_IF_BAD
1180 2           return PDL_err;
1181             }
1182              
1183             static pdl_datatypes pdl__edit_align_full_vtable_gentypes[] = { PDL_SB, PDL_B, PDL_S, PDL_US, PDL_L, PDL_UL, PDL_IND, PDL_ULL, PDL_LL, PDL_F, PDL_D, PDL_LD, -1 };
1184             static PDL_Indx pdl__edit_align_full_vtable_realdims[] = { 1, 1, 2, 2, 2, 2, 2, 2 };
1185             static char *pdl__edit_align_full_vtable_parnames[] = { "a1","b1","costsMatch","costsIns","costsDel","costsSubst","dist","align" };
1186             static short pdl__edit_align_full_vtable_parflags[] = {
1187             0,
1188             0,
1189             0,
1190             0,
1191             0,
1192             0,
1193             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE,
1194             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
1195             };
1196             static pdl_datatypes pdl__edit_align_full_vtable_partypes[] = { -1, -1, -1, -1, -1, -1, -1, PDL_B };
1197             static PDL_Indx pdl__edit_align_full_vtable_realdims_starts[] = { 0, 1, 2, 4, 6, 8, 10, 12 };
1198             static PDL_Indx pdl__edit_align_full_vtable_realdims_ind_ids[] = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 };
1199             static char *pdl__edit_align_full_vtable_indnames[] = { "M1","N1" };
1200             pdl_transvtable pdl__edit_align_full_vtable = {
1201             PDL_TRANS_DO_BROADCAST, 0, pdl__edit_align_full_vtable_gentypes, 6, 8, NULL /*CORE21*/,
1202             pdl__edit_align_full_vtable_realdims, pdl__edit_align_full_vtable_parnames,
1203             pdl__edit_align_full_vtable_parflags, pdl__edit_align_full_vtable_partypes,
1204             pdl__edit_align_full_vtable_realdims_starts, pdl__edit_align_full_vtable_realdims_ind_ids, 14,
1205             2, pdl__edit_align_full_vtable_indnames,
1206             NULL, pdl__edit_align_full_readdata, NULL,
1207             NULL,
1208             0,"PDL::EditDistance::_edit_align_full"
1209             };
1210              
1211              
1212 2           pdl_error pdl_run__edit_align_full(pdl *a1,pdl *b1,pdl *costsMatch,pdl *costsIns,pdl *costsDel,pdl *costsSubst,pdl *dist,pdl *align) {
1213 2           pdl_error PDL_err = {0, NULL, 0};
1214 2 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
1215 2           pdl_trans *__privtrans = PDL->create_trans(&pdl__edit_align_full_vtable);
1216 2 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
1217 2           __privtrans->pdls[0] = a1;
1218 2           __privtrans->pdls[1] = b1;
1219 2           __privtrans->pdls[2] = costsMatch;
1220 2           __privtrans->pdls[3] = costsIns;
1221 2           __privtrans->pdls[4] = costsDel;
1222 2           __privtrans->pdls[5] = costsSubst;
1223 2           __privtrans->pdls[6] = dist;
1224 2           __privtrans->pdls[7] = align;
1225 2 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
1226 2 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
1227 2           return PDL_err;
1228             }
1229              
1230             #line 1857 "lib/PDL/PP.pm"
1231             pdl_error pdl__edit_distance_static_readdata(pdl_trans *__privtrans) {
1232             pdl_error PDL_err = {0, NULL, 0};
1233             #line 1234 "EditDistance.xs"
1234 2 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in _edit_distance_static:" "broadcast.incs NULL");
1235             /* broadcastloop declarations */
1236             int __brcloopval;
1237             register PDL_Indx __tind0,__tind1; /* counters along dim */
1238 2           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
1239             /* dims here are how many steps along those dims */
1240 2           register PDL_Indx __tinc0_a1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
1241 2           register PDL_Indx __tinc0_b1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
1242 2           register PDL_Indx __tinc0_costMatch = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
1243 2           register PDL_Indx __tinc0_costIns = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,0);
1244 2           register PDL_Indx __tinc0_costDel = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,0);
1245 2           register PDL_Indx __tinc0_costSubst = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,5,0);
1246 2           register PDL_Indx __tinc0_dist = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,6,0);
1247 2           register PDL_Indx __tinc1_a1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
1248 2           register PDL_Indx __tinc1_b1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
1249 2           register PDL_Indx __tinc1_costMatch = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
1250 2           register PDL_Indx __tinc1_costIns = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,1);
1251 2           register PDL_Indx __tinc1_costDel = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,1);
1252 2           register PDL_Indx __tinc1_costSubst = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,5,1);
1253 2           register PDL_Indx __tinc1_dist = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,6,1);
1254             #define PDL_BROADCASTLOOP_START__edit_distance_static_readdata PDL_BROADCASTLOOP_START( \
1255             readdata, \
1256             __privtrans->broadcast, \
1257             __privtrans->vtable, \
1258             a1_datap += __offsp[0]; \
1259             b1_datap += __offsp[1]; \
1260             costMatch_datap += __offsp[2]; \
1261             costIns_datap += __offsp[3]; \
1262             costDel_datap += __offsp[4]; \
1263             costSubst_datap += __offsp[5]; \
1264             dist_datap += __offsp[6]; \
1265             , \
1266             ( ,a1_datap += __tinc1_a1 - __tinc0_a1 * __tdims0 \
1267             ,b1_datap += __tinc1_b1 - __tinc0_b1 * __tdims0 \
1268             ,costMatch_datap += __tinc1_costMatch - __tinc0_costMatch * __tdims0 \
1269             ,costIns_datap += __tinc1_costIns - __tinc0_costIns * __tdims0 \
1270             ,costDel_datap += __tinc1_costDel - __tinc0_costDel * __tdims0 \
1271             ,costSubst_datap += __tinc1_costSubst - __tinc0_costSubst * __tdims0 \
1272             ,dist_datap += __tinc1_dist - __tinc0_dist * __tdims0 \
1273             ), \
1274             ( ,a1_datap += __tinc0_a1 \
1275             ,b1_datap += __tinc0_b1 \
1276             ,costMatch_datap += __tinc0_costMatch \
1277             ,costIns_datap += __tinc0_costIns \
1278             ,costDel_datap += __tinc0_costDel \
1279             ,costSubst_datap += __tinc0_costSubst \
1280             ,dist_datap += __tinc0_dist \
1281             ) \
1282             )
1283             #define PDL_BROADCASTLOOP_END__edit_distance_static_readdata PDL_BROADCASTLOOP_END( \
1284             __privtrans->broadcast, \
1285             a1_datap -= __tinc1_a1 * __tdims1 + __offsp[0]; \
1286             b1_datap -= __tinc1_b1 * __tdims1 + __offsp[1]; \
1287             costMatch_datap -= __tinc1_costMatch * __tdims1 + __offsp[2]; \
1288             costIns_datap -= __tinc1_costIns * __tdims1 + __offsp[3]; \
1289             costDel_datap -= __tinc1_costDel * __tdims1 + __offsp[4]; \
1290             costSubst_datap -= __tinc1_costSubst * __tdims1 + __offsp[5]; \
1291             dist_datap -= __tinc1_dist * __tdims1 + __offsp[6]; \
1292             )
1293 2           register PDL_Indx __inc_a1_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a1_N1;
1294 2           register PDL_Indx __inc_b1_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_b1_M1;
1295 2           register PDL_Indx __inc_dist_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,6,0)]; (void)__inc_dist_N1;register PDL_Indx __inc_dist_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,6,1)]; (void)__inc_dist_M1;
1296             #ifndef PDL_DECLARE_PARAMS__edit_distance_static_1
1297             #define PDL_DECLARE_PARAMS__edit_distance_static_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
1298             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a1, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
1299             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, b1, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP) \
1300             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costMatch, (__privtrans->pdls[2]), 1, PDL_PPSYM_OP) \
1301             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costIns, (__privtrans->pdls[3]), 1, PDL_PPSYM_OP) \
1302             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costDel, (__privtrans->pdls[4]), 1, PDL_PPSYM_OP) \
1303             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costSubst, (__privtrans->pdls[5]), 1, PDL_PPSYM_OP) \
1304             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, dist, (__privtrans->pdls[6]), 1, PDL_PPSYM_OP)
1305             #endif
1306             #define PDL_IF_BAD(t,f) f
1307 2           switch (__privtrans->__datatype) { /* Start generic switch */
1308 0           case PDL_SB: {
1309 0 0         PDL_DECLARE_PARAMS__edit_distance_static_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1310 0 0         PDL_BROADCASTLOOP_START__edit_distance_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1311             int i,j;
1312 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1313 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; }
1314 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1315 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; }
1316 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1317 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1318 0           PDL_SByte cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1319 0           PDL_SByte cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1320 0 0         PDL_SByte cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))] + ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]
1321             ? (costMatch_datap)[0]
1322             : (costSubst_datap)[0]);
1323 0 0         if (cost_insert_1 < cost_insert_2) {
1324 0 0         if (cost_insert_1 < cost_subst) {
1325 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1326             } else {
1327 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1328             }
1329 0 0         } else if (cost_insert_2 < cost_subst) {
1330 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1331             } else {
1332 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1333             }
1334             }
1335             }
1336 0 0         }PDL_BROADCASTLOOP_END__edit_distance_static_readdata
    0          
1337 0           } break;
1338 0           case PDL_B: {
1339 0 0         PDL_DECLARE_PARAMS__edit_distance_static_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1340 0 0         PDL_BROADCASTLOOP_START__edit_distance_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1341             int i,j;
1342 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1343 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; }
1344 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1345 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; }
1346 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1347 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1348 0           PDL_Byte cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1349 0           PDL_Byte cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1350 0 0         PDL_Byte cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))] + ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]
1351 0           ? (costMatch_datap)[0]
1352 0           : (costSubst_datap)[0]);
1353 0 0         if (cost_insert_1 < cost_insert_2) {
1354 0 0         if (cost_insert_1 < cost_subst) {
1355 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1356             } else {
1357 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1358             }
1359 0 0         } else if (cost_insert_2 < cost_subst) {
1360 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1361             } else {
1362 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1363             }
1364             }
1365             }
1366 0 0         }PDL_BROADCASTLOOP_END__edit_distance_static_readdata
    0          
1367 0           } break;
1368 0           case PDL_S: {
1369 0 0         PDL_DECLARE_PARAMS__edit_distance_static_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1370 0 0         PDL_BROADCASTLOOP_START__edit_distance_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1371             int i,j;
1372 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1373 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; }
1374 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1375 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; }
1376 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1377 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1378 0           PDL_Short cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1379 0           PDL_Short cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1380 0 0         PDL_Short cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))] + ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]
1381             ? (costMatch_datap)[0]
1382             : (costSubst_datap)[0]);
1383 0 0         if (cost_insert_1 < cost_insert_2) {
1384 0 0         if (cost_insert_1 < cost_subst) {
1385 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1386             } else {
1387 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1388             }
1389 0 0         } else if (cost_insert_2 < cost_subst) {
1390 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1391             } else {
1392 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1393             }
1394             }
1395             }
1396 0 0         }PDL_BROADCASTLOOP_END__edit_distance_static_readdata
    0          
1397 0           } break;
1398 0           case PDL_US: {
1399 0 0         PDL_DECLARE_PARAMS__edit_distance_static_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1400 0 0         PDL_BROADCASTLOOP_START__edit_distance_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1401             int i,j;
1402 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1403 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; }
1404 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1405 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; }
1406 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1407 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1408 0           PDL_Ushort cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1409 0           PDL_Ushort cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1410 0 0         PDL_Ushort cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))] + ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]
1411 0           ? (costMatch_datap)[0]
1412 0           : (costSubst_datap)[0]);
1413 0 0         if (cost_insert_1 < cost_insert_2) {
1414 0 0         if (cost_insert_1 < cost_subst) {
1415 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1416             } else {
1417 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1418             }
1419 0 0         } else if (cost_insert_2 < cost_subst) {
1420 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1421             } else {
1422 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1423             }
1424             }
1425             }
1426 0 0         }PDL_BROADCASTLOOP_END__edit_distance_static_readdata
    0          
1427 0           } break;
1428 0           case PDL_L: {
1429 0 0         PDL_DECLARE_PARAMS__edit_distance_static_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1430 0 0         PDL_BROADCASTLOOP_START__edit_distance_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1431             int i,j;
1432 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1433 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; }
1434 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1435 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; }
1436 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1437 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1438 0           PDL_Long cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1439 0           PDL_Long cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1440 0           PDL_Long cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))] + ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]
1441             ? (costMatch_datap)[0]
1442 0 0         : (costSubst_datap)[0]);
1443 0 0         if (cost_insert_1 < cost_insert_2) {
1444 0 0         if (cost_insert_1 < cost_subst) {
1445 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1446             } else {
1447 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1448             }
1449 0 0         } else if (cost_insert_2 < cost_subst) {
1450 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1451             } else {
1452 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1453             }
1454             }
1455             }
1456 0 0         }PDL_BROADCASTLOOP_END__edit_distance_static_readdata
    0          
1457 0           } break;
1458 0           case PDL_UL: {
1459 0 0         PDL_DECLARE_PARAMS__edit_distance_static_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1460 0 0         PDL_BROADCASTLOOP_START__edit_distance_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1461             int i,j;
1462 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1463 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; }
1464 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1465 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; }
1466 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1467 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1468 0           PDL_ULong cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1469 0           PDL_ULong cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1470 0           PDL_ULong cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))] + ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]
1471             ? (costMatch_datap)[0]
1472 0 0         : (costSubst_datap)[0]);
1473 0 0         if (cost_insert_1 < cost_insert_2) {
1474 0 0         if (cost_insert_1 < cost_subst) {
1475 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1476             } else {
1477 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1478             }
1479 0 0         } else if (cost_insert_2 < cost_subst) {
1480 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1481             } else {
1482 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1483             }
1484             }
1485             }
1486 0 0         }PDL_BROADCASTLOOP_END__edit_distance_static_readdata
    0          
1487 0           } break;
1488 0           case PDL_IND: {
1489 0 0         PDL_DECLARE_PARAMS__edit_distance_static_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1490 0 0         PDL_BROADCASTLOOP_START__edit_distance_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1491             int i,j;
1492 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1493 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; }
1494 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1495 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; }
1496 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1497 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1498 0           PDL_Indx cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1499 0           PDL_Indx cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1500 0           PDL_Indx cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))] + ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]
1501             ? (costMatch_datap)[0]
1502 0 0         : (costSubst_datap)[0]);
1503 0 0         if (cost_insert_1 < cost_insert_2) {
1504 0 0         if (cost_insert_1 < cost_subst) {
1505 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1506             } else {
1507 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1508             }
1509 0 0         } else if (cost_insert_2 < cost_subst) {
1510 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1511             } else {
1512 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1513             }
1514             }
1515             }
1516 0 0         }PDL_BROADCASTLOOP_END__edit_distance_static_readdata
    0          
1517 0           } break;
1518 0           case PDL_ULL: {
1519 0 0         PDL_DECLARE_PARAMS__edit_distance_static_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1520 0 0         PDL_BROADCASTLOOP_START__edit_distance_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1521             int i,j;
1522 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1523 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; }
1524 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1525 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; }
1526 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1527 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1528 0           PDL_ULongLong cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1529 0           PDL_ULongLong cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1530 0           PDL_ULongLong cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))] + ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]
1531             ? (costMatch_datap)[0]
1532 0 0         : (costSubst_datap)[0]);
1533 0 0         if (cost_insert_1 < cost_insert_2) {
1534 0 0         if (cost_insert_1 < cost_subst) {
1535 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1536             } else {
1537 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1538             }
1539 0 0         } else if (cost_insert_2 < cost_subst) {
1540 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1541             } else {
1542 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1543             }
1544             }
1545             }
1546 0 0         }PDL_BROADCASTLOOP_END__edit_distance_static_readdata
    0          
1547 0           } break;
1548 0           case PDL_LL: {
1549 0 0         PDL_DECLARE_PARAMS__edit_distance_static_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1550 0 0         PDL_BROADCASTLOOP_START__edit_distance_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1551             int i,j;
1552 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1553 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; }
1554 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1555 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; }
1556 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1557 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1558 0           PDL_LongLong cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1559 0           PDL_LongLong cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1560 0           PDL_LongLong cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))] + ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]
1561             ? (costMatch_datap)[0]
1562 0 0         : (costSubst_datap)[0]);
1563 0 0         if (cost_insert_1 < cost_insert_2) {
1564 0 0         if (cost_insert_1 < cost_subst) {
1565 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1566             } else {
1567 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1568             }
1569 0 0         } else if (cost_insert_2 < cost_subst) {
1570 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1571             } else {
1572 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1573             }
1574             }
1575             }
1576 0 0         }PDL_BROADCASTLOOP_END__edit_distance_static_readdata
    0          
1577 0           } break;
1578 0           case PDL_F: {
1579 0 0         PDL_DECLARE_PARAMS__edit_distance_static_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1580 0 0         PDL_BROADCASTLOOP_START__edit_distance_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1581             int i,j;
1582 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1583 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; }
1584 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1585 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; }
1586 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1587 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1588 0           PDL_Float cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1589 0           PDL_Float cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1590 0           PDL_Float cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))] + ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]
1591             ? (costMatch_datap)[0]
1592 0 0         : (costSubst_datap)[0]);
1593 0 0         if (cost_insert_1 < cost_insert_2) {
1594 0 0         if (cost_insert_1 < cost_subst) {
1595 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1596             } else {
1597 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1598             }
1599 0 0         } else if (cost_insert_2 < cost_subst) {
1600 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1601             } else {
1602 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1603             }
1604             }
1605             }
1606 0 0         }PDL_BROADCASTLOOP_END__edit_distance_static_readdata
    0          
1607 0           } break;
1608 2           case PDL_D: {
1609 2 50         PDL_DECLARE_PARAMS__edit_distance_static_1(PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
1610 8 50         PDL_BROADCASTLOOP_START__edit_distance_static_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
1611             int i,j;
1612 12 100         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1613 10           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; }
1614 14 100         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1615 12           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; }
1616 12 100         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1617 70 100         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1618 60           PDL_Double cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1619 60           PDL_Double cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1620 120           PDL_Double cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))] + ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]
1621             ? (costMatch_datap)[0]
1622 60 100         : (costSubst_datap)[0]);
1623 60 100         if (cost_insert_1 < cost_insert_2) {
1624 20 100         if (cost_insert_1 < cost_subst) {
1625 14           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1626             } else {
1627 6           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1628             }
1629 40 100         } else if (cost_insert_2 < cost_subst) {
1630 22           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1631             } else {
1632 18           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1633             }
1634             }
1635             }
1636 2 50         }PDL_BROADCASTLOOP_END__edit_distance_static_readdata
    50          
1637 2           } break;
1638 0           case PDL_LD: {
1639 0 0         PDL_DECLARE_PARAMS__edit_distance_static_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1640 0 0         PDL_BROADCASTLOOP_START__edit_distance_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1641             int i,j;
1642 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1643 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; }
1644 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1645 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; }
1646 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1647 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1648 0           PDL_LDouble cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1649 0           PDL_LDouble cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1650 0           PDL_LDouble cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))] + ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]
1651             ? (costMatch_datap)[0]
1652 0 0         : (costSubst_datap)[0]);
1653 0 0         if (cost_insert_1 < cost_insert_2) {
1654 0 0         if (cost_insert_1 < cost_subst) {
1655 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1656             } else {
1657 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1658             }
1659 0 0         } else if (cost_insert_2 < cost_subst) {
1660 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1661             } else {
1662 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1663             }
1664             }
1665             }
1666 0 0         }PDL_BROADCASTLOOP_END__edit_distance_static_readdata
    0          
1667 0           } break;
1668 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in _edit_distance_static: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
1669             }
1670             #undef PDL_IF_BAD
1671 2           return PDL_err;
1672             }
1673              
1674             static pdl_datatypes pdl__edit_distance_static_vtable_gentypes[] = { PDL_SB, PDL_B, PDL_S, PDL_US, PDL_L, PDL_UL, PDL_IND, PDL_ULL, PDL_LL, PDL_F, PDL_D, PDL_LD, -1 };
1675             static PDL_Indx pdl__edit_distance_static_vtable_realdims[] = { 1, 1, 0, 0, 0, 0, 2 };
1676             static char *pdl__edit_distance_static_vtable_parnames[] = { "a1","b1","costMatch","costIns","costDel","costSubst","dist" };
1677             static short pdl__edit_distance_static_vtable_parflags[] = {
1678             0,
1679             0,
1680             0,
1681             0,
1682             0,
1683             0,
1684             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
1685             };
1686             static pdl_datatypes pdl__edit_distance_static_vtable_partypes[] = { -1, -1, -1, -1, -1, -1, -1 };
1687             static PDL_Indx pdl__edit_distance_static_vtable_realdims_starts[] = { 0, 1, 2, 2, 2, 2, 2 };
1688             static PDL_Indx pdl__edit_distance_static_vtable_realdims_ind_ids[] = { 1, 0, 1, 0 };
1689             static char *pdl__edit_distance_static_vtable_indnames[] = { "M1","N1" };
1690             pdl_transvtable pdl__edit_distance_static_vtable = {
1691             PDL_TRANS_DO_BROADCAST, 0, pdl__edit_distance_static_vtable_gentypes, 6, 7, NULL /*CORE21*/,
1692             pdl__edit_distance_static_vtable_realdims, pdl__edit_distance_static_vtable_parnames,
1693             pdl__edit_distance_static_vtable_parflags, pdl__edit_distance_static_vtable_partypes,
1694             pdl__edit_distance_static_vtable_realdims_starts, pdl__edit_distance_static_vtable_realdims_ind_ids, 4,
1695             2, pdl__edit_distance_static_vtable_indnames,
1696             NULL, pdl__edit_distance_static_readdata, NULL,
1697             NULL,
1698             0,"PDL::EditDistance::_edit_distance_static"
1699             };
1700              
1701              
1702 2           pdl_error pdl_run__edit_distance_static(pdl *a1,pdl *b1,pdl *costMatch,pdl *costIns,pdl *costDel,pdl *costSubst,pdl *dist) {
1703 2           pdl_error PDL_err = {0, NULL, 0};
1704 2 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
1705 2           pdl_trans *__privtrans = PDL->create_trans(&pdl__edit_distance_static_vtable);
1706 2 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
1707 2           __privtrans->pdls[0] = a1;
1708 2           __privtrans->pdls[1] = b1;
1709 2           __privtrans->pdls[2] = costMatch;
1710 2           __privtrans->pdls[3] = costIns;
1711 2           __privtrans->pdls[4] = costDel;
1712 2           __privtrans->pdls[5] = costSubst;
1713 2           __privtrans->pdls[6] = dist;
1714 2 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
1715 2 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
1716 2           return PDL_err;
1717             }
1718              
1719             #line 1857 "lib/PDL/PP.pm"
1720             pdl_error pdl__edit_align_static_readdata(pdl_trans *__privtrans) {
1721             pdl_error PDL_err = {0, NULL, 0};
1722             #line 1723 "EditDistance.xs"
1723 4 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in _edit_align_static:" "broadcast.incs NULL");
1724             /* broadcastloop declarations */
1725             int __brcloopval;
1726             register PDL_Indx __tind0,__tind1; /* counters along dim */
1727 4           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
1728             /* dims here are how many steps along those dims */
1729 4           register PDL_Indx __tinc0_a1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
1730 4           register PDL_Indx __tinc0_b1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
1731 4           register PDL_Indx __tinc0_costMatch = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
1732 4           register PDL_Indx __tinc0_costIns = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,0);
1733 4           register PDL_Indx __tinc0_costDel = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,0);
1734 4           register PDL_Indx __tinc0_costSubst = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,5,0);
1735 4           register PDL_Indx __tinc0_dist = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,6,0);
1736 4           register PDL_Indx __tinc0_align = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,7,0);
1737 4           register PDL_Indx __tinc1_a1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
1738 4           register PDL_Indx __tinc1_b1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
1739 4           register PDL_Indx __tinc1_costMatch = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
1740 4           register PDL_Indx __tinc1_costIns = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,1);
1741 4           register PDL_Indx __tinc1_costDel = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,1);
1742 4           register PDL_Indx __tinc1_costSubst = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,5,1);
1743 4           register PDL_Indx __tinc1_dist = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,6,1);
1744 4           register PDL_Indx __tinc1_align = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,7,1);
1745             #define PDL_BROADCASTLOOP_START__edit_align_static_readdata PDL_BROADCASTLOOP_START( \
1746             readdata, \
1747             __privtrans->broadcast, \
1748             __privtrans->vtable, \
1749             a1_datap += __offsp[0]; \
1750             b1_datap += __offsp[1]; \
1751             costMatch_datap += __offsp[2]; \
1752             costIns_datap += __offsp[3]; \
1753             costDel_datap += __offsp[4]; \
1754             costSubst_datap += __offsp[5]; \
1755             dist_datap += __offsp[6]; \
1756             align_datap += __offsp[7]; \
1757             , \
1758             ( ,a1_datap += __tinc1_a1 - __tinc0_a1 * __tdims0 \
1759             ,b1_datap += __tinc1_b1 - __tinc0_b1 * __tdims0 \
1760             ,costMatch_datap += __tinc1_costMatch - __tinc0_costMatch * __tdims0 \
1761             ,costIns_datap += __tinc1_costIns - __tinc0_costIns * __tdims0 \
1762             ,costDel_datap += __tinc1_costDel - __tinc0_costDel * __tdims0 \
1763             ,costSubst_datap += __tinc1_costSubst - __tinc0_costSubst * __tdims0 \
1764             ,dist_datap += __tinc1_dist - __tinc0_dist * __tdims0 \
1765             ,align_datap += __tinc1_align - __tinc0_align * __tdims0 \
1766             ), \
1767             ( ,a1_datap += __tinc0_a1 \
1768             ,b1_datap += __tinc0_b1 \
1769             ,costMatch_datap += __tinc0_costMatch \
1770             ,costIns_datap += __tinc0_costIns \
1771             ,costDel_datap += __tinc0_costDel \
1772             ,costSubst_datap += __tinc0_costSubst \
1773             ,dist_datap += __tinc0_dist \
1774             ,align_datap += __tinc0_align \
1775             ) \
1776             )
1777             #define PDL_BROADCASTLOOP_END__edit_align_static_readdata PDL_BROADCASTLOOP_END( \
1778             __privtrans->broadcast, \
1779             a1_datap -= __tinc1_a1 * __tdims1 + __offsp[0]; \
1780             b1_datap -= __tinc1_b1 * __tdims1 + __offsp[1]; \
1781             costMatch_datap -= __tinc1_costMatch * __tdims1 + __offsp[2]; \
1782             costIns_datap -= __tinc1_costIns * __tdims1 + __offsp[3]; \
1783             costDel_datap -= __tinc1_costDel * __tdims1 + __offsp[4]; \
1784             costSubst_datap -= __tinc1_costSubst * __tdims1 + __offsp[5]; \
1785             dist_datap -= __tinc1_dist * __tdims1 + __offsp[6]; \
1786             align_datap -= __tinc1_align * __tdims1 + __offsp[7]; \
1787             )
1788 4           register PDL_Indx __inc_a1_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a1_N1;
1789 4           register PDL_Indx __inc_align_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,7,0)]; (void)__inc_align_N1;register PDL_Indx __inc_align_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,7,1)]; (void)__inc_align_M1;
1790 4           register PDL_Indx __inc_b1_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_b1_M1;
1791 4           register PDL_Indx __inc_dist_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,6,0)]; (void)__inc_dist_N1;register PDL_Indx __inc_dist_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,6,1)]; (void)__inc_dist_M1;
1792             #ifndef PDL_DECLARE_PARAMS__edit_align_static_1
1793             #define PDL_DECLARE_PARAMS__edit_align_static_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_align,PDL_PPSYM_PARAM_align) \
1794             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a1, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
1795             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, b1, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP) \
1796             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costMatch, (__privtrans->pdls[2]), 1, PDL_PPSYM_OP) \
1797             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costIns, (__privtrans->pdls[3]), 1, PDL_PPSYM_OP) \
1798             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costDel, (__privtrans->pdls[4]), 1, PDL_PPSYM_OP) \
1799             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, costSubst, (__privtrans->pdls[5]), 1, PDL_PPSYM_OP) \
1800             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, dist, (__privtrans->pdls[6]), 1, PDL_PPSYM_OP) \
1801             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_align, align, (__privtrans->pdls[7]), 1, PDL_PPSYM_PARAM_align)
1802             #endif
1803             #define PDL_IF_BAD(t,f) f
1804 4           switch (__privtrans->__datatype) { /* Start generic switch */
1805 0           case PDL_SB: {
1806 0 0         PDL_DECLARE_PARAMS__edit_align_static_1(PDL_SByte,A,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1807 0 0         PDL_BROADCASTLOOP_START__edit_align_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1808             int i,j;
1809 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1810 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
1811             }
1812 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1813 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1814             }
1815 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1816 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1817 0           PDL_SByte cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1818 0           PDL_SByte cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1819 0           PDL_SByte cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
1820             char subst_op;
1821 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
1822 0           cost_subst += (costMatch_datap)[0];
1823 0           subst_op = ALIGN_OP_MATCH;
1824             } else {
1825 0           cost_subst += (costSubst_datap)[0];
1826 0           subst_op = ALIGN_OP_SUBSTITUTE;
1827             }
1828 0 0         if (cost_insert_1 < cost_insert_2) {
1829 0 0         if (cost_insert_1 < cost_subst) {
1830 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1831 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
1832             } else {
1833 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1834 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1835             }
1836 0 0         } else if (cost_insert_2 < cost_subst) {
1837 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1838 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1839             } else {
1840 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1841 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1842             }
1843             }
1844             }
1845 0 0         }PDL_BROADCASTLOOP_END__edit_align_static_readdata
    0          
1846 0           } break;
1847 4           case PDL_B: {
1848 4 50         PDL_DECLARE_PARAMS__edit_align_static_1(PDL_Byte,B,PDL_Byte,B)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
1849 16 50         PDL_BROADCASTLOOP_START__edit_align_static_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
1850             int i,j;
1851 24 100         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1852 20           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
1853             }
1854 28 100         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1855 24           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1856             }
1857 24 100         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1858 140 100         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1859 120           PDL_Byte cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1860 120           PDL_Byte cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1861 120           PDL_Byte cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
1862             char subst_op;
1863 120 100         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
1864 16           cost_subst += (costMatch_datap)[0];
1865 16           subst_op = ALIGN_OP_MATCH;
1866             } else {
1867 104           cost_subst += (costSubst_datap)[0];
1868 104           subst_op = ALIGN_OP_SUBSTITUTE;
1869             }
1870 120 100         if (cost_insert_1 < cost_insert_2) {
1871 40 100         if (cost_insert_1 < cost_subst) {
1872 28           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1873 28           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
1874             } else {
1875 12           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1876 12           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1877             }
1878 80 100         } else if (cost_insert_2 < cost_subst) {
1879 44           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1880 44           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1881             } else {
1882 36           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1883 36           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1884             }
1885             }
1886             }
1887 4 50         }PDL_BROADCASTLOOP_END__edit_align_static_readdata
    50          
1888 4           } break;
1889 0           case PDL_S: {
1890 0 0         PDL_DECLARE_PARAMS__edit_align_static_1(PDL_Short,S,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1891 0 0         PDL_BROADCASTLOOP_START__edit_align_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1892             int i,j;
1893 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1894 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
1895             }
1896 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1897 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1898             }
1899 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1900 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1901 0           PDL_Short cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1902 0           PDL_Short cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1903 0           PDL_Short cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
1904             char subst_op;
1905 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
1906 0           cost_subst += (costMatch_datap)[0];
1907 0           subst_op = ALIGN_OP_MATCH;
1908             } else {
1909 0           cost_subst += (costSubst_datap)[0];
1910 0           subst_op = ALIGN_OP_SUBSTITUTE;
1911             }
1912 0 0         if (cost_insert_1 < cost_insert_2) {
1913 0 0         if (cost_insert_1 < cost_subst) {
1914 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1915 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
1916             } else {
1917 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1918 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1919             }
1920 0 0         } else if (cost_insert_2 < cost_subst) {
1921 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1922 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1923             } else {
1924 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1925 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1926             }
1927             }
1928             }
1929 0 0         }PDL_BROADCASTLOOP_END__edit_align_static_readdata
    0          
1930 0           } break;
1931 0           case PDL_US: {
1932 0 0         PDL_DECLARE_PARAMS__edit_align_static_1(PDL_Ushort,U,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1933 0 0         PDL_BROADCASTLOOP_START__edit_align_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1934             int i,j;
1935 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1936 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
1937             }
1938 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1939 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1940             }
1941 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1942 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1943 0           PDL_Ushort cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1944 0           PDL_Ushort cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1945 0           PDL_Ushort cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
1946             char subst_op;
1947 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
1948 0           cost_subst += (costMatch_datap)[0];
1949 0           subst_op = ALIGN_OP_MATCH;
1950             } else {
1951 0           cost_subst += (costSubst_datap)[0];
1952 0           subst_op = ALIGN_OP_SUBSTITUTE;
1953             }
1954 0 0         if (cost_insert_1 < cost_insert_2) {
1955 0 0         if (cost_insert_1 < cost_subst) {
1956 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1957 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
1958             } else {
1959 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1960 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1961             }
1962 0 0         } else if (cost_insert_2 < cost_subst) {
1963 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
1964 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1965             } else {
1966 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
1967 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
1968             }
1969             }
1970             }
1971 0 0         }PDL_BROADCASTLOOP_END__edit_align_static_readdata
    0          
1972 0           } break;
1973 0           case PDL_L: {
1974 0 0         PDL_DECLARE_PARAMS__edit_align_static_1(PDL_Long,L,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1975 0 0         PDL_BROADCASTLOOP_START__edit_align_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1976             int i,j;
1977 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1978 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
1979             }
1980 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1981 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
1982             }
1983 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
1984 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
1985 0           PDL_Long cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
1986 0           PDL_Long cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
1987 0           PDL_Long cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
1988             char subst_op;
1989 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
1990 0           cost_subst += (costMatch_datap)[0];
1991 0           subst_op = ALIGN_OP_MATCH;
1992             } else {
1993 0           cost_subst += (costSubst_datap)[0];
1994 0           subst_op = ALIGN_OP_SUBSTITUTE;
1995             }
1996 0 0         if (cost_insert_1 < cost_insert_2) {
1997 0 0         if (cost_insert_1 < cost_subst) {
1998 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
1999 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
2000             } else {
2001 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2002 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2003             }
2004 0 0         } else if (cost_insert_2 < cost_subst) {
2005 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
2006 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2007             } else {
2008 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2009 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2010             }
2011             }
2012             }
2013 0 0         }PDL_BROADCASTLOOP_END__edit_align_static_readdata
    0          
2014 0           } break;
2015 0           case PDL_UL: {
2016 0 0         PDL_DECLARE_PARAMS__edit_align_static_1(PDL_ULong,K,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2017 0 0         PDL_BROADCASTLOOP_START__edit_align_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
2018             int i,j;
2019 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
2020 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
2021             }
2022 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
2023 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2024             }
2025 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
2026 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
2027 0           PDL_ULong cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
2028 0           PDL_ULong cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
2029 0           PDL_ULong cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
2030             char subst_op;
2031 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
2032 0           cost_subst += (costMatch_datap)[0];
2033 0           subst_op = ALIGN_OP_MATCH;
2034             } else {
2035 0           cost_subst += (costSubst_datap)[0];
2036 0           subst_op = ALIGN_OP_SUBSTITUTE;
2037             }
2038 0 0         if (cost_insert_1 < cost_insert_2) {
2039 0 0         if (cost_insert_1 < cost_subst) {
2040 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
2041 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
2042             } else {
2043 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2044 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2045             }
2046 0 0         } else if (cost_insert_2 < cost_subst) {
2047 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
2048 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2049             } else {
2050 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2051 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2052             }
2053             }
2054             }
2055 0 0         }PDL_BROADCASTLOOP_END__edit_align_static_readdata
    0          
2056 0           } break;
2057 0           case PDL_IND: {
2058 0 0         PDL_DECLARE_PARAMS__edit_align_static_1(PDL_Indx,N,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2059 0 0         PDL_BROADCASTLOOP_START__edit_align_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
2060             int i,j;
2061 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
2062 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
2063             }
2064 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
2065 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2066             }
2067 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
2068 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
2069 0           PDL_Indx cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
2070 0           PDL_Indx cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
2071 0           PDL_Indx cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
2072             char subst_op;
2073 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
2074 0           cost_subst += (costMatch_datap)[0];
2075 0           subst_op = ALIGN_OP_MATCH;
2076             } else {
2077 0           cost_subst += (costSubst_datap)[0];
2078 0           subst_op = ALIGN_OP_SUBSTITUTE;
2079             }
2080 0 0         if (cost_insert_1 < cost_insert_2) {
2081 0 0         if (cost_insert_1 < cost_subst) {
2082 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
2083 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
2084             } else {
2085 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2086 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2087             }
2088 0 0         } else if (cost_insert_2 < cost_subst) {
2089 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
2090 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2091             } else {
2092 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2093 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2094             }
2095             }
2096             }
2097 0 0         }PDL_BROADCASTLOOP_END__edit_align_static_readdata
    0          
2098 0           } break;
2099 0           case PDL_ULL: {
2100 0 0         PDL_DECLARE_PARAMS__edit_align_static_1(PDL_ULongLong,P,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2101 0 0         PDL_BROADCASTLOOP_START__edit_align_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
2102             int i,j;
2103 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
2104 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
2105             }
2106 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
2107 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2108             }
2109 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
2110 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
2111 0           PDL_ULongLong cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
2112 0           PDL_ULongLong cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
2113 0           PDL_ULongLong cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
2114             char subst_op;
2115 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
2116 0           cost_subst += (costMatch_datap)[0];
2117 0           subst_op = ALIGN_OP_MATCH;
2118             } else {
2119 0           cost_subst += (costSubst_datap)[0];
2120 0           subst_op = ALIGN_OP_SUBSTITUTE;
2121             }
2122 0 0         if (cost_insert_1 < cost_insert_2) {
2123 0 0         if (cost_insert_1 < cost_subst) {
2124 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
2125 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
2126             } else {
2127 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2128 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2129             }
2130 0 0         } else if (cost_insert_2 < cost_subst) {
2131 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
2132 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2133             } else {
2134 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2135 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2136             }
2137             }
2138             }
2139 0 0         }PDL_BROADCASTLOOP_END__edit_align_static_readdata
    0          
2140 0           } break;
2141 0           case PDL_LL: {
2142 0 0         PDL_DECLARE_PARAMS__edit_align_static_1(PDL_LongLong,Q,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2143 0 0         PDL_BROADCASTLOOP_START__edit_align_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
2144             int i,j;
2145 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
2146 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
2147             }
2148 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
2149 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2150             }
2151 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
2152 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
2153 0           PDL_LongLong cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
2154 0           PDL_LongLong cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
2155 0           PDL_LongLong cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
2156             char subst_op;
2157 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
2158 0           cost_subst += (costMatch_datap)[0];
2159 0           subst_op = ALIGN_OP_MATCH;
2160             } else {
2161 0           cost_subst += (costSubst_datap)[0];
2162 0           subst_op = ALIGN_OP_SUBSTITUTE;
2163             }
2164 0 0         if (cost_insert_1 < cost_insert_2) {
2165 0 0         if (cost_insert_1 < cost_subst) {
2166 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
2167 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
2168             } else {
2169 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2170 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2171             }
2172 0 0         } else if (cost_insert_2 < cost_subst) {
2173 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
2174 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2175             } else {
2176 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2177 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2178             }
2179             }
2180             }
2181 0 0         }PDL_BROADCASTLOOP_END__edit_align_static_readdata
    0          
2182 0           } break;
2183 0           case PDL_F: {
2184 0 0         PDL_DECLARE_PARAMS__edit_align_static_1(PDL_Float,F,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2185 0 0         PDL_BROADCASTLOOP_START__edit_align_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
2186             int i,j;
2187 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
2188 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
2189             }
2190 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
2191 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2192             }
2193 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
2194 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
2195 0           PDL_Float cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
2196 0           PDL_Float cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
2197 0           PDL_Float cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
2198             char subst_op;
2199 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
2200 0           cost_subst += (costMatch_datap)[0];
2201 0           subst_op = ALIGN_OP_MATCH;
2202             } else {
2203 0           cost_subst += (costSubst_datap)[0];
2204 0           subst_op = ALIGN_OP_SUBSTITUTE;
2205             }
2206 0 0         if (cost_insert_1 < cost_insert_2) {
2207 0 0         if (cost_insert_1 < cost_subst) {
2208 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
2209 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
2210             } else {
2211 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2212 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2213             }
2214 0 0         } else if (cost_insert_2 < cost_subst) {
2215 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
2216 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2217             } else {
2218 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2219 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2220             }
2221             }
2222             }
2223 0 0         }PDL_BROADCASTLOOP_END__edit_align_static_readdata
    0          
2224 0           } break;
2225 0           case PDL_D: {
2226 0 0         PDL_DECLARE_PARAMS__edit_align_static_1(PDL_Double,D,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2227 0 0         PDL_BROADCASTLOOP_START__edit_align_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
2228             int i,j;
2229 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
2230 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
2231             }
2232 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
2233 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2234             }
2235 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
2236 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
2237 0           PDL_Double cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
2238 0           PDL_Double cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
2239 0           PDL_Double cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
2240             char subst_op;
2241 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
2242 0           cost_subst += (costMatch_datap)[0];
2243 0           subst_op = ALIGN_OP_MATCH;
2244             } else {
2245 0           cost_subst += (costSubst_datap)[0];
2246 0           subst_op = ALIGN_OP_SUBSTITUTE;
2247             }
2248 0 0         if (cost_insert_1 < cost_insert_2) {
2249 0 0         if (cost_insert_1 < cost_subst) {
2250 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
2251 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
2252             } else {
2253 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2254 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2255             }
2256 0 0         } else if (cost_insert_2 < cost_subst) {
2257 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
2258 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2259             } else {
2260 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2261 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2262             }
2263             }
2264             }
2265 0 0         }PDL_BROADCASTLOOP_END__edit_align_static_readdata
    0          
2266 0           } break;
2267 0           case PDL_LD: {
2268 0 0         PDL_DECLARE_PARAMS__edit_align_static_1(PDL_LDouble,E,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2269 0 0         PDL_BROADCASTLOOP_START__edit_align_static_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
2270             int i,j;
2271 0 0         (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(0))] = (costMatch_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(0))] = ALIGN_OP_MATCH; for (i=1; i < __privtrans->ind_sizes[1]; i++) {
2272 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(0))] = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(0))] + (costDel_datap)[0]; (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(0))] = ALIGN_OP_INSERT1;
2273             }
2274 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
2275 0           (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j))] = (dist_datap)[0+(__inc_dist_N1*(0))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0]; (align_datap)[0+(__inc_align_N1*(0))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2276             }
2277 0 0         for (i=1; i < __privtrans->ind_sizes[1]; i++) {
2278 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) {
2279 0           PDL_LDouble cost_insert_1 = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j))] + (costDel_datap)[0];
2280 0           PDL_LDouble cost_insert_2 = (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j-1))] + (costIns_datap)[0];
2281 0           PDL_LDouble cost_subst = (dist_datap)[0+(__inc_dist_N1*(i-1))+(__inc_dist_M1*(j-1))];
2282             char subst_op;
2283 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
2284 0           cost_subst += (costMatch_datap)[0];
2285 0           subst_op = ALIGN_OP_MATCH;
2286             } else {
2287 0           cost_subst += (costSubst_datap)[0];
2288 0           subst_op = ALIGN_OP_SUBSTITUTE;
2289             }
2290 0 0         if (cost_insert_1 < cost_insert_2) {
2291 0 0         if (cost_insert_1 < cost_subst) {
2292 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_1;
2293 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT1;
2294             } else {
2295 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2296 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2297             }
2298 0 0         } else if (cost_insert_2 < cost_subst) {
2299 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_insert_2;
2300 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = ALIGN_OP_INSERT2;
2301             } else {
2302 0           (dist_datap)[0+(__inc_dist_N1*(i))+(__inc_dist_M1*(j))] = cost_subst;
2303 0           (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))] = subst_op;
2304             }
2305             }
2306             }
2307 0 0         }PDL_BROADCASTLOOP_END__edit_align_static_readdata
    0          
2308 0           } break;
2309 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in _edit_align_static: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
2310             }
2311             #undef PDL_IF_BAD
2312 4           return PDL_err;
2313             }
2314              
2315             static pdl_datatypes pdl__edit_align_static_vtable_gentypes[] = { PDL_SB, PDL_B, PDL_S, PDL_US, PDL_L, PDL_UL, PDL_IND, PDL_ULL, PDL_LL, PDL_F, PDL_D, PDL_LD, -1 };
2316             static PDL_Indx pdl__edit_align_static_vtable_realdims[] = { 1, 1, 0, 0, 0, 0, 2, 2 };
2317             static char *pdl__edit_align_static_vtable_parnames[] = { "a1","b1","costMatch","costIns","costDel","costSubst","dist","align" };
2318             static short pdl__edit_align_static_vtable_parflags[] = {
2319             0,
2320             0,
2321             0,
2322             0,
2323             0,
2324             0,
2325             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE,
2326             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
2327             };
2328             static pdl_datatypes pdl__edit_align_static_vtable_partypes[] = { -1, -1, -1, -1, -1, -1, -1, PDL_B };
2329             static PDL_Indx pdl__edit_align_static_vtable_realdims_starts[] = { 0, 1, 2, 2, 2, 2, 2, 4 };
2330             static PDL_Indx pdl__edit_align_static_vtable_realdims_ind_ids[] = { 1, 0, 1, 0, 1, 0 };
2331             static char *pdl__edit_align_static_vtable_indnames[] = { "M1","N1" };
2332             pdl_transvtable pdl__edit_align_static_vtable = {
2333             PDL_TRANS_DO_BROADCAST, 0, pdl__edit_align_static_vtable_gentypes, 6, 8, NULL /*CORE21*/,
2334             pdl__edit_align_static_vtable_realdims, pdl__edit_align_static_vtable_parnames,
2335             pdl__edit_align_static_vtable_parflags, pdl__edit_align_static_vtable_partypes,
2336             pdl__edit_align_static_vtable_realdims_starts, pdl__edit_align_static_vtable_realdims_ind_ids, 6,
2337             2, pdl__edit_align_static_vtable_indnames,
2338             NULL, pdl__edit_align_static_readdata, NULL,
2339             NULL,
2340             0,"PDL::EditDistance::_edit_align_static"
2341             };
2342              
2343              
2344 4           pdl_error pdl_run__edit_align_static(pdl *a1,pdl *b1,pdl *costMatch,pdl *costIns,pdl *costDel,pdl *costSubst,pdl *dist,pdl *align) {
2345 4           pdl_error PDL_err = {0, NULL, 0};
2346 4 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
2347 4           pdl_trans *__privtrans = PDL->create_trans(&pdl__edit_align_static_vtable);
2348 4 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
2349 4           __privtrans->pdls[0] = a1;
2350 4           __privtrans->pdls[1] = b1;
2351 4           __privtrans->pdls[2] = costMatch;
2352 4           __privtrans->pdls[3] = costIns;
2353 4           __privtrans->pdls[4] = costDel;
2354 4           __privtrans->pdls[5] = costSubst;
2355 4           __privtrans->pdls[6] = dist;
2356 4           __privtrans->pdls[7] = align;
2357 4 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
2358 4 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
2359 4           return PDL_err;
2360             }
2361              
2362             #line 1857 "lib/PDL/PP.pm"
2363             pdl_error pdl_align_op_insert1_readdata(pdl_trans *__privtrans) {
2364             pdl_error PDL_err = {0, NULL, 0};
2365             #line 2366 "EditDistance.xs"
2366 0 0         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in align_op_insert1:" "broadcast.incs NULL");
2367             /* broadcastloop declarations */
2368             int __brcloopval;
2369             register PDL_Indx __tind0,__tind1; /* counters along dim */
2370 0           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
2371             /* dims here are how many steps along those dims */
2372 0           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
2373 0           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
2374             #define PDL_BROADCASTLOOP_START_align_op_insert1_readdata PDL_BROADCASTLOOP_START( \
2375             readdata, \
2376             __privtrans->broadcast, \
2377             __privtrans->vtable, \
2378             a_datap += __offsp[0]; \
2379             , \
2380             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
2381             ), \
2382             ( ,a_datap += __tinc0_a \
2383             ) \
2384             )
2385             #define PDL_BROADCASTLOOP_END_align_op_insert1_readdata PDL_BROADCASTLOOP_END( \
2386             __privtrans->broadcast, \
2387             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
2388             )
2389             #ifndef PDL_DECLARE_PARAMS_align_op_insert1_1
2390             #define PDL_DECLARE_PARAMS_align_op_insert1_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
2391             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP)
2392             #endif
2393             #define PDL_IF_BAD(t,f) f
2394 0           switch (__privtrans->__datatype) { /* Start generic switch */
2395 0           case PDL_SB: {
2396 0 0         PDL_DECLARE_PARAMS_align_op_insert1_1(PDL_SByte,A)
    0          
    0          
2397 0 0         PDL_BROADCASTLOOP_START_align_op_insert1_readdata {(a_datap)[0] = ALIGN_OP_INSERT1;}PDL_BROADCASTLOOP_END_align_op_insert1_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2398 0           } break;
2399 0           case PDL_B: {
2400 0 0         PDL_DECLARE_PARAMS_align_op_insert1_1(PDL_Byte,B)
    0          
    0          
2401 0 0         PDL_BROADCASTLOOP_START_align_op_insert1_readdata {(a_datap)[0] = ALIGN_OP_INSERT1;}PDL_BROADCASTLOOP_END_align_op_insert1_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2402 0           } break;
2403 0           case PDL_S: {
2404 0 0         PDL_DECLARE_PARAMS_align_op_insert1_1(PDL_Short,S)
    0          
    0          
2405 0 0         PDL_BROADCASTLOOP_START_align_op_insert1_readdata {(a_datap)[0] = ALIGN_OP_INSERT1;}PDL_BROADCASTLOOP_END_align_op_insert1_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2406 0           } break;
2407 0           case PDL_US: {
2408 0 0         PDL_DECLARE_PARAMS_align_op_insert1_1(PDL_Ushort,U)
    0          
    0          
2409 0 0         PDL_BROADCASTLOOP_START_align_op_insert1_readdata {(a_datap)[0] = ALIGN_OP_INSERT1;}PDL_BROADCASTLOOP_END_align_op_insert1_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2410 0           } break;
2411 0           case PDL_L: {
2412 0 0         PDL_DECLARE_PARAMS_align_op_insert1_1(PDL_Long,L)
    0          
    0          
2413 0 0         PDL_BROADCASTLOOP_START_align_op_insert1_readdata {(a_datap)[0] = ALIGN_OP_INSERT1;}PDL_BROADCASTLOOP_END_align_op_insert1_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2414 0           } break;
2415 0           case PDL_UL: {
2416 0 0         PDL_DECLARE_PARAMS_align_op_insert1_1(PDL_ULong,K)
    0          
    0          
2417 0 0         PDL_BROADCASTLOOP_START_align_op_insert1_readdata {(a_datap)[0] = ALIGN_OP_INSERT1;}PDL_BROADCASTLOOP_END_align_op_insert1_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2418 0           } break;
2419 0           case PDL_IND: {
2420 0 0         PDL_DECLARE_PARAMS_align_op_insert1_1(PDL_Indx,N)
    0          
    0          
2421 0 0         PDL_BROADCASTLOOP_START_align_op_insert1_readdata {(a_datap)[0] = ALIGN_OP_INSERT1;}PDL_BROADCASTLOOP_END_align_op_insert1_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2422 0           } break;
2423 0           case PDL_ULL: {
2424 0 0         PDL_DECLARE_PARAMS_align_op_insert1_1(PDL_ULongLong,P)
    0          
    0          
2425 0 0         PDL_BROADCASTLOOP_START_align_op_insert1_readdata {(a_datap)[0] = ALIGN_OP_INSERT1;}PDL_BROADCASTLOOP_END_align_op_insert1_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2426 0           } break;
2427 0           case PDL_LL: {
2428 0 0         PDL_DECLARE_PARAMS_align_op_insert1_1(PDL_LongLong,Q)
    0          
    0          
2429 0 0         PDL_BROADCASTLOOP_START_align_op_insert1_readdata {(a_datap)[0] = ALIGN_OP_INSERT1;}PDL_BROADCASTLOOP_END_align_op_insert1_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2430 0           } break;
2431 0           case PDL_F: {
2432 0 0         PDL_DECLARE_PARAMS_align_op_insert1_1(PDL_Float,F)
    0          
    0          
2433 0 0         PDL_BROADCASTLOOP_START_align_op_insert1_readdata {(a_datap)[0] = ALIGN_OP_INSERT1;}PDL_BROADCASTLOOP_END_align_op_insert1_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2434 0           } break;
2435 0           case PDL_D: {
2436 0 0         PDL_DECLARE_PARAMS_align_op_insert1_1(PDL_Double,D)
    0          
    0          
2437 0 0         PDL_BROADCASTLOOP_START_align_op_insert1_readdata {(a_datap)[0] = ALIGN_OP_INSERT1;}PDL_BROADCASTLOOP_END_align_op_insert1_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2438 0           } break;
2439 0           case PDL_LD: {
2440 0 0         PDL_DECLARE_PARAMS_align_op_insert1_1(PDL_LDouble,E)
    0          
    0          
2441 0 0         PDL_BROADCASTLOOP_START_align_op_insert1_readdata {(a_datap)[0] = ALIGN_OP_INSERT1;}PDL_BROADCASTLOOP_END_align_op_insert1_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2442 0           } break;
2443 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in align_op_insert1: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
2444             }
2445             #undef PDL_IF_BAD
2446 0           return PDL_err;
2447             }
2448              
2449             static pdl_datatypes pdl_align_op_insert1_vtable_gentypes[] = { PDL_SB, PDL_B, PDL_S, PDL_US, PDL_L, PDL_UL, PDL_IND, PDL_ULL, PDL_LL, PDL_F, PDL_D, PDL_LD, -1 };
2450             static PDL_Indx pdl_align_op_insert1_vtable_realdims[] = { 0 };
2451             static char *pdl_align_op_insert1_vtable_parnames[] = { "a" };
2452             static short pdl_align_op_insert1_vtable_parflags[] = {
2453             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
2454             };
2455             static pdl_datatypes pdl_align_op_insert1_vtable_partypes[] = { -1 };
2456             static PDL_Indx pdl_align_op_insert1_vtable_realdims_starts[] = { 0 };
2457             static PDL_Indx pdl_align_op_insert1_vtable_realdims_ind_ids[] = { 0 };
2458             static char *pdl_align_op_insert1_vtable_indnames[] = { "" };
2459             pdl_transvtable pdl_align_op_insert1_vtable = {
2460             PDL_TRANS_DO_BROADCAST, 0, pdl_align_op_insert1_vtable_gentypes, 0, 1, NULL /*CORE21*/,
2461             pdl_align_op_insert1_vtable_realdims, pdl_align_op_insert1_vtable_parnames,
2462             pdl_align_op_insert1_vtable_parflags, pdl_align_op_insert1_vtable_partypes,
2463             pdl_align_op_insert1_vtable_realdims_starts, pdl_align_op_insert1_vtable_realdims_ind_ids, 0,
2464             0, pdl_align_op_insert1_vtable_indnames,
2465             NULL, pdl_align_op_insert1_readdata, NULL,
2466             NULL,
2467             0,"PDL::EditDistance::align_op_insert1"
2468             };
2469              
2470              
2471 0           pdl_error pdl_run_align_op_insert1(pdl *a) {
2472 0           pdl_error PDL_err = {0, NULL, 0};
2473 0 0         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
2474 0           pdl_trans *__privtrans = PDL->create_trans(&pdl_align_op_insert1_vtable);
2475 0 0         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
2476 0           __privtrans->pdls[0] = a;
2477 0 0         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
2478 0 0         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
2479 0           return PDL_err;
2480             }
2481              
2482             #line 1857 "lib/PDL/PP.pm"
2483             pdl_error pdl_align_op_insert2_readdata(pdl_trans *__privtrans) {
2484             pdl_error PDL_err = {0, NULL, 0};
2485             #line 2486 "EditDistance.xs"
2486 0 0         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in align_op_insert2:" "broadcast.incs NULL");
2487             /* broadcastloop declarations */
2488             int __brcloopval;
2489             register PDL_Indx __tind0,__tind1; /* counters along dim */
2490 0           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
2491             /* dims here are how many steps along those dims */
2492 0           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
2493 0           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
2494             #define PDL_BROADCASTLOOP_START_align_op_insert2_readdata PDL_BROADCASTLOOP_START( \
2495             readdata, \
2496             __privtrans->broadcast, \
2497             __privtrans->vtable, \
2498             a_datap += __offsp[0]; \
2499             , \
2500             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
2501             ), \
2502             ( ,a_datap += __tinc0_a \
2503             ) \
2504             )
2505             #define PDL_BROADCASTLOOP_END_align_op_insert2_readdata PDL_BROADCASTLOOP_END( \
2506             __privtrans->broadcast, \
2507             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
2508             )
2509             #ifndef PDL_DECLARE_PARAMS_align_op_insert2_1
2510             #define PDL_DECLARE_PARAMS_align_op_insert2_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
2511             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP)
2512             #endif
2513             #define PDL_IF_BAD(t,f) f
2514 0           switch (__privtrans->__datatype) { /* Start generic switch */
2515 0           case PDL_SB: {
2516 0 0         PDL_DECLARE_PARAMS_align_op_insert2_1(PDL_SByte,A)
    0          
    0          
2517 0 0         PDL_BROADCASTLOOP_START_align_op_insert2_readdata {(a_datap)[0] = ALIGN_OP_INSERT2;}PDL_BROADCASTLOOP_END_align_op_insert2_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2518 0           } break;
2519 0           case PDL_B: {
2520 0 0         PDL_DECLARE_PARAMS_align_op_insert2_1(PDL_Byte,B)
    0          
    0          
2521 0 0         PDL_BROADCASTLOOP_START_align_op_insert2_readdata {(a_datap)[0] = ALIGN_OP_INSERT2;}PDL_BROADCASTLOOP_END_align_op_insert2_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2522 0           } break;
2523 0           case PDL_S: {
2524 0 0         PDL_DECLARE_PARAMS_align_op_insert2_1(PDL_Short,S)
    0          
    0          
2525 0 0         PDL_BROADCASTLOOP_START_align_op_insert2_readdata {(a_datap)[0] = ALIGN_OP_INSERT2;}PDL_BROADCASTLOOP_END_align_op_insert2_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2526 0           } break;
2527 0           case PDL_US: {
2528 0 0         PDL_DECLARE_PARAMS_align_op_insert2_1(PDL_Ushort,U)
    0          
    0          
2529 0 0         PDL_BROADCASTLOOP_START_align_op_insert2_readdata {(a_datap)[0] = ALIGN_OP_INSERT2;}PDL_BROADCASTLOOP_END_align_op_insert2_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2530 0           } break;
2531 0           case PDL_L: {
2532 0 0         PDL_DECLARE_PARAMS_align_op_insert2_1(PDL_Long,L)
    0          
    0          
2533 0 0         PDL_BROADCASTLOOP_START_align_op_insert2_readdata {(a_datap)[0] = ALIGN_OP_INSERT2;}PDL_BROADCASTLOOP_END_align_op_insert2_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2534 0           } break;
2535 0           case PDL_UL: {
2536 0 0         PDL_DECLARE_PARAMS_align_op_insert2_1(PDL_ULong,K)
    0          
    0          
2537 0 0         PDL_BROADCASTLOOP_START_align_op_insert2_readdata {(a_datap)[0] = ALIGN_OP_INSERT2;}PDL_BROADCASTLOOP_END_align_op_insert2_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2538 0           } break;
2539 0           case PDL_IND: {
2540 0 0         PDL_DECLARE_PARAMS_align_op_insert2_1(PDL_Indx,N)
    0          
    0          
2541 0 0         PDL_BROADCASTLOOP_START_align_op_insert2_readdata {(a_datap)[0] = ALIGN_OP_INSERT2;}PDL_BROADCASTLOOP_END_align_op_insert2_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2542 0           } break;
2543 0           case PDL_ULL: {
2544 0 0         PDL_DECLARE_PARAMS_align_op_insert2_1(PDL_ULongLong,P)
    0          
    0          
2545 0 0         PDL_BROADCASTLOOP_START_align_op_insert2_readdata {(a_datap)[0] = ALIGN_OP_INSERT2;}PDL_BROADCASTLOOP_END_align_op_insert2_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2546 0           } break;
2547 0           case PDL_LL: {
2548 0 0         PDL_DECLARE_PARAMS_align_op_insert2_1(PDL_LongLong,Q)
    0          
    0          
2549 0 0         PDL_BROADCASTLOOP_START_align_op_insert2_readdata {(a_datap)[0] = ALIGN_OP_INSERT2;}PDL_BROADCASTLOOP_END_align_op_insert2_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2550 0           } break;
2551 0           case PDL_F: {
2552 0 0         PDL_DECLARE_PARAMS_align_op_insert2_1(PDL_Float,F)
    0          
    0          
2553 0 0         PDL_BROADCASTLOOP_START_align_op_insert2_readdata {(a_datap)[0] = ALIGN_OP_INSERT2;}PDL_BROADCASTLOOP_END_align_op_insert2_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2554 0           } break;
2555 0           case PDL_D: {
2556 0 0         PDL_DECLARE_PARAMS_align_op_insert2_1(PDL_Double,D)
    0          
    0          
2557 0 0         PDL_BROADCASTLOOP_START_align_op_insert2_readdata {(a_datap)[0] = ALIGN_OP_INSERT2;}PDL_BROADCASTLOOP_END_align_op_insert2_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2558 0           } break;
2559 0           case PDL_LD: {
2560 0 0         PDL_DECLARE_PARAMS_align_op_insert2_1(PDL_LDouble,E)
    0          
    0          
2561 0 0         PDL_BROADCASTLOOP_START_align_op_insert2_readdata {(a_datap)[0] = ALIGN_OP_INSERT2;}PDL_BROADCASTLOOP_END_align_op_insert2_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2562 0           } break;
2563 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in align_op_insert2: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
2564             }
2565             #undef PDL_IF_BAD
2566 0           return PDL_err;
2567             }
2568              
2569             static pdl_datatypes pdl_align_op_insert2_vtable_gentypes[] = { PDL_SB, PDL_B, PDL_S, PDL_US, PDL_L, PDL_UL, PDL_IND, PDL_ULL, PDL_LL, PDL_F, PDL_D, PDL_LD, -1 };
2570             static PDL_Indx pdl_align_op_insert2_vtable_realdims[] = { 0 };
2571             static char *pdl_align_op_insert2_vtable_parnames[] = { "a" };
2572             static short pdl_align_op_insert2_vtable_parflags[] = {
2573             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
2574             };
2575             static pdl_datatypes pdl_align_op_insert2_vtable_partypes[] = { -1 };
2576             static PDL_Indx pdl_align_op_insert2_vtable_realdims_starts[] = { 0 };
2577             static PDL_Indx pdl_align_op_insert2_vtable_realdims_ind_ids[] = { 0 };
2578             static char *pdl_align_op_insert2_vtable_indnames[] = { "" };
2579             pdl_transvtable pdl_align_op_insert2_vtable = {
2580             PDL_TRANS_DO_BROADCAST, 0, pdl_align_op_insert2_vtable_gentypes, 0, 1, NULL /*CORE21*/,
2581             pdl_align_op_insert2_vtable_realdims, pdl_align_op_insert2_vtable_parnames,
2582             pdl_align_op_insert2_vtable_parflags, pdl_align_op_insert2_vtable_partypes,
2583             pdl_align_op_insert2_vtable_realdims_starts, pdl_align_op_insert2_vtable_realdims_ind_ids, 0,
2584             0, pdl_align_op_insert2_vtable_indnames,
2585             NULL, pdl_align_op_insert2_readdata, NULL,
2586             NULL,
2587             0,"PDL::EditDistance::align_op_insert2"
2588             };
2589              
2590              
2591 0           pdl_error pdl_run_align_op_insert2(pdl *a) {
2592 0           pdl_error PDL_err = {0, NULL, 0};
2593 0 0         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
2594 0           pdl_trans *__privtrans = PDL->create_trans(&pdl_align_op_insert2_vtable);
2595 0 0         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
2596 0           __privtrans->pdls[0] = a;
2597 0 0         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
2598 0 0         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
2599 0           return PDL_err;
2600             }
2601              
2602             #line 1857 "lib/PDL/PP.pm"
2603             pdl_error pdl_align_op_match_readdata(pdl_trans *__privtrans) {
2604             pdl_error PDL_err = {0, NULL, 0};
2605             #line 2606 "EditDistance.xs"
2606 0 0         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in align_op_match:" "broadcast.incs NULL");
2607             /* broadcastloop declarations */
2608             int __brcloopval;
2609             register PDL_Indx __tind0,__tind1; /* counters along dim */
2610 0           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
2611             /* dims here are how many steps along those dims */
2612 0           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
2613 0           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
2614             #define PDL_BROADCASTLOOP_START_align_op_match_readdata PDL_BROADCASTLOOP_START( \
2615             readdata, \
2616             __privtrans->broadcast, \
2617             __privtrans->vtable, \
2618             a_datap += __offsp[0]; \
2619             , \
2620             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
2621             ), \
2622             ( ,a_datap += __tinc0_a \
2623             ) \
2624             )
2625             #define PDL_BROADCASTLOOP_END_align_op_match_readdata PDL_BROADCASTLOOP_END( \
2626             __privtrans->broadcast, \
2627             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
2628             )
2629             #ifndef PDL_DECLARE_PARAMS_align_op_match_1
2630             #define PDL_DECLARE_PARAMS_align_op_match_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
2631             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP)
2632             #endif
2633             #define PDL_IF_BAD(t,f) f
2634 0           switch (__privtrans->__datatype) { /* Start generic switch */
2635 0           case PDL_SB: {
2636 0 0         PDL_DECLARE_PARAMS_align_op_match_1(PDL_SByte,A)
    0          
    0          
2637 0 0         PDL_BROADCASTLOOP_START_align_op_match_readdata {(a_datap)[0] = ALIGN_OP_MATCH;}PDL_BROADCASTLOOP_END_align_op_match_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2638 0           } break;
2639 0           case PDL_B: {
2640 0 0         PDL_DECLARE_PARAMS_align_op_match_1(PDL_Byte,B)
    0          
    0          
2641 0 0         PDL_BROADCASTLOOP_START_align_op_match_readdata {(a_datap)[0] = ALIGN_OP_MATCH;}PDL_BROADCASTLOOP_END_align_op_match_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2642 0           } break;
2643 0           case PDL_S: {
2644 0 0         PDL_DECLARE_PARAMS_align_op_match_1(PDL_Short,S)
    0          
    0          
2645 0 0         PDL_BROADCASTLOOP_START_align_op_match_readdata {(a_datap)[0] = ALIGN_OP_MATCH;}PDL_BROADCASTLOOP_END_align_op_match_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2646 0           } break;
2647 0           case PDL_US: {
2648 0 0         PDL_DECLARE_PARAMS_align_op_match_1(PDL_Ushort,U)
    0          
    0          
2649 0 0         PDL_BROADCASTLOOP_START_align_op_match_readdata {(a_datap)[0] = ALIGN_OP_MATCH;}PDL_BROADCASTLOOP_END_align_op_match_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2650 0           } break;
2651 0           case PDL_L: {
2652 0 0         PDL_DECLARE_PARAMS_align_op_match_1(PDL_Long,L)
    0          
    0          
2653 0 0         PDL_BROADCASTLOOP_START_align_op_match_readdata {(a_datap)[0] = ALIGN_OP_MATCH;}PDL_BROADCASTLOOP_END_align_op_match_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2654 0           } break;
2655 0           case PDL_UL: {
2656 0 0         PDL_DECLARE_PARAMS_align_op_match_1(PDL_ULong,K)
    0          
    0          
2657 0 0         PDL_BROADCASTLOOP_START_align_op_match_readdata {(a_datap)[0] = ALIGN_OP_MATCH;}PDL_BROADCASTLOOP_END_align_op_match_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2658 0           } break;
2659 0           case PDL_IND: {
2660 0 0         PDL_DECLARE_PARAMS_align_op_match_1(PDL_Indx,N)
    0          
    0          
2661 0 0         PDL_BROADCASTLOOP_START_align_op_match_readdata {(a_datap)[0] = ALIGN_OP_MATCH;}PDL_BROADCASTLOOP_END_align_op_match_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2662 0           } break;
2663 0           case PDL_ULL: {
2664 0 0         PDL_DECLARE_PARAMS_align_op_match_1(PDL_ULongLong,P)
    0          
    0          
2665 0 0         PDL_BROADCASTLOOP_START_align_op_match_readdata {(a_datap)[0] = ALIGN_OP_MATCH;}PDL_BROADCASTLOOP_END_align_op_match_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2666 0           } break;
2667 0           case PDL_LL: {
2668 0 0         PDL_DECLARE_PARAMS_align_op_match_1(PDL_LongLong,Q)
    0          
    0          
2669 0 0         PDL_BROADCASTLOOP_START_align_op_match_readdata {(a_datap)[0] = ALIGN_OP_MATCH;}PDL_BROADCASTLOOP_END_align_op_match_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2670 0           } break;
2671 0           case PDL_F: {
2672 0 0         PDL_DECLARE_PARAMS_align_op_match_1(PDL_Float,F)
    0          
    0          
2673 0 0         PDL_BROADCASTLOOP_START_align_op_match_readdata {(a_datap)[0] = ALIGN_OP_MATCH;}PDL_BROADCASTLOOP_END_align_op_match_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2674 0           } break;
2675 0           case PDL_D: {
2676 0 0         PDL_DECLARE_PARAMS_align_op_match_1(PDL_Double,D)
    0          
    0          
2677 0 0         PDL_BROADCASTLOOP_START_align_op_match_readdata {(a_datap)[0] = ALIGN_OP_MATCH;}PDL_BROADCASTLOOP_END_align_op_match_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2678 0           } break;
2679 0           case PDL_LD: {
2680 0 0         PDL_DECLARE_PARAMS_align_op_match_1(PDL_LDouble,E)
    0          
    0          
2681 0 0         PDL_BROADCASTLOOP_START_align_op_match_readdata {(a_datap)[0] = ALIGN_OP_MATCH;}PDL_BROADCASTLOOP_END_align_op_match_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2682 0           } break;
2683 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in align_op_match: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
2684             }
2685             #undef PDL_IF_BAD
2686 0           return PDL_err;
2687             }
2688              
2689             static pdl_datatypes pdl_align_op_match_vtable_gentypes[] = { PDL_SB, PDL_B, PDL_S, PDL_US, PDL_L, PDL_UL, PDL_IND, PDL_ULL, PDL_LL, PDL_F, PDL_D, PDL_LD, -1 };
2690             static PDL_Indx pdl_align_op_match_vtable_realdims[] = { 0 };
2691             static char *pdl_align_op_match_vtable_parnames[] = { "a" };
2692             static short pdl_align_op_match_vtable_parflags[] = {
2693             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
2694             };
2695             static pdl_datatypes pdl_align_op_match_vtable_partypes[] = { -1 };
2696             static PDL_Indx pdl_align_op_match_vtable_realdims_starts[] = { 0 };
2697             static PDL_Indx pdl_align_op_match_vtable_realdims_ind_ids[] = { 0 };
2698             static char *pdl_align_op_match_vtable_indnames[] = { "" };
2699             pdl_transvtable pdl_align_op_match_vtable = {
2700             PDL_TRANS_DO_BROADCAST, 0, pdl_align_op_match_vtable_gentypes, 0, 1, NULL /*CORE21*/,
2701             pdl_align_op_match_vtable_realdims, pdl_align_op_match_vtable_parnames,
2702             pdl_align_op_match_vtable_parflags, pdl_align_op_match_vtable_partypes,
2703             pdl_align_op_match_vtable_realdims_starts, pdl_align_op_match_vtable_realdims_ind_ids, 0,
2704             0, pdl_align_op_match_vtable_indnames,
2705             NULL, pdl_align_op_match_readdata, NULL,
2706             NULL,
2707             0,"PDL::EditDistance::align_op_match"
2708             };
2709              
2710              
2711 0           pdl_error pdl_run_align_op_match(pdl *a) {
2712 0           pdl_error PDL_err = {0, NULL, 0};
2713 0 0         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
2714 0           pdl_trans *__privtrans = PDL->create_trans(&pdl_align_op_match_vtable);
2715 0 0         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
2716 0           __privtrans->pdls[0] = a;
2717 0 0         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
2718 0 0         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
2719 0           return PDL_err;
2720             }
2721              
2722             #line 1857 "lib/PDL/PP.pm"
2723             pdl_error pdl_align_op_substitute_readdata(pdl_trans *__privtrans) {
2724             pdl_error PDL_err = {0, NULL, 0};
2725             #line 2726 "EditDistance.xs"
2726 0 0         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in align_op_substitute:" "broadcast.incs NULL");
2727             /* broadcastloop declarations */
2728             int __brcloopval;
2729             register PDL_Indx __tind0,__tind1; /* counters along dim */
2730 0           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
2731             /* dims here are how many steps along those dims */
2732 0           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
2733 0           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
2734             #define PDL_BROADCASTLOOP_START_align_op_substitute_readdata PDL_BROADCASTLOOP_START( \
2735             readdata, \
2736             __privtrans->broadcast, \
2737             __privtrans->vtable, \
2738             a_datap += __offsp[0]; \
2739             , \
2740             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
2741             ), \
2742             ( ,a_datap += __tinc0_a \
2743             ) \
2744             )
2745             #define PDL_BROADCASTLOOP_END_align_op_substitute_readdata PDL_BROADCASTLOOP_END( \
2746             __privtrans->broadcast, \
2747             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
2748             )
2749             #ifndef PDL_DECLARE_PARAMS_align_op_substitute_1
2750             #define PDL_DECLARE_PARAMS_align_op_substitute_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
2751             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP)
2752             #endif
2753             #define PDL_IF_BAD(t,f) f
2754 0           switch (__privtrans->__datatype) { /* Start generic switch */
2755 0           case PDL_SB: {
2756 0 0         PDL_DECLARE_PARAMS_align_op_substitute_1(PDL_SByte,A)
    0          
    0          
2757 0 0         PDL_BROADCASTLOOP_START_align_op_substitute_readdata {(a_datap)[0] = ALIGN_OP_SUBSTITUTE;}PDL_BROADCASTLOOP_END_align_op_substitute_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2758 0           } break;
2759 0           case PDL_B: {
2760 0 0         PDL_DECLARE_PARAMS_align_op_substitute_1(PDL_Byte,B)
    0          
    0          
2761 0 0         PDL_BROADCASTLOOP_START_align_op_substitute_readdata {(a_datap)[0] = ALIGN_OP_SUBSTITUTE;}PDL_BROADCASTLOOP_END_align_op_substitute_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2762 0           } break;
2763 0           case PDL_S: {
2764 0 0         PDL_DECLARE_PARAMS_align_op_substitute_1(PDL_Short,S)
    0          
    0          
2765 0 0         PDL_BROADCASTLOOP_START_align_op_substitute_readdata {(a_datap)[0] = ALIGN_OP_SUBSTITUTE;}PDL_BROADCASTLOOP_END_align_op_substitute_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2766 0           } break;
2767 0           case PDL_US: {
2768 0 0         PDL_DECLARE_PARAMS_align_op_substitute_1(PDL_Ushort,U)
    0          
    0          
2769 0 0         PDL_BROADCASTLOOP_START_align_op_substitute_readdata {(a_datap)[0] = ALIGN_OP_SUBSTITUTE;}PDL_BROADCASTLOOP_END_align_op_substitute_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2770 0           } break;
2771 0           case PDL_L: {
2772 0 0         PDL_DECLARE_PARAMS_align_op_substitute_1(PDL_Long,L)
    0          
    0          
2773 0 0         PDL_BROADCASTLOOP_START_align_op_substitute_readdata {(a_datap)[0] = ALIGN_OP_SUBSTITUTE;}PDL_BROADCASTLOOP_END_align_op_substitute_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2774 0           } break;
2775 0           case PDL_UL: {
2776 0 0         PDL_DECLARE_PARAMS_align_op_substitute_1(PDL_ULong,K)
    0          
    0          
2777 0 0         PDL_BROADCASTLOOP_START_align_op_substitute_readdata {(a_datap)[0] = ALIGN_OP_SUBSTITUTE;}PDL_BROADCASTLOOP_END_align_op_substitute_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2778 0           } break;
2779 0           case PDL_IND: {
2780 0 0         PDL_DECLARE_PARAMS_align_op_substitute_1(PDL_Indx,N)
    0          
    0          
2781 0 0         PDL_BROADCASTLOOP_START_align_op_substitute_readdata {(a_datap)[0] = ALIGN_OP_SUBSTITUTE;}PDL_BROADCASTLOOP_END_align_op_substitute_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2782 0           } break;
2783 0           case PDL_ULL: {
2784 0 0         PDL_DECLARE_PARAMS_align_op_substitute_1(PDL_ULongLong,P)
    0          
    0          
2785 0 0         PDL_BROADCASTLOOP_START_align_op_substitute_readdata {(a_datap)[0] = ALIGN_OP_SUBSTITUTE;}PDL_BROADCASTLOOP_END_align_op_substitute_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2786 0           } break;
2787 0           case PDL_LL: {
2788 0 0         PDL_DECLARE_PARAMS_align_op_substitute_1(PDL_LongLong,Q)
    0          
    0          
2789 0 0         PDL_BROADCASTLOOP_START_align_op_substitute_readdata {(a_datap)[0] = ALIGN_OP_SUBSTITUTE;}PDL_BROADCASTLOOP_END_align_op_substitute_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2790 0           } break;
2791 0           case PDL_F: {
2792 0 0         PDL_DECLARE_PARAMS_align_op_substitute_1(PDL_Float,F)
    0          
    0          
2793 0 0         PDL_BROADCASTLOOP_START_align_op_substitute_readdata {(a_datap)[0] = ALIGN_OP_SUBSTITUTE;}PDL_BROADCASTLOOP_END_align_op_substitute_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2794 0           } break;
2795 0           case PDL_D: {
2796 0 0         PDL_DECLARE_PARAMS_align_op_substitute_1(PDL_Double,D)
    0          
    0          
2797 0 0         PDL_BROADCASTLOOP_START_align_op_substitute_readdata {(a_datap)[0] = ALIGN_OP_SUBSTITUTE;}PDL_BROADCASTLOOP_END_align_op_substitute_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2798 0           } break;
2799 0           case PDL_LD: {
2800 0 0         PDL_DECLARE_PARAMS_align_op_substitute_1(PDL_LDouble,E)
    0          
    0          
2801 0 0         PDL_BROADCASTLOOP_START_align_op_substitute_readdata {(a_datap)[0] = ALIGN_OP_SUBSTITUTE;}PDL_BROADCASTLOOP_END_align_op_substitute_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2802 0           } break;
2803 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in align_op_substitute: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
2804             }
2805             #undef PDL_IF_BAD
2806 0           return PDL_err;
2807             }
2808              
2809             static pdl_datatypes pdl_align_op_substitute_vtable_gentypes[] = { PDL_SB, PDL_B, PDL_S, PDL_US, PDL_L, PDL_UL, PDL_IND, PDL_ULL, PDL_LL, PDL_F, PDL_D, PDL_LD, -1 };
2810             static PDL_Indx pdl_align_op_substitute_vtable_realdims[] = { 0 };
2811             static char *pdl_align_op_substitute_vtable_parnames[] = { "a" };
2812             static short pdl_align_op_substitute_vtable_parflags[] = {
2813             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
2814             };
2815             static pdl_datatypes pdl_align_op_substitute_vtable_partypes[] = { -1 };
2816             static PDL_Indx pdl_align_op_substitute_vtable_realdims_starts[] = { 0 };
2817             static PDL_Indx pdl_align_op_substitute_vtable_realdims_ind_ids[] = { 0 };
2818             static char *pdl_align_op_substitute_vtable_indnames[] = { "" };
2819             pdl_transvtable pdl_align_op_substitute_vtable = {
2820             PDL_TRANS_DO_BROADCAST, 0, pdl_align_op_substitute_vtable_gentypes, 0, 1, NULL /*CORE21*/,
2821             pdl_align_op_substitute_vtable_realdims, pdl_align_op_substitute_vtable_parnames,
2822             pdl_align_op_substitute_vtable_parflags, pdl_align_op_substitute_vtable_partypes,
2823             pdl_align_op_substitute_vtable_realdims_starts, pdl_align_op_substitute_vtable_realdims_ind_ids, 0,
2824             0, pdl_align_op_substitute_vtable_indnames,
2825             NULL, pdl_align_op_substitute_readdata, NULL,
2826             NULL,
2827             0,"PDL::EditDistance::align_op_substitute"
2828             };
2829              
2830              
2831 0           pdl_error pdl_run_align_op_substitute(pdl *a) {
2832 0           pdl_error PDL_err = {0, NULL, 0};
2833 0 0         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
2834 0           pdl_trans *__privtrans = PDL->create_trans(&pdl_align_op_substitute_vtable);
2835 0 0         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
2836 0           __privtrans->pdls[0] = a;
2837 0 0         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
2838 0 0         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
2839 0           return PDL_err;
2840             }
2841              
2842             #line 1846 "lib/PDL/PP.pm"
2843             typedef struct pdl_params__edit_bestpath {
2844             #line 2845 "EditDistance.xs"
2845             int ifinal;
2846             int jfinal;
2847             } pdl_params__edit_bestpath;
2848              
2849              
2850             #line 1857 "lib/PDL/PP.pm"
2851             pdl_error pdl__edit_bestpath_readdata(pdl_trans *__privtrans) {
2852             pdl_error PDL_err = {0, NULL, 0};
2853             #line 2854 "EditDistance.xs"
2854 1           pdl_params__edit_bestpath *__params = __privtrans->params; (void)__params;
2855 1 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in _edit_bestpath:" "broadcast.incs NULL");
2856             /* broadcastloop declarations */
2857             int __brcloopval;
2858             register PDL_Indx __tind0,__tind1; /* counters along dim */
2859 1           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
2860             /* dims here are how many steps along those dims */
2861 1           register PDL_Indx __tinc0_align = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
2862 1           register PDL_Indx __tinc0_apath = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
2863 1           register PDL_Indx __tinc0_bpath = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
2864 1           register PDL_Indx __tinc0_len = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,0);
2865 1           register PDL_Indx __tinc1_align = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
2866 1           register PDL_Indx __tinc1_apath = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
2867 1           register PDL_Indx __tinc1_bpath = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
2868 1           register PDL_Indx __tinc1_len = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,1);
2869             #define PDL_BROADCASTLOOP_START__edit_bestpath_readdata PDL_BROADCASTLOOP_START( \
2870             readdata, \
2871             __privtrans->broadcast, \
2872             __privtrans->vtable, \
2873             align_datap += __offsp[0]; \
2874             apath_datap += __offsp[1]; \
2875             bpath_datap += __offsp[2]; \
2876             len_datap += __offsp[3]; \
2877             , \
2878             ( ,align_datap += __tinc1_align - __tinc0_align * __tdims0 \
2879             ,apath_datap += __tinc1_apath - __tinc0_apath * __tdims0 \
2880             ,bpath_datap += __tinc1_bpath - __tinc0_bpath * __tdims0 \
2881             ,len_datap += __tinc1_len - __tinc0_len * __tdims0 \
2882             ), \
2883             ( ,align_datap += __tinc0_align \
2884             ,apath_datap += __tinc0_apath \
2885             ,bpath_datap += __tinc0_bpath \
2886             ,len_datap += __tinc0_len \
2887             ) \
2888             )
2889             #define PDL_BROADCASTLOOP_END__edit_bestpath_readdata PDL_BROADCASTLOOP_END( \
2890             __privtrans->broadcast, \
2891             align_datap -= __tinc1_align * __tdims1 + __offsp[0]; \
2892             apath_datap -= __tinc1_apath * __tdims1 + __offsp[1]; \
2893             bpath_datap -= __tinc1_bpath * __tdims1 + __offsp[2]; \
2894             len_datap -= __tinc1_len * __tdims1 + __offsp[3]; \
2895             )
2896 1           register PDL_Indx __inc_align_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_align_N1;register PDL_Indx __inc_align_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,1)]; (void)__inc_align_M1;
2897 1           register PDL_Indx __inc_apath_L = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_apath_L;
2898 1           register PDL_Indx __inc_bpath_L = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,0)]; (void)__inc_bpath_L;
2899             #ifndef PDL_DECLARE_PARAMS__edit_bestpath_1
2900             #define PDL_DECLARE_PARAMS__edit_bestpath_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_apath,PDL_PPSYM_PARAM_apath,PDL_TYPE_PARAM_bpath,PDL_PPSYM_PARAM_bpath,PDL_TYPE_PARAM_len,PDL_PPSYM_PARAM_len) \
2901             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, align, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
2902             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_apath, apath, (__privtrans->pdls[1]), 1, PDL_PPSYM_PARAM_apath) \
2903             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_bpath, bpath, (__privtrans->pdls[2]), 1, PDL_PPSYM_PARAM_bpath) \
2904             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_len, len, (__privtrans->pdls[3]), 1, PDL_PPSYM_PARAM_len)
2905             #endif
2906             #define PDL_IF_BAD(t,f) f
2907 1           switch (__privtrans->__datatype) { /* Start generic switch */
2908 0           case PDL_SB: {
2909 0 0         PDL_DECLARE_PARAMS__edit_bestpath_1(PDL_SByte,A,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2910 0 0         PDL_BROADCASTLOOP_START__edit_bestpath_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
2911             int i,j,p,endp,tmp;
2912             char op;
2913 0           (len_datap)[0]=0;
2914 0 0         for (p=0,i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
2915 0           (apath_datap)[0+(__inc_apath_L*(p))] = i-1;
2916 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = j-1;
2917 0           op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
2918 0 0         if (op==ALIGN_OP_INSERT1) {
2919 0           --i;
2920 0 0         } else if (op==ALIGN_OP_INSERT2) {
2921 0           --j;
2922             } else { /* if (op==ALIGN_OP_MATCH || op==ALIGN_OP_SUBSTITUTE) */
2923 0           --i;
2924 0           --j;
2925             }
2926             }
2927 0           (len_datap)[0] = p;
2928 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
2929 0           endp = (len_datap)[0]-p-1;
2930 0           tmp = (apath_datap)[0+(__inc_apath_L*(p))];
2931 0           (apath_datap)[0+(__inc_apath_L*(p))] = (apath_datap)[0+(__inc_apath_L*(endp))];
2932 0           (apath_datap)[0+(__inc_apath_L*(endp))] = tmp;
2933 0           tmp = (bpath_datap)[0+(__inc_bpath_L*(p))];
2934 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = (bpath_datap)[0+(__inc_bpath_L*(endp))];
2935 0           (bpath_datap)[0+(__inc_bpath_L*(endp))] = tmp;
2936             }
2937 0 0         for (p=(len_datap)[0]; p > 0; p--) {
2938 0 0         if ((apath_datap)[0+(__inc_apath_L*(p))] == (apath_datap)[0+(__inc_apath_L*(p-1))]) (apath_datap)[0+(__inc_apath_L*(p))] = -1;
2939 0 0         if ((bpath_datap)[0+(__inc_bpath_L*(p))] == (bpath_datap)[0+(__inc_bpath_L*(p-1))]) (bpath_datap)[0+(__inc_bpath_L*(p))] = -1;
2940             }
2941 0 0         }PDL_BROADCASTLOOP_END__edit_bestpath_readdata
    0          
2942 0           } break;
2943 1           case PDL_B: {
2944 1 50         PDL_DECLARE_PARAMS__edit_bestpath_1(PDL_Byte,B,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
2945 4 50         PDL_BROADCASTLOOP_START__edit_bestpath_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
2946             int i,j,p,endp,tmp;
2947             char op;
2948 1           (len_datap)[0]=0;
2949 7 50         for (p=0,i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    100          
    50          
2950 6           (apath_datap)[0+(__inc_apath_L*(p))] = i-1;
2951 6           (bpath_datap)[0+(__inc_bpath_L*(p))] = j-1;
2952 6           op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
2953 6 50         if (op==ALIGN_OP_INSERT1) {
2954 0           --i;
2955 6 100         } else if (op==ALIGN_OP_INSERT2) {
2956 1           --j;
2957             } else { /* if (op==ALIGN_OP_MATCH || op==ALIGN_OP_SUBSTITUTE) */
2958 5           --i;
2959 5           --j;
2960             }
2961             }
2962 1           (len_datap)[0] = p;
2963 4 100         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
2964 3           endp = (len_datap)[0]-p-1;
2965 3           tmp = (apath_datap)[0+(__inc_apath_L*(p))];
2966 3           (apath_datap)[0+(__inc_apath_L*(p))] = (apath_datap)[0+(__inc_apath_L*(endp))];
2967 3           (apath_datap)[0+(__inc_apath_L*(endp))] = tmp;
2968 3           tmp = (bpath_datap)[0+(__inc_bpath_L*(p))];
2969 3           (bpath_datap)[0+(__inc_bpath_L*(p))] = (bpath_datap)[0+(__inc_bpath_L*(endp))];
2970 3           (bpath_datap)[0+(__inc_bpath_L*(endp))] = tmp;
2971             }
2972 7 100         for (p=(len_datap)[0]; p > 0; p--) {
2973 6 100         if ((apath_datap)[0+(__inc_apath_L*(p))] == (apath_datap)[0+(__inc_apath_L*(p-1))]) (apath_datap)[0+(__inc_apath_L*(p))] = -1;
2974 6 50         if ((bpath_datap)[0+(__inc_bpath_L*(p))] == (bpath_datap)[0+(__inc_bpath_L*(p-1))]) (bpath_datap)[0+(__inc_bpath_L*(p))] = -1;
2975             }
2976 1 50         }PDL_BROADCASTLOOP_END__edit_bestpath_readdata
    50          
2977 1           } break;
2978 0           case PDL_S: {
2979 0 0         PDL_DECLARE_PARAMS__edit_bestpath_1(PDL_Short,S,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
2980 0 0         PDL_BROADCASTLOOP_START__edit_bestpath_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
2981             int i,j,p,endp,tmp;
2982             char op;
2983 0           (len_datap)[0]=0;
2984 0 0         for (p=0,i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
2985 0           (apath_datap)[0+(__inc_apath_L*(p))] = i-1;
2986 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = j-1;
2987 0           op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
2988 0 0         if (op==ALIGN_OP_INSERT1) {
2989 0           --i;
2990 0 0         } else if (op==ALIGN_OP_INSERT2) {
2991 0           --j;
2992             } else { /* if (op==ALIGN_OP_MATCH || op==ALIGN_OP_SUBSTITUTE) */
2993 0           --i;
2994 0           --j;
2995             }
2996             }
2997 0           (len_datap)[0] = p;
2998 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
2999 0           endp = (len_datap)[0]-p-1;
3000 0           tmp = (apath_datap)[0+(__inc_apath_L*(p))];
3001 0           (apath_datap)[0+(__inc_apath_L*(p))] = (apath_datap)[0+(__inc_apath_L*(endp))];
3002 0           (apath_datap)[0+(__inc_apath_L*(endp))] = tmp;
3003 0           tmp = (bpath_datap)[0+(__inc_bpath_L*(p))];
3004 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = (bpath_datap)[0+(__inc_bpath_L*(endp))];
3005 0           (bpath_datap)[0+(__inc_bpath_L*(endp))] = tmp;
3006             }
3007 0 0         for (p=(len_datap)[0]; p > 0; p--) {
3008 0 0         if ((apath_datap)[0+(__inc_apath_L*(p))] == (apath_datap)[0+(__inc_apath_L*(p-1))]) (apath_datap)[0+(__inc_apath_L*(p))] = -1;
3009 0 0         if ((bpath_datap)[0+(__inc_bpath_L*(p))] == (bpath_datap)[0+(__inc_bpath_L*(p-1))]) (bpath_datap)[0+(__inc_bpath_L*(p))] = -1;
3010             }
3011 0 0         }PDL_BROADCASTLOOP_END__edit_bestpath_readdata
    0          
3012 0           } break;
3013 0           case PDL_US: {
3014 0 0         PDL_DECLARE_PARAMS__edit_bestpath_1(PDL_Ushort,U,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3015 0 0         PDL_BROADCASTLOOP_START__edit_bestpath_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3016             int i,j,p,endp,tmp;
3017             char op;
3018 0           (len_datap)[0]=0;
3019 0 0         for (p=0,i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3020 0           (apath_datap)[0+(__inc_apath_L*(p))] = i-1;
3021 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = j-1;
3022 0           op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3023 0 0         if (op==ALIGN_OP_INSERT1) {
3024 0           --i;
3025 0 0         } else if (op==ALIGN_OP_INSERT2) {
3026 0           --j;
3027             } else { /* if (op==ALIGN_OP_MATCH || op==ALIGN_OP_SUBSTITUTE) */
3028 0           --i;
3029 0           --j;
3030             }
3031             }
3032 0           (len_datap)[0] = p;
3033 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3034 0           endp = (len_datap)[0]-p-1;
3035 0           tmp = (apath_datap)[0+(__inc_apath_L*(p))];
3036 0           (apath_datap)[0+(__inc_apath_L*(p))] = (apath_datap)[0+(__inc_apath_L*(endp))];
3037 0           (apath_datap)[0+(__inc_apath_L*(endp))] = tmp;
3038 0           tmp = (bpath_datap)[0+(__inc_bpath_L*(p))];
3039 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = (bpath_datap)[0+(__inc_bpath_L*(endp))];
3040 0           (bpath_datap)[0+(__inc_bpath_L*(endp))] = tmp;
3041             }
3042 0 0         for (p=(len_datap)[0]; p > 0; p--) {
3043 0 0         if ((apath_datap)[0+(__inc_apath_L*(p))] == (apath_datap)[0+(__inc_apath_L*(p-1))]) (apath_datap)[0+(__inc_apath_L*(p))] = -1;
3044 0 0         if ((bpath_datap)[0+(__inc_bpath_L*(p))] == (bpath_datap)[0+(__inc_bpath_L*(p-1))]) (bpath_datap)[0+(__inc_bpath_L*(p))] = -1;
3045             }
3046 0 0         }PDL_BROADCASTLOOP_END__edit_bestpath_readdata
    0          
3047 0           } break;
3048 0           case PDL_L: {
3049 0 0         PDL_DECLARE_PARAMS__edit_bestpath_1(PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3050 0 0         PDL_BROADCASTLOOP_START__edit_bestpath_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3051             int i,j,p,endp,tmp;
3052             char op;
3053 0           (len_datap)[0]=0;
3054 0 0         for (p=0,i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3055 0           (apath_datap)[0+(__inc_apath_L*(p))] = i-1;
3056 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = j-1;
3057 0           op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3058 0 0         if (op==ALIGN_OP_INSERT1) {
3059 0           --i;
3060 0 0         } else if (op==ALIGN_OP_INSERT2) {
3061 0           --j;
3062             } else { /* if (op==ALIGN_OP_MATCH || op==ALIGN_OP_SUBSTITUTE) */
3063 0           --i;
3064 0           --j;
3065             }
3066             }
3067 0           (len_datap)[0] = p;
3068 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3069 0           endp = (len_datap)[0]-p-1;
3070 0           tmp = (apath_datap)[0+(__inc_apath_L*(p))];
3071 0           (apath_datap)[0+(__inc_apath_L*(p))] = (apath_datap)[0+(__inc_apath_L*(endp))];
3072 0           (apath_datap)[0+(__inc_apath_L*(endp))] = tmp;
3073 0           tmp = (bpath_datap)[0+(__inc_bpath_L*(p))];
3074 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = (bpath_datap)[0+(__inc_bpath_L*(endp))];
3075 0           (bpath_datap)[0+(__inc_bpath_L*(endp))] = tmp;
3076             }
3077 0 0         for (p=(len_datap)[0]; p > 0; p--) {
3078 0 0         if ((apath_datap)[0+(__inc_apath_L*(p))] == (apath_datap)[0+(__inc_apath_L*(p-1))]) (apath_datap)[0+(__inc_apath_L*(p))] = -1;
3079 0 0         if ((bpath_datap)[0+(__inc_bpath_L*(p))] == (bpath_datap)[0+(__inc_bpath_L*(p-1))]) (bpath_datap)[0+(__inc_bpath_L*(p))] = -1;
3080             }
3081 0 0         }PDL_BROADCASTLOOP_END__edit_bestpath_readdata
    0          
3082 0           } break;
3083 0           case PDL_UL: {
3084 0 0         PDL_DECLARE_PARAMS__edit_bestpath_1(PDL_ULong,K,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3085 0 0         PDL_BROADCASTLOOP_START__edit_bestpath_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3086             int i,j,p,endp,tmp;
3087             char op;
3088 0           (len_datap)[0]=0;
3089 0 0         for (p=0,i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3090 0           (apath_datap)[0+(__inc_apath_L*(p))] = i-1;
3091 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = j-1;
3092 0           op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3093 0 0         if (op==ALIGN_OP_INSERT1) {
3094 0           --i;
3095 0 0         } else if (op==ALIGN_OP_INSERT2) {
3096 0           --j;
3097             } else { /* if (op==ALIGN_OP_MATCH || op==ALIGN_OP_SUBSTITUTE) */
3098 0           --i;
3099 0           --j;
3100             }
3101             }
3102 0           (len_datap)[0] = p;
3103 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3104 0           endp = (len_datap)[0]-p-1;
3105 0           tmp = (apath_datap)[0+(__inc_apath_L*(p))];
3106 0           (apath_datap)[0+(__inc_apath_L*(p))] = (apath_datap)[0+(__inc_apath_L*(endp))];
3107 0           (apath_datap)[0+(__inc_apath_L*(endp))] = tmp;
3108 0           tmp = (bpath_datap)[0+(__inc_bpath_L*(p))];
3109 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = (bpath_datap)[0+(__inc_bpath_L*(endp))];
3110 0           (bpath_datap)[0+(__inc_bpath_L*(endp))] = tmp;
3111             }
3112 0 0         for (p=(len_datap)[0]; p > 0; p--) {
3113 0 0         if ((apath_datap)[0+(__inc_apath_L*(p))] == (apath_datap)[0+(__inc_apath_L*(p-1))]) (apath_datap)[0+(__inc_apath_L*(p))] = -1;
3114 0 0         if ((bpath_datap)[0+(__inc_bpath_L*(p))] == (bpath_datap)[0+(__inc_bpath_L*(p-1))]) (bpath_datap)[0+(__inc_bpath_L*(p))] = -1;
3115             }
3116 0 0         }PDL_BROADCASTLOOP_END__edit_bestpath_readdata
    0          
3117 0           } break;
3118 0           case PDL_IND: {
3119 0 0         PDL_DECLARE_PARAMS__edit_bestpath_1(PDL_Indx,N,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3120 0 0         PDL_BROADCASTLOOP_START__edit_bestpath_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3121             int i,j,p,endp,tmp;
3122             char op;
3123 0           (len_datap)[0]=0;
3124 0 0         for (p=0,i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3125 0           (apath_datap)[0+(__inc_apath_L*(p))] = i-1;
3126 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = j-1;
3127 0           op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3128 0 0         if (op==ALIGN_OP_INSERT1) {
3129 0           --i;
3130 0 0         } else if (op==ALIGN_OP_INSERT2) {
3131 0           --j;
3132             } else { /* if (op==ALIGN_OP_MATCH || op==ALIGN_OP_SUBSTITUTE) */
3133 0           --i;
3134 0           --j;
3135             }
3136             }
3137 0           (len_datap)[0] = p;
3138 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3139 0           endp = (len_datap)[0]-p-1;
3140 0           tmp = (apath_datap)[0+(__inc_apath_L*(p))];
3141 0           (apath_datap)[0+(__inc_apath_L*(p))] = (apath_datap)[0+(__inc_apath_L*(endp))];
3142 0           (apath_datap)[0+(__inc_apath_L*(endp))] = tmp;
3143 0           tmp = (bpath_datap)[0+(__inc_bpath_L*(p))];
3144 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = (bpath_datap)[0+(__inc_bpath_L*(endp))];
3145 0           (bpath_datap)[0+(__inc_bpath_L*(endp))] = tmp;
3146             }
3147 0 0         for (p=(len_datap)[0]; p > 0; p--) {
3148 0 0         if ((apath_datap)[0+(__inc_apath_L*(p))] == (apath_datap)[0+(__inc_apath_L*(p-1))]) (apath_datap)[0+(__inc_apath_L*(p))] = -1;
3149 0 0         if ((bpath_datap)[0+(__inc_bpath_L*(p))] == (bpath_datap)[0+(__inc_bpath_L*(p-1))]) (bpath_datap)[0+(__inc_bpath_L*(p))] = -1;
3150             }
3151 0 0         }PDL_BROADCASTLOOP_END__edit_bestpath_readdata
    0          
3152 0           } break;
3153 0           case PDL_ULL: {
3154 0 0         PDL_DECLARE_PARAMS__edit_bestpath_1(PDL_ULongLong,P,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3155 0 0         PDL_BROADCASTLOOP_START__edit_bestpath_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3156             int i,j,p,endp,tmp;
3157             char op;
3158 0           (len_datap)[0]=0;
3159 0 0         for (p=0,i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3160 0           (apath_datap)[0+(__inc_apath_L*(p))] = i-1;
3161 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = j-1;
3162 0           op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3163 0 0         if (op==ALIGN_OP_INSERT1) {
3164 0           --i;
3165 0 0         } else if (op==ALIGN_OP_INSERT2) {
3166 0           --j;
3167             } else { /* if (op==ALIGN_OP_MATCH || op==ALIGN_OP_SUBSTITUTE) */
3168 0           --i;
3169 0           --j;
3170             }
3171             }
3172 0           (len_datap)[0] = p;
3173 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3174 0           endp = (len_datap)[0]-p-1;
3175 0           tmp = (apath_datap)[0+(__inc_apath_L*(p))];
3176 0           (apath_datap)[0+(__inc_apath_L*(p))] = (apath_datap)[0+(__inc_apath_L*(endp))];
3177 0           (apath_datap)[0+(__inc_apath_L*(endp))] = tmp;
3178 0           tmp = (bpath_datap)[0+(__inc_bpath_L*(p))];
3179 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = (bpath_datap)[0+(__inc_bpath_L*(endp))];
3180 0           (bpath_datap)[0+(__inc_bpath_L*(endp))] = tmp;
3181             }
3182 0 0         for (p=(len_datap)[0]; p > 0; p--) {
3183 0 0         if ((apath_datap)[0+(__inc_apath_L*(p))] == (apath_datap)[0+(__inc_apath_L*(p-1))]) (apath_datap)[0+(__inc_apath_L*(p))] = -1;
3184 0 0         if ((bpath_datap)[0+(__inc_bpath_L*(p))] == (bpath_datap)[0+(__inc_bpath_L*(p-1))]) (bpath_datap)[0+(__inc_bpath_L*(p))] = -1;
3185             }
3186 0 0         }PDL_BROADCASTLOOP_END__edit_bestpath_readdata
    0          
3187 0           } break;
3188 0           case PDL_LL: {
3189 0 0         PDL_DECLARE_PARAMS__edit_bestpath_1(PDL_LongLong,Q,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3190 0 0         PDL_BROADCASTLOOP_START__edit_bestpath_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3191             int i,j,p,endp,tmp;
3192             char op;
3193 0           (len_datap)[0]=0;
3194 0 0         for (p=0,i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3195 0           (apath_datap)[0+(__inc_apath_L*(p))] = i-1;
3196 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = j-1;
3197 0           op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3198 0 0         if (op==ALIGN_OP_INSERT1) {
3199 0           --i;
3200 0 0         } else if (op==ALIGN_OP_INSERT2) {
3201 0           --j;
3202             } else { /* if (op==ALIGN_OP_MATCH || op==ALIGN_OP_SUBSTITUTE) */
3203 0           --i;
3204 0           --j;
3205             }
3206             }
3207 0           (len_datap)[0] = p;
3208 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3209 0           endp = (len_datap)[0]-p-1;
3210 0           tmp = (apath_datap)[0+(__inc_apath_L*(p))];
3211 0           (apath_datap)[0+(__inc_apath_L*(p))] = (apath_datap)[0+(__inc_apath_L*(endp))];
3212 0           (apath_datap)[0+(__inc_apath_L*(endp))] = tmp;
3213 0           tmp = (bpath_datap)[0+(__inc_bpath_L*(p))];
3214 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = (bpath_datap)[0+(__inc_bpath_L*(endp))];
3215 0           (bpath_datap)[0+(__inc_bpath_L*(endp))] = tmp;
3216             }
3217 0 0         for (p=(len_datap)[0]; p > 0; p--) {
3218 0 0         if ((apath_datap)[0+(__inc_apath_L*(p))] == (apath_datap)[0+(__inc_apath_L*(p-1))]) (apath_datap)[0+(__inc_apath_L*(p))] = -1;
3219 0 0         if ((bpath_datap)[0+(__inc_bpath_L*(p))] == (bpath_datap)[0+(__inc_bpath_L*(p-1))]) (bpath_datap)[0+(__inc_bpath_L*(p))] = -1;
3220             }
3221 0 0         }PDL_BROADCASTLOOP_END__edit_bestpath_readdata
    0          
3222 0           } break;
3223 0           case PDL_F: {
3224 0 0         PDL_DECLARE_PARAMS__edit_bestpath_1(PDL_Float,F,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3225 0 0         PDL_BROADCASTLOOP_START__edit_bestpath_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3226             int i,j,p,endp,tmp;
3227             char op;
3228 0           (len_datap)[0]=0;
3229 0 0         for (p=0,i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3230 0           (apath_datap)[0+(__inc_apath_L*(p))] = i-1;
3231 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = j-1;
3232 0           op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3233 0 0         if (op==ALIGN_OP_INSERT1) {
3234 0           --i;
3235 0 0         } else if (op==ALIGN_OP_INSERT2) {
3236 0           --j;
3237             } else { /* if (op==ALIGN_OP_MATCH || op==ALIGN_OP_SUBSTITUTE) */
3238 0           --i;
3239 0           --j;
3240             }
3241             }
3242 0           (len_datap)[0] = p;
3243 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3244 0           endp = (len_datap)[0]-p-1;
3245 0           tmp = (apath_datap)[0+(__inc_apath_L*(p))];
3246 0           (apath_datap)[0+(__inc_apath_L*(p))] = (apath_datap)[0+(__inc_apath_L*(endp))];
3247 0           (apath_datap)[0+(__inc_apath_L*(endp))] = tmp;
3248 0           tmp = (bpath_datap)[0+(__inc_bpath_L*(p))];
3249 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = (bpath_datap)[0+(__inc_bpath_L*(endp))];
3250 0           (bpath_datap)[0+(__inc_bpath_L*(endp))] = tmp;
3251             }
3252 0 0         for (p=(len_datap)[0]; p > 0; p--) {
3253 0 0         if ((apath_datap)[0+(__inc_apath_L*(p))] == (apath_datap)[0+(__inc_apath_L*(p-1))]) (apath_datap)[0+(__inc_apath_L*(p))] = -1;
3254 0 0         if ((bpath_datap)[0+(__inc_bpath_L*(p))] == (bpath_datap)[0+(__inc_bpath_L*(p-1))]) (bpath_datap)[0+(__inc_bpath_L*(p))] = -1;
3255             }
3256 0 0         }PDL_BROADCASTLOOP_END__edit_bestpath_readdata
    0          
3257 0           } break;
3258 0           case PDL_D: {
3259 0 0         PDL_DECLARE_PARAMS__edit_bestpath_1(PDL_Double,D,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3260 0 0         PDL_BROADCASTLOOP_START__edit_bestpath_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3261             int i,j,p,endp,tmp;
3262             char op;
3263 0           (len_datap)[0]=0;
3264 0 0         for (p=0,i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3265 0           (apath_datap)[0+(__inc_apath_L*(p))] = i-1;
3266 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = j-1;
3267 0           op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3268 0 0         if (op==ALIGN_OP_INSERT1) {
3269 0           --i;
3270 0 0         } else if (op==ALIGN_OP_INSERT2) {
3271 0           --j;
3272             } else { /* if (op==ALIGN_OP_MATCH || op==ALIGN_OP_SUBSTITUTE) */
3273 0           --i;
3274 0           --j;
3275             }
3276             }
3277 0           (len_datap)[0] = p;
3278 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3279 0           endp = (len_datap)[0]-p-1;
3280 0           tmp = (apath_datap)[0+(__inc_apath_L*(p))];
3281 0           (apath_datap)[0+(__inc_apath_L*(p))] = (apath_datap)[0+(__inc_apath_L*(endp))];
3282 0           (apath_datap)[0+(__inc_apath_L*(endp))] = tmp;
3283 0           tmp = (bpath_datap)[0+(__inc_bpath_L*(p))];
3284 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = (bpath_datap)[0+(__inc_bpath_L*(endp))];
3285 0           (bpath_datap)[0+(__inc_bpath_L*(endp))] = tmp;
3286             }
3287 0 0         for (p=(len_datap)[0]; p > 0; p--) {
3288 0 0         if ((apath_datap)[0+(__inc_apath_L*(p))] == (apath_datap)[0+(__inc_apath_L*(p-1))]) (apath_datap)[0+(__inc_apath_L*(p))] = -1;
3289 0 0         if ((bpath_datap)[0+(__inc_bpath_L*(p))] == (bpath_datap)[0+(__inc_bpath_L*(p-1))]) (bpath_datap)[0+(__inc_bpath_L*(p))] = -1;
3290             }
3291 0 0         }PDL_BROADCASTLOOP_END__edit_bestpath_readdata
    0          
3292 0           } break;
3293 0           case PDL_LD: {
3294 0 0         PDL_DECLARE_PARAMS__edit_bestpath_1(PDL_LDouble,E,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3295 0 0         PDL_BROADCASTLOOP_START__edit_bestpath_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3296             int i,j,p,endp,tmp;
3297             char op;
3298 0           (len_datap)[0]=0;
3299 0 0         for (p=0,i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3300 0           (apath_datap)[0+(__inc_apath_L*(p))] = i-1;
3301 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = j-1;
3302 0           op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3303 0 0         if (op==ALIGN_OP_INSERT1) {
3304 0           --i;
3305 0 0         } else if (op==ALIGN_OP_INSERT2) {
3306 0           --j;
3307             } else { /* if (op==ALIGN_OP_MATCH || op==ALIGN_OP_SUBSTITUTE) */
3308 0           --i;
3309 0           --j;
3310             }
3311             }
3312 0           (len_datap)[0] = p;
3313 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3314 0           endp = (len_datap)[0]-p-1;
3315 0           tmp = (apath_datap)[0+(__inc_apath_L*(p))];
3316 0           (apath_datap)[0+(__inc_apath_L*(p))] = (apath_datap)[0+(__inc_apath_L*(endp))];
3317 0           (apath_datap)[0+(__inc_apath_L*(endp))] = tmp;
3318 0           tmp = (bpath_datap)[0+(__inc_bpath_L*(p))];
3319 0           (bpath_datap)[0+(__inc_bpath_L*(p))] = (bpath_datap)[0+(__inc_bpath_L*(endp))];
3320 0           (bpath_datap)[0+(__inc_bpath_L*(endp))] = tmp;
3321             }
3322 0 0         for (p=(len_datap)[0]; p > 0; p--) {
3323 0 0         if ((apath_datap)[0+(__inc_apath_L*(p))] == (apath_datap)[0+(__inc_apath_L*(p-1))]) (apath_datap)[0+(__inc_apath_L*(p))] = -1;
3324 0 0         if ((bpath_datap)[0+(__inc_bpath_L*(p))] == (bpath_datap)[0+(__inc_bpath_L*(p-1))]) (bpath_datap)[0+(__inc_bpath_L*(p))] = -1;
3325             }
3326 0 0         }PDL_BROADCASTLOOP_END__edit_bestpath_readdata
    0          
3327 0           } break;
3328 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in _edit_bestpath: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
3329             }
3330             #undef PDL_IF_BAD
3331 1           return PDL_err;
3332             }
3333              
3334             static pdl_datatypes pdl__edit_bestpath_vtable_gentypes[] = { PDL_SB, PDL_B, PDL_S, PDL_US, PDL_L, PDL_UL, PDL_IND, PDL_ULL, PDL_LL, PDL_F, PDL_D, PDL_LD, -1 };
3335             static PDL_Indx pdl__edit_bestpath_vtable_realdims[] = { 2, 1, 1, 0 };
3336             static char *pdl__edit_bestpath_vtable_parnames[] = { "align","apath","bpath","len" };
3337             static short pdl__edit_bestpath_vtable_parflags[] = {
3338             0,
3339             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE,
3340             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE,
3341             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
3342             };
3343             static pdl_datatypes pdl__edit_bestpath_vtable_partypes[] = { -1, PDL_L, PDL_L, PDL_L };
3344             static PDL_Indx pdl__edit_bestpath_vtable_realdims_starts[] = { 0, 2, 3, 4 };
3345             static PDL_Indx pdl__edit_bestpath_vtable_realdims_ind_ids[] = { 2, 1, 0, 0 };
3346             static char *pdl__edit_bestpath_vtable_indnames[] = { "L","M1","N1" };
3347             pdl_transvtable pdl__edit_bestpath_vtable = {
3348             PDL_TRANS_DO_BROADCAST, 0, pdl__edit_bestpath_vtable_gentypes, 1, 4, NULL /*CORE21*/,
3349             pdl__edit_bestpath_vtable_realdims, pdl__edit_bestpath_vtable_parnames,
3350             pdl__edit_bestpath_vtable_parflags, pdl__edit_bestpath_vtable_partypes,
3351             pdl__edit_bestpath_vtable_realdims_starts, pdl__edit_bestpath_vtable_realdims_ind_ids, 4,
3352             3, pdl__edit_bestpath_vtable_indnames,
3353             NULL, pdl__edit_bestpath_readdata, NULL,
3354             NULL,
3355             sizeof(pdl_params__edit_bestpath),"PDL::EditDistance::_edit_bestpath"
3356             };
3357              
3358              
3359 1           pdl_error pdl_run__edit_bestpath(pdl *align,pdl *apath,pdl *bpath,pdl *len,int ifinal,int jfinal) {
3360 1           pdl_error PDL_err = {0, NULL, 0};
3361 1 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
3362 1           pdl_trans *__privtrans = PDL->create_trans(&pdl__edit_bestpath_vtable);
3363 1 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
3364 1           pdl_params__edit_bestpath *__params = __privtrans->params;
3365 1           __privtrans->pdls[0] = align;
3366 1           __privtrans->pdls[1] = apath;
3367 1           __privtrans->pdls[2] = bpath;
3368 1           __privtrans->pdls[3] = len;
3369 1 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
3370 1           (__params->ifinal) = (ifinal); /* CType.get_copy */
3371 1           (__params->jfinal) = (jfinal); /* CType.get_copy */
3372 1 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
3373 1           return PDL_err;
3374             }
3375              
3376             #line 1846 "lib/PDL/PP.pm"
3377             typedef struct pdl_params__edit_pathtrace {
3378             #line 3379 "EditDistance.xs"
3379             int ifinal;
3380             int jfinal;
3381             } pdl_params__edit_pathtrace;
3382              
3383              
3384             #line 1857 "lib/PDL/PP.pm"
3385             pdl_error pdl__edit_pathtrace_readdata(pdl_trans *__privtrans) {
3386             pdl_error PDL_err = {0, NULL, 0};
3387             #line 3388 "EditDistance.xs"
3388 1           pdl_params__edit_pathtrace *__params = __privtrans->params; (void)__params;
3389 1 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in _edit_pathtrace:" "broadcast.incs NULL");
3390             /* broadcastloop declarations */
3391             int __brcloopval;
3392             register PDL_Indx __tind0,__tind1; /* counters along dim */
3393 1           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
3394             /* dims here are how many steps along those dims */
3395 1           register PDL_Indx __tinc0_align = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
3396 1           register PDL_Indx __tinc0_ai = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
3397 1           register PDL_Indx __tinc0_bi = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
3398 1           register PDL_Indx __tinc0_ops = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,0);
3399 1           register PDL_Indx __tinc0_len = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,0);
3400 1           register PDL_Indx __tinc1_align = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
3401 1           register PDL_Indx __tinc1_ai = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
3402 1           register PDL_Indx __tinc1_bi = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
3403 1           register PDL_Indx __tinc1_ops = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,1);
3404 1           register PDL_Indx __tinc1_len = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,1);
3405             #define PDL_BROADCASTLOOP_START__edit_pathtrace_readdata PDL_BROADCASTLOOP_START( \
3406             readdata, \
3407             __privtrans->broadcast, \
3408             __privtrans->vtable, \
3409             align_datap += __offsp[0]; \
3410             ai_datap += __offsp[1]; \
3411             bi_datap += __offsp[2]; \
3412             ops_datap += __offsp[3]; \
3413             len_datap += __offsp[4]; \
3414             , \
3415             ( ,align_datap += __tinc1_align - __tinc0_align * __tdims0 \
3416             ,ai_datap += __tinc1_ai - __tinc0_ai * __tdims0 \
3417             ,bi_datap += __tinc1_bi - __tinc0_bi * __tdims0 \
3418             ,ops_datap += __tinc1_ops - __tinc0_ops * __tdims0 \
3419             ,len_datap += __tinc1_len - __tinc0_len * __tdims0 \
3420             ), \
3421             ( ,align_datap += __tinc0_align \
3422             ,ai_datap += __tinc0_ai \
3423             ,bi_datap += __tinc0_bi \
3424             ,ops_datap += __tinc0_ops \
3425             ,len_datap += __tinc0_len \
3426             ) \
3427             )
3428             #define PDL_BROADCASTLOOP_END__edit_pathtrace_readdata PDL_BROADCASTLOOP_END( \
3429             __privtrans->broadcast, \
3430             align_datap -= __tinc1_align * __tdims1 + __offsp[0]; \
3431             ai_datap -= __tinc1_ai * __tdims1 + __offsp[1]; \
3432             bi_datap -= __tinc1_bi * __tdims1 + __offsp[2]; \
3433             ops_datap -= __tinc1_ops * __tdims1 + __offsp[3]; \
3434             len_datap -= __tinc1_len * __tdims1 + __offsp[4]; \
3435             )
3436 1           register PDL_Indx __inc_ai_L = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_ai_L;
3437 1           register PDL_Indx __inc_align_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_align_N1;register PDL_Indx __inc_align_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,1)]; (void)__inc_align_M1;
3438 1           register PDL_Indx __inc_bi_L = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,0)]; (void)__inc_bi_L;
3439 1           register PDL_Indx __inc_ops_L = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,3,0)]; (void)__inc_ops_L;
3440             #ifndef PDL_DECLARE_PARAMS__edit_pathtrace_1
3441             #define PDL_DECLARE_PARAMS__edit_pathtrace_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_ai,PDL_PPSYM_PARAM_ai,PDL_TYPE_PARAM_bi,PDL_PPSYM_PARAM_bi,PDL_TYPE_PARAM_ops,PDL_PPSYM_PARAM_ops,PDL_TYPE_PARAM_len,PDL_PPSYM_PARAM_len) \
3442             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, align, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
3443             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_ai, ai, (__privtrans->pdls[1]), 1, PDL_PPSYM_PARAM_ai) \
3444             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_bi, bi, (__privtrans->pdls[2]), 1, PDL_PPSYM_PARAM_bi) \
3445             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_ops, ops, (__privtrans->pdls[3]), 1, PDL_PPSYM_PARAM_ops) \
3446             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_len, len, (__privtrans->pdls[4]), 1, PDL_PPSYM_PARAM_len)
3447             #endif
3448             #define PDL_IF_BAD(t,f) f
3449 1           switch (__privtrans->__datatype) { /* Start generic switch */
3450 0           case PDL_SB: {
3451 0 0         PDL_DECLARE_PARAMS__edit_pathtrace_1(PDL_SByte,A,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3452 0 0         PDL_BROADCASTLOOP_START__edit_pathtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3453             int i,j,p, tmp;
3454 0           (len_datap)[0] = 0;
3455 0 0         for (p=0, i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3456 0           int op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3457 0           (ai_datap)[0+(__inc_ai_L*(p))] = i;
3458 0           (bi_datap)[0+(__inc_bi_L*(p))] = j;
3459 0           (ops_datap)[0+(__inc_ops_L*(p))] = op;
3460 0           switch (op) {
3461 0           case ALIGN_OP_INSERT1: --i; break;
3462 0           case ALIGN_OP_INSERT2: --j; break;
3463 0           case ALIGN_OP_MATCH:
3464             case ALIGN_OP_SUBSTITUTE:
3465 0           default: --i; --j; break;
3466             }
3467             }
3468 0           (len_datap)[0] = p;
3469 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3470 0           int endp = (len_datap)[0]-p-1;
3471 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
3472 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
3473 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
3474 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
3475 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
3476 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
3477 0           tmp = (ops_datap)[0+(__inc_ops_L*(p))];
3478 0           (ops_datap)[0+(__inc_ops_L*(p))] = (ops_datap)[0+(__inc_ops_L*(endp))];
3479 0           (ops_datap)[0+(__inc_ops_L*(endp))] = tmp;
3480             }
3481 0 0         }PDL_BROADCASTLOOP_END__edit_pathtrace_readdata
    0          
3482 0           } break;
3483 1           case PDL_B: {
3484 1 50         PDL_DECLARE_PARAMS__edit_pathtrace_1(PDL_Byte,B,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
3485 4 50         PDL_BROADCASTLOOP_START__edit_pathtrace_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
3486             int i,j,p, tmp;
3487 1           (len_datap)[0] = 0;
3488 7 50         for (p=0, i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    100          
    50          
3489 6           int op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3490 6           (ai_datap)[0+(__inc_ai_L*(p))] = i;
3491 6           (bi_datap)[0+(__inc_bi_L*(p))] = j;
3492 6           (ops_datap)[0+(__inc_ops_L*(p))] = op;
3493 6           switch (op) {
3494 0           case ALIGN_OP_INSERT1: --i; break;
3495 1           case ALIGN_OP_INSERT2: --j; break;
3496 5           case ALIGN_OP_MATCH:
3497             case ALIGN_OP_SUBSTITUTE:
3498 5           default: --i; --j; break;
3499             }
3500             }
3501 1           (len_datap)[0] = p;
3502 4 100         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3503 3           int endp = (len_datap)[0]-p-1;
3504 3           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
3505 3           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
3506 3           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
3507 3           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
3508 3           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
3509 3           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
3510 3           tmp = (ops_datap)[0+(__inc_ops_L*(p))];
3511 3           (ops_datap)[0+(__inc_ops_L*(p))] = (ops_datap)[0+(__inc_ops_L*(endp))];
3512 3           (ops_datap)[0+(__inc_ops_L*(endp))] = tmp;
3513             }
3514 1 50         }PDL_BROADCASTLOOP_END__edit_pathtrace_readdata
    50          
3515 1           } break;
3516 0           case PDL_S: {
3517 0 0         PDL_DECLARE_PARAMS__edit_pathtrace_1(PDL_Short,S,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3518 0 0         PDL_BROADCASTLOOP_START__edit_pathtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3519             int i,j,p, tmp;
3520 0           (len_datap)[0] = 0;
3521 0 0         for (p=0, i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3522 0           int op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3523 0           (ai_datap)[0+(__inc_ai_L*(p))] = i;
3524 0           (bi_datap)[0+(__inc_bi_L*(p))] = j;
3525 0           (ops_datap)[0+(__inc_ops_L*(p))] = op;
3526 0           switch (op) {
3527 0           case ALIGN_OP_INSERT1: --i; break;
3528 0           case ALIGN_OP_INSERT2: --j; break;
3529 0           case ALIGN_OP_MATCH:
3530             case ALIGN_OP_SUBSTITUTE:
3531 0           default: --i; --j; break;
3532             }
3533             }
3534 0           (len_datap)[0] = p;
3535 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3536 0           int endp = (len_datap)[0]-p-1;
3537 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
3538 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
3539 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
3540 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
3541 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
3542 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
3543 0           tmp = (ops_datap)[0+(__inc_ops_L*(p))];
3544 0           (ops_datap)[0+(__inc_ops_L*(p))] = (ops_datap)[0+(__inc_ops_L*(endp))];
3545 0           (ops_datap)[0+(__inc_ops_L*(endp))] = tmp;
3546             }
3547 0 0         }PDL_BROADCASTLOOP_END__edit_pathtrace_readdata
    0          
3548 0           } break;
3549 0           case PDL_US: {
3550 0 0         PDL_DECLARE_PARAMS__edit_pathtrace_1(PDL_Ushort,U,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3551 0 0         PDL_BROADCASTLOOP_START__edit_pathtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3552             int i,j,p, tmp;
3553 0           (len_datap)[0] = 0;
3554 0 0         for (p=0, i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3555 0           int op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3556 0           (ai_datap)[0+(__inc_ai_L*(p))] = i;
3557 0           (bi_datap)[0+(__inc_bi_L*(p))] = j;
3558 0           (ops_datap)[0+(__inc_ops_L*(p))] = op;
3559 0           switch (op) {
3560 0           case ALIGN_OP_INSERT1: --i; break;
3561 0           case ALIGN_OP_INSERT2: --j; break;
3562 0           case ALIGN_OP_MATCH:
3563             case ALIGN_OP_SUBSTITUTE:
3564 0           default: --i; --j; break;
3565             }
3566             }
3567 0           (len_datap)[0] = p;
3568 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3569 0           int endp = (len_datap)[0]-p-1;
3570 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
3571 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
3572 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
3573 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
3574 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
3575 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
3576 0           tmp = (ops_datap)[0+(__inc_ops_L*(p))];
3577 0           (ops_datap)[0+(__inc_ops_L*(p))] = (ops_datap)[0+(__inc_ops_L*(endp))];
3578 0           (ops_datap)[0+(__inc_ops_L*(endp))] = tmp;
3579             }
3580 0 0         }PDL_BROADCASTLOOP_END__edit_pathtrace_readdata
    0          
3581 0           } break;
3582 0           case PDL_L: {
3583 0 0         PDL_DECLARE_PARAMS__edit_pathtrace_1(PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3584 0 0         PDL_BROADCASTLOOP_START__edit_pathtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3585             int i,j,p, tmp;
3586 0           (len_datap)[0] = 0;
3587 0 0         for (p=0, i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3588 0           int op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3589 0           (ai_datap)[0+(__inc_ai_L*(p))] = i;
3590 0           (bi_datap)[0+(__inc_bi_L*(p))] = j;
3591 0           (ops_datap)[0+(__inc_ops_L*(p))] = op;
3592 0           switch (op) {
3593 0           case ALIGN_OP_INSERT1: --i; break;
3594 0           case ALIGN_OP_INSERT2: --j; break;
3595 0           case ALIGN_OP_MATCH:
3596             case ALIGN_OP_SUBSTITUTE:
3597 0           default: --i; --j; break;
3598             }
3599             }
3600 0           (len_datap)[0] = p;
3601 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3602 0           int endp = (len_datap)[0]-p-1;
3603 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
3604 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
3605 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
3606 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
3607 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
3608 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
3609 0           tmp = (ops_datap)[0+(__inc_ops_L*(p))];
3610 0           (ops_datap)[0+(__inc_ops_L*(p))] = (ops_datap)[0+(__inc_ops_L*(endp))];
3611 0           (ops_datap)[0+(__inc_ops_L*(endp))] = tmp;
3612             }
3613 0 0         }PDL_BROADCASTLOOP_END__edit_pathtrace_readdata
    0          
3614 0           } break;
3615 0           case PDL_UL: {
3616 0 0         PDL_DECLARE_PARAMS__edit_pathtrace_1(PDL_ULong,K,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3617 0 0         PDL_BROADCASTLOOP_START__edit_pathtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3618             int i,j,p, tmp;
3619 0           (len_datap)[0] = 0;
3620 0 0         for (p=0, i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3621 0           int op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3622 0           (ai_datap)[0+(__inc_ai_L*(p))] = i;
3623 0           (bi_datap)[0+(__inc_bi_L*(p))] = j;
3624 0           (ops_datap)[0+(__inc_ops_L*(p))] = op;
3625 0           switch (op) {
3626 0           case ALIGN_OP_INSERT1: --i; break;
3627 0           case ALIGN_OP_INSERT2: --j; break;
3628 0           case ALIGN_OP_MATCH:
3629             case ALIGN_OP_SUBSTITUTE:
3630 0           default: --i; --j; break;
3631             }
3632             }
3633 0           (len_datap)[0] = p;
3634 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3635 0           int endp = (len_datap)[0]-p-1;
3636 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
3637 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
3638 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
3639 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
3640 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
3641 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
3642 0           tmp = (ops_datap)[0+(__inc_ops_L*(p))];
3643 0           (ops_datap)[0+(__inc_ops_L*(p))] = (ops_datap)[0+(__inc_ops_L*(endp))];
3644 0           (ops_datap)[0+(__inc_ops_L*(endp))] = tmp;
3645             }
3646 0 0         }PDL_BROADCASTLOOP_END__edit_pathtrace_readdata
    0          
3647 0           } break;
3648 0           case PDL_IND: {
3649 0 0         PDL_DECLARE_PARAMS__edit_pathtrace_1(PDL_Indx,N,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3650 0 0         PDL_BROADCASTLOOP_START__edit_pathtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3651             int i,j,p, tmp;
3652 0           (len_datap)[0] = 0;
3653 0 0         for (p=0, i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3654 0           int op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3655 0           (ai_datap)[0+(__inc_ai_L*(p))] = i;
3656 0           (bi_datap)[0+(__inc_bi_L*(p))] = j;
3657 0           (ops_datap)[0+(__inc_ops_L*(p))] = op;
3658 0           switch (op) {
3659 0           case ALIGN_OP_INSERT1: --i; break;
3660 0           case ALIGN_OP_INSERT2: --j; break;
3661 0           case ALIGN_OP_MATCH:
3662             case ALIGN_OP_SUBSTITUTE:
3663 0           default: --i; --j; break;
3664             }
3665             }
3666 0           (len_datap)[0] = p;
3667 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3668 0           int endp = (len_datap)[0]-p-1;
3669 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
3670 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
3671 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
3672 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
3673 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
3674 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
3675 0           tmp = (ops_datap)[0+(__inc_ops_L*(p))];
3676 0           (ops_datap)[0+(__inc_ops_L*(p))] = (ops_datap)[0+(__inc_ops_L*(endp))];
3677 0           (ops_datap)[0+(__inc_ops_L*(endp))] = tmp;
3678             }
3679 0 0         }PDL_BROADCASTLOOP_END__edit_pathtrace_readdata
    0          
3680 0           } break;
3681 0           case PDL_ULL: {
3682 0 0         PDL_DECLARE_PARAMS__edit_pathtrace_1(PDL_ULongLong,P,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3683 0 0         PDL_BROADCASTLOOP_START__edit_pathtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3684             int i,j,p, tmp;
3685 0           (len_datap)[0] = 0;
3686 0 0         for (p=0, i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3687 0           int op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3688 0           (ai_datap)[0+(__inc_ai_L*(p))] = i;
3689 0           (bi_datap)[0+(__inc_bi_L*(p))] = j;
3690 0           (ops_datap)[0+(__inc_ops_L*(p))] = op;
3691 0           switch (op) {
3692 0           case ALIGN_OP_INSERT1: --i; break;
3693 0           case ALIGN_OP_INSERT2: --j; break;
3694 0           case ALIGN_OP_MATCH:
3695             case ALIGN_OP_SUBSTITUTE:
3696 0           default: --i; --j; break;
3697             }
3698             }
3699 0           (len_datap)[0] = p;
3700 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3701 0           int endp = (len_datap)[0]-p-1;
3702 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
3703 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
3704 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
3705 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
3706 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
3707 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
3708 0           tmp = (ops_datap)[0+(__inc_ops_L*(p))];
3709 0           (ops_datap)[0+(__inc_ops_L*(p))] = (ops_datap)[0+(__inc_ops_L*(endp))];
3710 0           (ops_datap)[0+(__inc_ops_L*(endp))] = tmp;
3711             }
3712 0 0         }PDL_BROADCASTLOOP_END__edit_pathtrace_readdata
    0          
3713 0           } break;
3714 0           case PDL_LL: {
3715 0 0         PDL_DECLARE_PARAMS__edit_pathtrace_1(PDL_LongLong,Q,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3716 0 0         PDL_BROADCASTLOOP_START__edit_pathtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3717             int i,j,p, tmp;
3718 0           (len_datap)[0] = 0;
3719 0 0         for (p=0, i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3720 0           int op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3721 0           (ai_datap)[0+(__inc_ai_L*(p))] = i;
3722 0           (bi_datap)[0+(__inc_bi_L*(p))] = j;
3723 0           (ops_datap)[0+(__inc_ops_L*(p))] = op;
3724 0           switch (op) {
3725 0           case ALIGN_OP_INSERT1: --i; break;
3726 0           case ALIGN_OP_INSERT2: --j; break;
3727 0           case ALIGN_OP_MATCH:
3728             case ALIGN_OP_SUBSTITUTE:
3729 0           default: --i; --j; break;
3730             }
3731             }
3732 0           (len_datap)[0] = p;
3733 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3734 0           int endp = (len_datap)[0]-p-1;
3735 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
3736 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
3737 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
3738 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
3739 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
3740 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
3741 0           tmp = (ops_datap)[0+(__inc_ops_L*(p))];
3742 0           (ops_datap)[0+(__inc_ops_L*(p))] = (ops_datap)[0+(__inc_ops_L*(endp))];
3743 0           (ops_datap)[0+(__inc_ops_L*(endp))] = tmp;
3744             }
3745 0 0         }PDL_BROADCASTLOOP_END__edit_pathtrace_readdata
    0          
3746 0           } break;
3747 0           case PDL_F: {
3748 0 0         PDL_DECLARE_PARAMS__edit_pathtrace_1(PDL_Float,F,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3749 0 0         PDL_BROADCASTLOOP_START__edit_pathtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3750             int i,j,p, tmp;
3751 0           (len_datap)[0] = 0;
3752 0 0         for (p=0, i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3753 0           int op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3754 0           (ai_datap)[0+(__inc_ai_L*(p))] = i;
3755 0           (bi_datap)[0+(__inc_bi_L*(p))] = j;
3756 0           (ops_datap)[0+(__inc_ops_L*(p))] = op;
3757 0           switch (op) {
3758 0           case ALIGN_OP_INSERT1: --i; break;
3759 0           case ALIGN_OP_INSERT2: --j; break;
3760 0           case ALIGN_OP_MATCH:
3761             case ALIGN_OP_SUBSTITUTE:
3762 0           default: --i; --j; break;
3763             }
3764             }
3765 0           (len_datap)[0] = p;
3766 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3767 0           int endp = (len_datap)[0]-p-1;
3768 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
3769 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
3770 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
3771 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
3772 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
3773 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
3774 0           tmp = (ops_datap)[0+(__inc_ops_L*(p))];
3775 0           (ops_datap)[0+(__inc_ops_L*(p))] = (ops_datap)[0+(__inc_ops_L*(endp))];
3776 0           (ops_datap)[0+(__inc_ops_L*(endp))] = tmp;
3777             }
3778 0 0         }PDL_BROADCASTLOOP_END__edit_pathtrace_readdata
    0          
3779 0           } break;
3780 0           case PDL_D: {
3781 0 0         PDL_DECLARE_PARAMS__edit_pathtrace_1(PDL_Double,D,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3782 0 0         PDL_BROADCASTLOOP_START__edit_pathtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3783             int i,j,p, tmp;
3784 0           (len_datap)[0] = 0;
3785 0 0         for (p=0, i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3786 0           int op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3787 0           (ai_datap)[0+(__inc_ai_L*(p))] = i;
3788 0           (bi_datap)[0+(__inc_bi_L*(p))] = j;
3789 0           (ops_datap)[0+(__inc_ops_L*(p))] = op;
3790 0           switch (op) {
3791 0           case ALIGN_OP_INSERT1: --i; break;
3792 0           case ALIGN_OP_INSERT2: --j; break;
3793 0           case ALIGN_OP_MATCH:
3794             case ALIGN_OP_SUBSTITUTE:
3795 0           default: --i; --j; break;
3796             }
3797             }
3798 0           (len_datap)[0] = p;
3799 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3800 0           int endp = (len_datap)[0]-p-1;
3801 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
3802 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
3803 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
3804 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
3805 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
3806 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
3807 0           tmp = (ops_datap)[0+(__inc_ops_L*(p))];
3808 0           (ops_datap)[0+(__inc_ops_L*(p))] = (ops_datap)[0+(__inc_ops_L*(endp))];
3809 0           (ops_datap)[0+(__inc_ops_L*(endp))] = tmp;
3810             }
3811 0 0         }PDL_BROADCASTLOOP_END__edit_pathtrace_readdata
    0          
3812 0           } break;
3813 0           case PDL_LD: {
3814 0 0         PDL_DECLARE_PARAMS__edit_pathtrace_1(PDL_LDouble,E,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3815 0 0         PDL_BROADCASTLOOP_START__edit_pathtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3816             int i,j,p, tmp;
3817 0           (len_datap)[0] = 0;
3818 0 0         for (p=0, i=__params->ifinal,j=__params->jfinal; p < __privtrans->ind_sizes[0] && (i>0 || j>0); p++) {
    0          
    0          
3819 0           int op = (align_datap)[0+(__inc_align_N1*(i))+(__inc_align_M1*(j))];
3820 0           (ai_datap)[0+(__inc_ai_L*(p))] = i;
3821 0           (bi_datap)[0+(__inc_bi_L*(p))] = j;
3822 0           (ops_datap)[0+(__inc_ops_L*(p))] = op;
3823 0           switch (op) {
3824 0           case ALIGN_OP_INSERT1: --i; break;
3825 0           case ALIGN_OP_INSERT2: --j; break;
3826 0           case ALIGN_OP_MATCH:
3827             case ALIGN_OP_SUBSTITUTE:
3828 0           default: --i; --j; break;
3829             }
3830             }
3831 0           (len_datap)[0] = p;
3832 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
3833 0           int endp = (len_datap)[0]-p-1;
3834 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
3835 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
3836 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
3837 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
3838 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
3839 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
3840 0           tmp = (ops_datap)[0+(__inc_ops_L*(p))];
3841 0           (ops_datap)[0+(__inc_ops_L*(p))] = (ops_datap)[0+(__inc_ops_L*(endp))];
3842 0           (ops_datap)[0+(__inc_ops_L*(endp))] = tmp;
3843             }
3844 0 0         }PDL_BROADCASTLOOP_END__edit_pathtrace_readdata
    0          
3845 0           } break;
3846 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in _edit_pathtrace: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
3847             }
3848             #undef PDL_IF_BAD
3849 1           return PDL_err;
3850             }
3851              
3852             static pdl_datatypes pdl__edit_pathtrace_vtable_gentypes[] = { PDL_SB, PDL_B, PDL_S, PDL_US, PDL_L, PDL_UL, PDL_IND, PDL_ULL, PDL_LL, PDL_F, PDL_D, PDL_LD, -1 };
3853             static PDL_Indx pdl__edit_pathtrace_vtable_realdims[] = { 2, 1, 1, 1, 0 };
3854             static char *pdl__edit_pathtrace_vtable_parnames[] = { "align","ai","bi","ops","len" };
3855             static short pdl__edit_pathtrace_vtable_parflags[] = {
3856             0,
3857             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE,
3858             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE,
3859             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE,
3860             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
3861             };
3862             static pdl_datatypes pdl__edit_pathtrace_vtable_partypes[] = { -1, PDL_L, PDL_L, PDL_L, PDL_L };
3863             static PDL_Indx pdl__edit_pathtrace_vtable_realdims_starts[] = { 0, 2, 3, 4, 5 };
3864             static PDL_Indx pdl__edit_pathtrace_vtable_realdims_ind_ids[] = { 2, 1, 0, 0, 0 };
3865             static char *pdl__edit_pathtrace_vtable_indnames[] = { "L","M1","N1" };
3866             pdl_transvtable pdl__edit_pathtrace_vtable = {
3867             PDL_TRANS_DO_BROADCAST, 0, pdl__edit_pathtrace_vtable_gentypes, 1, 5, NULL /*CORE21*/,
3868             pdl__edit_pathtrace_vtable_realdims, pdl__edit_pathtrace_vtable_parnames,
3869             pdl__edit_pathtrace_vtable_parflags, pdl__edit_pathtrace_vtable_partypes,
3870             pdl__edit_pathtrace_vtable_realdims_starts, pdl__edit_pathtrace_vtable_realdims_ind_ids, 5,
3871             3, pdl__edit_pathtrace_vtable_indnames,
3872             NULL, pdl__edit_pathtrace_readdata, NULL,
3873             NULL,
3874             sizeof(pdl_params__edit_pathtrace),"PDL::EditDistance::_edit_pathtrace"
3875             };
3876              
3877              
3878 1           pdl_error pdl_run__edit_pathtrace(pdl *align,pdl *ai,pdl *bi,pdl *ops,pdl *len,int ifinal,int jfinal) {
3879 1           pdl_error PDL_err = {0, NULL, 0};
3880 1 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
3881 1           pdl_trans *__privtrans = PDL->create_trans(&pdl__edit_pathtrace_vtable);
3882 1 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
3883 1           pdl_params__edit_pathtrace *__params = __privtrans->params;
3884 1           __privtrans->pdls[0] = align;
3885 1           __privtrans->pdls[1] = ai;
3886 1           __privtrans->pdls[2] = bi;
3887 1           __privtrans->pdls[3] = ops;
3888 1           __privtrans->pdls[4] = len;
3889 1 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
3890 1           (__params->ifinal) = (ifinal); /* CType.get_copy */
3891 1           (__params->jfinal) = (jfinal); /* CType.get_copy */
3892 1 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
3893 1           return PDL_err;
3894             }
3895              
3896             #line 1857 "lib/PDL/PP.pm"
3897             pdl_error pdl__edit_lcs_readdata(pdl_trans *__privtrans) {
3898             pdl_error PDL_err = {0, NULL, 0};
3899             #line 3900 "EditDistance.xs"
3900 1 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in _edit_lcs:" "broadcast.incs NULL");
3901             /* broadcastloop declarations */
3902             int __brcloopval;
3903             register PDL_Indx __tind0,__tind1; /* counters along dim */
3904 1           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
3905             /* dims here are how many steps along those dims */
3906 1           register PDL_Indx __tinc0_a1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
3907 1           register PDL_Indx __tinc0_b1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
3908 1           register PDL_Indx __tinc0_lcs = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
3909 1           register PDL_Indx __tinc1_a1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
3910 1           register PDL_Indx __tinc1_b1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
3911 1           register PDL_Indx __tinc1_lcs = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
3912             #define PDL_BROADCASTLOOP_START__edit_lcs_readdata PDL_BROADCASTLOOP_START( \
3913             readdata, \
3914             __privtrans->broadcast, \
3915             __privtrans->vtable, \
3916             a1_datap += __offsp[0]; \
3917             b1_datap += __offsp[1]; \
3918             lcs_datap += __offsp[2]; \
3919             , \
3920             ( ,a1_datap += __tinc1_a1 - __tinc0_a1 * __tdims0 \
3921             ,b1_datap += __tinc1_b1 - __tinc0_b1 * __tdims0 \
3922             ,lcs_datap += __tinc1_lcs - __tinc0_lcs * __tdims0 \
3923             ), \
3924             ( ,a1_datap += __tinc0_a1 \
3925             ,b1_datap += __tinc0_b1 \
3926             ,lcs_datap += __tinc0_lcs \
3927             ) \
3928             )
3929             #define PDL_BROADCASTLOOP_END__edit_lcs_readdata PDL_BROADCASTLOOP_END( \
3930             __privtrans->broadcast, \
3931             a1_datap -= __tinc1_a1 * __tdims1 + __offsp[0]; \
3932             b1_datap -= __tinc1_b1 * __tdims1 + __offsp[1]; \
3933             lcs_datap -= __tinc1_lcs * __tdims1 + __offsp[2]; \
3934             )
3935 1           register PDL_Indx __inc_a1_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a1_N1;
3936 1           register PDL_Indx __inc_b1_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_b1_M1;
3937 1           register PDL_Indx __inc_lcs_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,0)]; (void)__inc_lcs_N1;register PDL_Indx __inc_lcs_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,1)]; (void)__inc_lcs_M1;
3938             #ifndef PDL_DECLARE_PARAMS__edit_lcs_1
3939             #define PDL_DECLARE_PARAMS__edit_lcs_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_lcs,PDL_PPSYM_PARAM_lcs) \
3940             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a1, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
3941             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, b1, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP) \
3942             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_lcs, lcs, (__privtrans->pdls[2]), 1, PDL_PPSYM_PARAM_lcs)
3943             #endif
3944             #define PDL_IF_BAD(t,f) f
3945 1           switch (__privtrans->__datatype) { /* Start generic switch */
3946 0           case PDL_SB: {
3947 0 0         PDL_DECLARE_PARAMS__edit_lcs_1(PDL_SByte,A,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3948 0 0         PDL_BROADCASTLOOP_START__edit_lcs_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3949             int i,j, iprev,jprev;
3950 0 0         for (i=0; i < __privtrans->ind_sizes[1]; i++) { (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(0))] = 0; }
3951 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) { (lcs_datap)[0+(__inc_lcs_N1*(0))+(__inc_lcs_M1*(j))] = 0; }
3952 0 0         for (i=1,iprev=0; i < __privtrans->ind_sizes[1]; i++,iprev++) {
3953 0 0         for (j=1,jprev=0; j < __privtrans->ind_sizes[0]; j++,jprev++) {
3954 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
3955 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(jprev))]+1;
3956             } else {
3957 0           PDL_Long lcs_i_jp = (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))];
3958 0           PDL_Long lcs_ip_j = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))];
3959 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = lcs_i_jp > lcs_ip_j ? lcs_i_jp : lcs_ip_j;
3960             }
3961             }
3962             }
3963 0 0         }PDL_BROADCASTLOOP_END__edit_lcs_readdata
    0          
3964 0           } break;
3965 0           case PDL_B: {
3966 0 0         PDL_DECLARE_PARAMS__edit_lcs_1(PDL_Byte,B,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3967 0 0         PDL_BROADCASTLOOP_START__edit_lcs_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3968             int i,j, iprev,jprev;
3969 0 0         for (i=0; i < __privtrans->ind_sizes[1]; i++) { (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(0))] = 0; }
3970 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) { (lcs_datap)[0+(__inc_lcs_N1*(0))+(__inc_lcs_M1*(j))] = 0; }
3971 0 0         for (i=1,iprev=0; i < __privtrans->ind_sizes[1]; i++,iprev++) {
3972 0 0         for (j=1,jprev=0; j < __privtrans->ind_sizes[0]; j++,jprev++) {
3973 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
3974 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(jprev))]+1;
3975             } else {
3976 0           PDL_Long lcs_i_jp = (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))];
3977 0           PDL_Long lcs_ip_j = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))];
3978 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = lcs_i_jp > lcs_ip_j ? lcs_i_jp : lcs_ip_j;
3979             }
3980             }
3981             }
3982 0 0         }PDL_BROADCASTLOOP_END__edit_lcs_readdata
    0          
3983 0           } break;
3984 0           case PDL_S: {
3985 0 0         PDL_DECLARE_PARAMS__edit_lcs_1(PDL_Short,S,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
3986 0 0         PDL_BROADCASTLOOP_START__edit_lcs_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
3987             int i,j, iprev,jprev;
3988 0 0         for (i=0; i < __privtrans->ind_sizes[1]; i++) { (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(0))] = 0; }
3989 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) { (lcs_datap)[0+(__inc_lcs_N1*(0))+(__inc_lcs_M1*(j))] = 0; }
3990 0 0         for (i=1,iprev=0; i < __privtrans->ind_sizes[1]; i++,iprev++) {
3991 0 0         for (j=1,jprev=0; j < __privtrans->ind_sizes[0]; j++,jprev++) {
3992 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
3993 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(jprev))]+1;
3994             } else {
3995 0           PDL_Long lcs_i_jp = (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))];
3996 0           PDL_Long lcs_ip_j = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))];
3997 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = lcs_i_jp > lcs_ip_j ? lcs_i_jp : lcs_ip_j;
3998             }
3999             }
4000             }
4001 0 0         }PDL_BROADCASTLOOP_END__edit_lcs_readdata
    0          
4002 0           } break;
4003 0           case PDL_US: {
4004 0 0         PDL_DECLARE_PARAMS__edit_lcs_1(PDL_Ushort,U,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4005 0 0         PDL_BROADCASTLOOP_START__edit_lcs_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4006             int i,j, iprev,jprev;
4007 0 0         for (i=0; i < __privtrans->ind_sizes[1]; i++) { (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(0))] = 0; }
4008 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) { (lcs_datap)[0+(__inc_lcs_N1*(0))+(__inc_lcs_M1*(j))] = 0; }
4009 0 0         for (i=1,iprev=0; i < __privtrans->ind_sizes[1]; i++,iprev++) {
4010 0 0         for (j=1,jprev=0; j < __privtrans->ind_sizes[0]; j++,jprev++) {
4011 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
4012 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(jprev))]+1;
4013             } else {
4014 0           PDL_Long lcs_i_jp = (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))];
4015 0           PDL_Long lcs_ip_j = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))];
4016 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = lcs_i_jp > lcs_ip_j ? lcs_i_jp : lcs_ip_j;
4017             }
4018             }
4019             }
4020 0 0         }PDL_BROADCASTLOOP_END__edit_lcs_readdata
    0          
4021 0           } break;
4022 1           case PDL_L: {
4023 1 50         PDL_DECLARE_PARAMS__edit_lcs_1(PDL_Long,L,PDL_Long,L)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
4024 4 50         PDL_BROADCASTLOOP_START__edit_lcs_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
4025             int i,j, iprev,jprev;
4026 7 100         for (i=0; i < __privtrans->ind_sizes[1]; i++) { (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(0))] = 0; }
4027 6 100         for (j=1; j < __privtrans->ind_sizes[0]; j++) { (lcs_datap)[0+(__inc_lcs_N1*(0))+(__inc_lcs_M1*(j))] = 0; }
4028 6 100         for (i=1,iprev=0; i < __privtrans->ind_sizes[1]; i++,iprev++) {
4029 30 100         for (j=1,jprev=0; j < __privtrans->ind_sizes[0]; j++,jprev++) {
4030 25 100         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
4031 5           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(jprev))]+1;
4032             } else {
4033 20           PDL_Long lcs_i_jp = (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))];
4034 20           PDL_Long lcs_ip_j = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))];
4035 20           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = lcs_i_jp > lcs_ip_j ? lcs_i_jp : lcs_ip_j;
4036             }
4037             }
4038             }
4039 1 50         }PDL_BROADCASTLOOP_END__edit_lcs_readdata
    50          
4040 1           } break;
4041 0           case PDL_UL: {
4042 0 0         PDL_DECLARE_PARAMS__edit_lcs_1(PDL_ULong,K,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4043 0 0         PDL_BROADCASTLOOP_START__edit_lcs_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4044             int i,j, iprev,jprev;
4045 0 0         for (i=0; i < __privtrans->ind_sizes[1]; i++) { (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(0))] = 0; }
4046 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) { (lcs_datap)[0+(__inc_lcs_N1*(0))+(__inc_lcs_M1*(j))] = 0; }
4047 0 0         for (i=1,iprev=0; i < __privtrans->ind_sizes[1]; i++,iprev++) {
4048 0 0         for (j=1,jprev=0; j < __privtrans->ind_sizes[0]; j++,jprev++) {
4049 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
4050 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(jprev))]+1;
4051             } else {
4052 0           PDL_Long lcs_i_jp = (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))];
4053 0           PDL_Long lcs_ip_j = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))];
4054 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = lcs_i_jp > lcs_ip_j ? lcs_i_jp : lcs_ip_j;
4055             }
4056             }
4057             }
4058 0 0         }PDL_BROADCASTLOOP_END__edit_lcs_readdata
    0          
4059 0           } break;
4060 0           case PDL_IND: {
4061 0 0         PDL_DECLARE_PARAMS__edit_lcs_1(PDL_Indx,N,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4062 0 0         PDL_BROADCASTLOOP_START__edit_lcs_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4063             int i,j, iprev,jprev;
4064 0 0         for (i=0; i < __privtrans->ind_sizes[1]; i++) { (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(0))] = 0; }
4065 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) { (lcs_datap)[0+(__inc_lcs_N1*(0))+(__inc_lcs_M1*(j))] = 0; }
4066 0 0         for (i=1,iprev=0; i < __privtrans->ind_sizes[1]; i++,iprev++) {
4067 0 0         for (j=1,jprev=0; j < __privtrans->ind_sizes[0]; j++,jprev++) {
4068 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
4069 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(jprev))]+1;
4070             } else {
4071 0           PDL_Long lcs_i_jp = (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))];
4072 0           PDL_Long lcs_ip_j = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))];
4073 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = lcs_i_jp > lcs_ip_j ? lcs_i_jp : lcs_ip_j;
4074             }
4075             }
4076             }
4077 0 0         }PDL_BROADCASTLOOP_END__edit_lcs_readdata
    0          
4078 0           } break;
4079 0           case PDL_ULL: {
4080 0 0         PDL_DECLARE_PARAMS__edit_lcs_1(PDL_ULongLong,P,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4081 0 0         PDL_BROADCASTLOOP_START__edit_lcs_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4082             int i,j, iprev,jprev;
4083 0 0         for (i=0; i < __privtrans->ind_sizes[1]; i++) { (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(0))] = 0; }
4084 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) { (lcs_datap)[0+(__inc_lcs_N1*(0))+(__inc_lcs_M1*(j))] = 0; }
4085 0 0         for (i=1,iprev=0; i < __privtrans->ind_sizes[1]; i++,iprev++) {
4086 0 0         for (j=1,jprev=0; j < __privtrans->ind_sizes[0]; j++,jprev++) {
4087 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
4088 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(jprev))]+1;
4089             } else {
4090 0           PDL_Long lcs_i_jp = (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))];
4091 0           PDL_Long lcs_ip_j = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))];
4092 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = lcs_i_jp > lcs_ip_j ? lcs_i_jp : lcs_ip_j;
4093             }
4094             }
4095             }
4096 0 0         }PDL_BROADCASTLOOP_END__edit_lcs_readdata
    0          
4097 0           } break;
4098 0           case PDL_LL: {
4099 0 0         PDL_DECLARE_PARAMS__edit_lcs_1(PDL_LongLong,Q,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4100 0 0         PDL_BROADCASTLOOP_START__edit_lcs_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4101             int i,j, iprev,jprev;
4102 0 0         for (i=0; i < __privtrans->ind_sizes[1]; i++) { (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(0))] = 0; }
4103 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) { (lcs_datap)[0+(__inc_lcs_N1*(0))+(__inc_lcs_M1*(j))] = 0; }
4104 0 0         for (i=1,iprev=0; i < __privtrans->ind_sizes[1]; i++,iprev++) {
4105 0 0         for (j=1,jprev=0; j < __privtrans->ind_sizes[0]; j++,jprev++) {
4106 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
4107 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(jprev))]+1;
4108             } else {
4109 0           PDL_Long lcs_i_jp = (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))];
4110 0           PDL_Long lcs_ip_j = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))];
4111 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = lcs_i_jp > lcs_ip_j ? lcs_i_jp : lcs_ip_j;
4112             }
4113             }
4114             }
4115 0 0         }PDL_BROADCASTLOOP_END__edit_lcs_readdata
    0          
4116 0           } break;
4117 0           case PDL_F: {
4118 0 0         PDL_DECLARE_PARAMS__edit_lcs_1(PDL_Float,F,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4119 0 0         PDL_BROADCASTLOOP_START__edit_lcs_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4120             int i,j, iprev,jprev;
4121 0 0         for (i=0; i < __privtrans->ind_sizes[1]; i++) { (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(0))] = 0; }
4122 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) { (lcs_datap)[0+(__inc_lcs_N1*(0))+(__inc_lcs_M1*(j))] = 0; }
4123 0 0         for (i=1,iprev=0; i < __privtrans->ind_sizes[1]; i++,iprev++) {
4124 0 0         for (j=1,jprev=0; j < __privtrans->ind_sizes[0]; j++,jprev++) {
4125 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
4126 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(jprev))]+1;
4127             } else {
4128 0           PDL_Long lcs_i_jp = (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))];
4129 0           PDL_Long lcs_ip_j = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))];
4130 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = lcs_i_jp > lcs_ip_j ? lcs_i_jp : lcs_ip_j;
4131             }
4132             }
4133             }
4134 0 0         }PDL_BROADCASTLOOP_END__edit_lcs_readdata
    0          
4135 0           } break;
4136 0           case PDL_D: {
4137 0 0         PDL_DECLARE_PARAMS__edit_lcs_1(PDL_Double,D,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4138 0 0         PDL_BROADCASTLOOP_START__edit_lcs_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4139             int i,j, iprev,jprev;
4140 0 0         for (i=0; i < __privtrans->ind_sizes[1]; i++) { (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(0))] = 0; }
4141 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) { (lcs_datap)[0+(__inc_lcs_N1*(0))+(__inc_lcs_M1*(j))] = 0; }
4142 0 0         for (i=1,iprev=0; i < __privtrans->ind_sizes[1]; i++,iprev++) {
4143 0 0         for (j=1,jprev=0; j < __privtrans->ind_sizes[0]; j++,jprev++) {
4144 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
4145 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(jprev))]+1;
4146             } else {
4147 0           PDL_Long lcs_i_jp = (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))];
4148 0           PDL_Long lcs_ip_j = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))];
4149 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = lcs_i_jp > lcs_ip_j ? lcs_i_jp : lcs_ip_j;
4150             }
4151             }
4152             }
4153 0 0         }PDL_BROADCASTLOOP_END__edit_lcs_readdata
    0          
4154 0           } break;
4155 0           case PDL_LD: {
4156 0 0         PDL_DECLARE_PARAMS__edit_lcs_1(PDL_LDouble,E,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4157 0 0         PDL_BROADCASTLOOP_START__edit_lcs_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4158             int i,j, iprev,jprev;
4159 0 0         for (i=0; i < __privtrans->ind_sizes[1]; i++) { (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(0))] = 0; }
4160 0 0         for (j=1; j < __privtrans->ind_sizes[0]; j++) { (lcs_datap)[0+(__inc_lcs_N1*(0))+(__inc_lcs_M1*(j))] = 0; }
4161 0 0         for (i=1,iprev=0; i < __privtrans->ind_sizes[1]; i++,iprev++) {
4162 0 0         for (j=1,jprev=0; j < __privtrans->ind_sizes[0]; j++,jprev++) {
4163 0 0         if ((a1_datap)[0+(__inc_a1_N1*(i))]==(b1_datap)[0+(__inc_b1_M1*(j))]) {
4164 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(jprev))]+1;
4165             } else {
4166 0           PDL_Long lcs_i_jp = (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))];
4167 0           PDL_Long lcs_ip_j = (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))];
4168 0           (lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(j))] = lcs_i_jp > lcs_ip_j ? lcs_i_jp : lcs_ip_j;
4169             }
4170             }
4171             }
4172 0 0         }PDL_BROADCASTLOOP_END__edit_lcs_readdata
    0          
4173 0           } break;
4174 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in _edit_lcs: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
4175             }
4176             #undef PDL_IF_BAD
4177 1           return PDL_err;
4178             }
4179              
4180             static pdl_datatypes pdl__edit_lcs_vtable_gentypes[] = { PDL_SB, PDL_B, PDL_S, PDL_US, PDL_L, PDL_UL, PDL_IND, PDL_ULL, PDL_LL, PDL_F, PDL_D, PDL_LD, -1 };
4181             static PDL_Indx pdl__edit_lcs_vtable_realdims[] = { 1, 1, 2 };
4182             static char *pdl__edit_lcs_vtable_parnames[] = { "a1","b1","lcs" };
4183             static short pdl__edit_lcs_vtable_parflags[] = {
4184             0,
4185             0,
4186             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
4187             };
4188             static pdl_datatypes pdl__edit_lcs_vtable_partypes[] = { -1, -1, PDL_L };
4189             static PDL_Indx pdl__edit_lcs_vtable_realdims_starts[] = { 0, 1, 2 };
4190             static PDL_Indx pdl__edit_lcs_vtable_realdims_ind_ids[] = { 1, 0, 1, 0 };
4191             static char *pdl__edit_lcs_vtable_indnames[] = { "M1","N1" };
4192             pdl_transvtable pdl__edit_lcs_vtable = {
4193             PDL_TRANS_DO_BROADCAST, 0, pdl__edit_lcs_vtable_gentypes, 2, 3, NULL /*CORE21*/,
4194             pdl__edit_lcs_vtable_realdims, pdl__edit_lcs_vtable_parnames,
4195             pdl__edit_lcs_vtable_parflags, pdl__edit_lcs_vtable_partypes,
4196             pdl__edit_lcs_vtable_realdims_starts, pdl__edit_lcs_vtable_realdims_ind_ids, 4,
4197             2, pdl__edit_lcs_vtable_indnames,
4198             NULL, pdl__edit_lcs_readdata, NULL,
4199             NULL,
4200             0,"PDL::EditDistance::_edit_lcs"
4201             };
4202              
4203              
4204 1           pdl_error pdl_run__edit_lcs(pdl *a1,pdl *b1,pdl *lcs) {
4205 1           pdl_error PDL_err = {0, NULL, 0};
4206 1 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
4207 1           pdl_trans *__privtrans = PDL->create_trans(&pdl__edit_lcs_vtable);
4208 1 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
4209 1           __privtrans->pdls[0] = a1;
4210 1           __privtrans->pdls[1] = b1;
4211 1           __privtrans->pdls[2] = lcs;
4212 1 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
4213 1 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
4214 1           return PDL_err;
4215             }
4216              
4217             #line 1857 "lib/PDL/PP.pm"
4218             pdl_error pdl__lcs_backtrace_readdata(pdl_trans *__privtrans) {
4219             pdl_error PDL_err = {0, NULL, 0};
4220             #line 4221 "EditDistance.xs"
4221 1 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in _lcs_backtrace:" "broadcast.incs NULL");
4222             /* broadcastloop declarations */
4223             int __brcloopval;
4224             register PDL_Indx __tind0,__tind1; /* counters along dim */
4225 1           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
4226             /* dims here are how many steps along those dims */
4227 1           register PDL_Indx __tinc0_a1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
4228 1           register PDL_Indx __tinc0_b1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
4229 1           register PDL_Indx __tinc0_lcs = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
4230 1           register PDL_Indx __tinc0_ifinal = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,0);
4231 1           register PDL_Indx __tinc0_jfinal = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,0);
4232 1           register PDL_Indx __tinc0_ai = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,5,0);
4233 1           register PDL_Indx __tinc0_bi = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,6,0);
4234 1           register PDL_Indx __tinc0_len = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,7,0);
4235 1           register PDL_Indx __tinc1_a1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
4236 1           register PDL_Indx __tinc1_b1 = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
4237 1           register PDL_Indx __tinc1_lcs = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
4238 1           register PDL_Indx __tinc1_ifinal = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,1);
4239 1           register PDL_Indx __tinc1_jfinal = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,1);
4240 1           register PDL_Indx __tinc1_ai = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,5,1);
4241 1           register PDL_Indx __tinc1_bi = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,6,1);
4242 1           register PDL_Indx __tinc1_len = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,7,1);
4243             #define PDL_BROADCASTLOOP_START__lcs_backtrace_readdata PDL_BROADCASTLOOP_START( \
4244             readdata, \
4245             __privtrans->broadcast, \
4246             __privtrans->vtable, \
4247             a1_datap += __offsp[0]; \
4248             b1_datap += __offsp[1]; \
4249             lcs_datap += __offsp[2]; \
4250             ifinal_datap += __offsp[3]; \
4251             jfinal_datap += __offsp[4]; \
4252             ai_datap += __offsp[5]; \
4253             bi_datap += __offsp[6]; \
4254             len_datap += __offsp[7]; \
4255             , \
4256             ( ,a1_datap += __tinc1_a1 - __tinc0_a1 * __tdims0 \
4257             ,b1_datap += __tinc1_b1 - __tinc0_b1 * __tdims0 \
4258             ,lcs_datap += __tinc1_lcs - __tinc0_lcs * __tdims0 \
4259             ,ifinal_datap += __tinc1_ifinal - __tinc0_ifinal * __tdims0 \
4260             ,jfinal_datap += __tinc1_jfinal - __tinc0_jfinal * __tdims0 \
4261             ,ai_datap += __tinc1_ai - __tinc0_ai * __tdims0 \
4262             ,bi_datap += __tinc1_bi - __tinc0_bi * __tdims0 \
4263             ,len_datap += __tinc1_len - __tinc0_len * __tdims0 \
4264             ), \
4265             ( ,a1_datap += __tinc0_a1 \
4266             ,b1_datap += __tinc0_b1 \
4267             ,lcs_datap += __tinc0_lcs \
4268             ,ifinal_datap += __tinc0_ifinal \
4269             ,jfinal_datap += __tinc0_jfinal \
4270             ,ai_datap += __tinc0_ai \
4271             ,bi_datap += __tinc0_bi \
4272             ,len_datap += __tinc0_len \
4273             ) \
4274             )
4275             #define PDL_BROADCASTLOOP_END__lcs_backtrace_readdata PDL_BROADCASTLOOP_END( \
4276             __privtrans->broadcast, \
4277             a1_datap -= __tinc1_a1 * __tdims1 + __offsp[0]; \
4278             b1_datap -= __tinc1_b1 * __tdims1 + __offsp[1]; \
4279             lcs_datap -= __tinc1_lcs * __tdims1 + __offsp[2]; \
4280             ifinal_datap -= __tinc1_ifinal * __tdims1 + __offsp[3]; \
4281             jfinal_datap -= __tinc1_jfinal * __tdims1 + __offsp[4]; \
4282             ai_datap -= __tinc1_ai * __tdims1 + __offsp[5]; \
4283             bi_datap -= __tinc1_bi * __tdims1 + __offsp[6]; \
4284             len_datap -= __tinc1_len * __tdims1 + __offsp[7]; \
4285             )
4286 1           register PDL_Indx __inc_a1_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a1_N1;
4287 1           register PDL_Indx __inc_ai_L = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,5,0)]; (void)__inc_ai_L;
4288 1           register PDL_Indx __inc_b1_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_b1_M1;
4289 1           register PDL_Indx __inc_bi_L = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,6,0)]; (void)__inc_bi_L;
4290 1           register PDL_Indx __inc_lcs_N1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,0)]; (void)__inc_lcs_N1;register PDL_Indx __inc_lcs_M1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,1)]; (void)__inc_lcs_M1;
4291             #ifndef PDL_DECLARE_PARAMS__lcs_backtrace_1
4292             #define PDL_DECLARE_PARAMS__lcs_backtrace_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_lcs,PDL_PPSYM_PARAM_lcs,PDL_TYPE_PARAM_ifinal,PDL_PPSYM_PARAM_ifinal,PDL_TYPE_PARAM_jfinal,PDL_PPSYM_PARAM_jfinal,PDL_TYPE_PARAM_len,PDL_PPSYM_PARAM_len) \
4293             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a1, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
4294             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, b1, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP) \
4295             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_lcs, lcs, (__privtrans->pdls[2]), 1, PDL_PPSYM_PARAM_lcs) \
4296             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_ifinal, ifinal, (__privtrans->pdls[3]), 1, PDL_PPSYM_PARAM_ifinal) \
4297             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_jfinal, jfinal, (__privtrans->pdls[4]), 1, PDL_PPSYM_PARAM_jfinal) \
4298             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, ai, (__privtrans->pdls[5]), 1, PDL_PPSYM_OP) \
4299             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, bi, (__privtrans->pdls[6]), 1, PDL_PPSYM_OP) \
4300             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_len, len, (__privtrans->pdls[7]), 1, PDL_PPSYM_PARAM_len)
4301             #endif
4302             #define PDL_IF_BAD(t,f) f
4303 1           switch (__privtrans->__datatype) { /* Start generic switch */
4304 0           case PDL_SB: {
4305 0 0         PDL_DECLARE_PARAMS__lcs_backtrace_1(PDL_SByte,A,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4306 0 0         PDL_BROADCASTLOOP_START__lcs_backtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4307             int i,j,p, iprev,jprev, tmp;
4308 0           (len_datap)[0] = 0;
4309 0 0         for (p=0, i=(ifinal_datap)[0], j=(jfinal_datap)[0]; p < __privtrans->ind_sizes[0] && i>0 && j>0; ) {
    0          
    0          
4310 0           PDL_SByte a1i = (a1_datap)[0+(__inc_a1_N1*(i))];
4311 0           PDL_SByte b1j = (b1_datap)[0+(__inc_b1_M1*(j))];
4312 0           iprev=i-1;
4313 0           jprev=j-1;
4314 0 0         if (a1i==b1j) {
4315 0           (ai_datap)[0+(__inc_ai_L*(p))] = iprev;
4316 0           (bi_datap)[0+(__inc_bi_L*(p))] = jprev;
4317 0           --i;
4318 0           --j;
4319 0           ++p;
4320 0 0         } else if ((lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))] > (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))]) {
4321 0           --j;
4322             } else {
4323 0           --i;
4324             }
4325             }
4326 0           (len_datap)[0] = p;
4327 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
4328 0           int endp = (len_datap)[0]-p-1;
4329 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
4330 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
4331 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
4332 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
4333 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
4334 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
4335             }
4336 0 0         }PDL_BROADCASTLOOP_END__lcs_backtrace_readdata
    0          
4337 0           } break;
4338 0           case PDL_B: {
4339 0 0         PDL_DECLARE_PARAMS__lcs_backtrace_1(PDL_Byte,B,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4340 0 0         PDL_BROADCASTLOOP_START__lcs_backtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4341             int i,j,p, iprev,jprev, tmp;
4342 0           (len_datap)[0] = 0;
4343 0 0         for (p=0, i=(ifinal_datap)[0], j=(jfinal_datap)[0]; p < __privtrans->ind_sizes[0] && i>0 && j>0; ) {
    0          
    0          
4344 0           PDL_Byte a1i = (a1_datap)[0+(__inc_a1_N1*(i))];
4345 0           PDL_Byte b1j = (b1_datap)[0+(__inc_b1_M1*(j))];
4346 0           iprev=i-1;
4347 0           jprev=j-1;
4348 0 0         if (a1i==b1j) {
4349 0           (ai_datap)[0+(__inc_ai_L*(p))] = iprev;
4350 0           (bi_datap)[0+(__inc_bi_L*(p))] = jprev;
4351 0           --i;
4352 0           --j;
4353 0           ++p;
4354 0 0         } else if ((lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))] > (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))]) {
4355 0           --j;
4356             } else {
4357 0           --i;
4358             }
4359             }
4360 0           (len_datap)[0] = p;
4361 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
4362 0           int endp = (len_datap)[0]-p-1;
4363 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
4364 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
4365 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
4366 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
4367 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
4368 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
4369             }
4370 0 0         }PDL_BROADCASTLOOP_END__lcs_backtrace_readdata
    0          
4371 0           } break;
4372 0           case PDL_S: {
4373 0 0         PDL_DECLARE_PARAMS__lcs_backtrace_1(PDL_Short,S,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4374 0 0         PDL_BROADCASTLOOP_START__lcs_backtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4375             int i,j,p, iprev,jprev, tmp;
4376 0           (len_datap)[0] = 0;
4377 0 0         for (p=0, i=(ifinal_datap)[0], j=(jfinal_datap)[0]; p < __privtrans->ind_sizes[0] && i>0 && j>0; ) {
    0          
    0          
4378 0           PDL_Short a1i = (a1_datap)[0+(__inc_a1_N1*(i))];
4379 0           PDL_Short b1j = (b1_datap)[0+(__inc_b1_M1*(j))];
4380 0           iprev=i-1;
4381 0           jprev=j-1;
4382 0 0         if (a1i==b1j) {
4383 0           (ai_datap)[0+(__inc_ai_L*(p))] = iprev;
4384 0           (bi_datap)[0+(__inc_bi_L*(p))] = jprev;
4385 0           --i;
4386 0           --j;
4387 0           ++p;
4388 0 0         } else if ((lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))] > (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))]) {
4389 0           --j;
4390             } else {
4391 0           --i;
4392             }
4393             }
4394 0           (len_datap)[0] = p;
4395 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
4396 0           int endp = (len_datap)[0]-p-1;
4397 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
4398 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
4399 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
4400 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
4401 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
4402 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
4403             }
4404 0 0         }PDL_BROADCASTLOOP_END__lcs_backtrace_readdata
    0          
4405 0           } break;
4406 0           case PDL_US: {
4407 0 0         PDL_DECLARE_PARAMS__lcs_backtrace_1(PDL_Ushort,U,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4408 0 0         PDL_BROADCASTLOOP_START__lcs_backtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4409             int i,j,p, iprev,jprev, tmp;
4410 0           (len_datap)[0] = 0;
4411 0 0         for (p=0, i=(ifinal_datap)[0], j=(jfinal_datap)[0]; p < __privtrans->ind_sizes[0] && i>0 && j>0; ) {
    0          
    0          
4412 0           PDL_Ushort a1i = (a1_datap)[0+(__inc_a1_N1*(i))];
4413 0           PDL_Ushort b1j = (b1_datap)[0+(__inc_b1_M1*(j))];
4414 0           iprev=i-1;
4415 0           jprev=j-1;
4416 0 0         if (a1i==b1j) {
4417 0           (ai_datap)[0+(__inc_ai_L*(p))] = iprev;
4418 0           (bi_datap)[0+(__inc_bi_L*(p))] = jprev;
4419 0           --i;
4420 0           --j;
4421 0           ++p;
4422 0 0         } else if ((lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))] > (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))]) {
4423 0           --j;
4424             } else {
4425 0           --i;
4426             }
4427             }
4428 0           (len_datap)[0] = p;
4429 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
4430 0           int endp = (len_datap)[0]-p-1;
4431 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
4432 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
4433 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
4434 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
4435 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
4436 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
4437             }
4438 0 0         }PDL_BROADCASTLOOP_END__lcs_backtrace_readdata
    0          
4439 0           } break;
4440 1           case PDL_L: {
4441 1 50         PDL_DECLARE_PARAMS__lcs_backtrace_1(PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
4442 4 50         PDL_BROADCASTLOOP_START__lcs_backtrace_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
4443             int i,j,p, iprev,jprev, tmp;
4444 1           (len_datap)[0] = 0;
4445 7 50         for (p=0, i=(ifinal_datap)[0], j=(jfinal_datap)[0]; p < __privtrans->ind_sizes[0] && i>0 && j>0; ) {
    50          
    100          
4446 6           PDL_Long a1i = (a1_datap)[0+(__inc_a1_N1*(i))];
4447 6           PDL_Long b1j = (b1_datap)[0+(__inc_b1_M1*(j))];
4448 6           iprev=i-1;
4449 6           jprev=j-1;
4450 6 100         if (a1i==b1j) {
4451 3           (ai_datap)[0+(__inc_ai_L*(p))] = iprev;
4452 3           (bi_datap)[0+(__inc_bi_L*(p))] = jprev;
4453 3           --i;
4454 3           --j;
4455 3           ++p;
4456 3 100         } else if ((lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))] > (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))]) {
4457 2           --j;
4458             } else {
4459 1           --i;
4460             }
4461             }
4462 1           (len_datap)[0] = p;
4463 3 100         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
4464 2           int endp = (len_datap)[0]-p-1;
4465 2           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
4466 2           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
4467 2           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
4468 2           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
4469 2           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
4470 2           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
4471             }
4472 1 50         }PDL_BROADCASTLOOP_END__lcs_backtrace_readdata
    50          
4473 1           } break;
4474 0           case PDL_UL: {
4475 0 0         PDL_DECLARE_PARAMS__lcs_backtrace_1(PDL_ULong,K,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4476 0 0         PDL_BROADCASTLOOP_START__lcs_backtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4477             int i,j,p, iprev,jprev, tmp;
4478 0           (len_datap)[0] = 0;
4479 0 0         for (p=0, i=(ifinal_datap)[0], j=(jfinal_datap)[0]; p < __privtrans->ind_sizes[0] && i>0 && j>0; ) {
    0          
    0          
4480 0           PDL_ULong a1i = (a1_datap)[0+(__inc_a1_N1*(i))];
4481 0           PDL_ULong b1j = (b1_datap)[0+(__inc_b1_M1*(j))];
4482 0           iprev=i-1;
4483 0           jprev=j-1;
4484 0 0         if (a1i==b1j) {
4485 0           (ai_datap)[0+(__inc_ai_L*(p))] = iprev;
4486 0           (bi_datap)[0+(__inc_bi_L*(p))] = jprev;
4487 0           --i;
4488 0           --j;
4489 0           ++p;
4490 0 0         } else if ((lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))] > (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))]) {
4491 0           --j;
4492             } else {
4493 0           --i;
4494             }
4495             }
4496 0           (len_datap)[0] = p;
4497 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
4498 0           int endp = (len_datap)[0]-p-1;
4499 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
4500 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
4501 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
4502 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
4503 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
4504 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
4505             }
4506 0 0         }PDL_BROADCASTLOOP_END__lcs_backtrace_readdata
    0          
4507 0           } break;
4508 0           case PDL_IND: {
4509 0 0         PDL_DECLARE_PARAMS__lcs_backtrace_1(PDL_Indx,N,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4510 0 0         PDL_BROADCASTLOOP_START__lcs_backtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4511             int i,j,p, iprev,jprev, tmp;
4512 0           (len_datap)[0] = 0;
4513 0 0         for (p=0, i=(ifinal_datap)[0], j=(jfinal_datap)[0]; p < __privtrans->ind_sizes[0] && i>0 && j>0; ) {
    0          
    0          
4514 0           PDL_Indx a1i = (a1_datap)[0+(__inc_a1_N1*(i))];
4515 0           PDL_Indx b1j = (b1_datap)[0+(__inc_b1_M1*(j))];
4516 0           iprev=i-1;
4517 0           jprev=j-1;
4518 0 0         if (a1i==b1j) {
4519 0           (ai_datap)[0+(__inc_ai_L*(p))] = iprev;
4520 0           (bi_datap)[0+(__inc_bi_L*(p))] = jprev;
4521 0           --i;
4522 0           --j;
4523 0           ++p;
4524 0 0         } else if ((lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))] > (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))]) {
4525 0           --j;
4526             } else {
4527 0           --i;
4528             }
4529             }
4530 0           (len_datap)[0] = p;
4531 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
4532 0           int endp = (len_datap)[0]-p-1;
4533 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
4534 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
4535 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
4536 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
4537 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
4538 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
4539             }
4540 0 0         }PDL_BROADCASTLOOP_END__lcs_backtrace_readdata
    0          
4541 0           } break;
4542 0           case PDL_ULL: {
4543 0 0         PDL_DECLARE_PARAMS__lcs_backtrace_1(PDL_ULongLong,P,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4544 0 0         PDL_BROADCASTLOOP_START__lcs_backtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4545             int i,j,p, iprev,jprev, tmp;
4546 0           (len_datap)[0] = 0;
4547 0 0         for (p=0, i=(ifinal_datap)[0], j=(jfinal_datap)[0]; p < __privtrans->ind_sizes[0] && i>0 && j>0; ) {
    0          
    0          
4548 0           PDL_ULongLong a1i = (a1_datap)[0+(__inc_a1_N1*(i))];
4549 0           PDL_ULongLong b1j = (b1_datap)[0+(__inc_b1_M1*(j))];
4550 0           iprev=i-1;
4551 0           jprev=j-1;
4552 0 0         if (a1i==b1j) {
4553 0           (ai_datap)[0+(__inc_ai_L*(p))] = iprev;
4554 0           (bi_datap)[0+(__inc_bi_L*(p))] = jprev;
4555 0           --i;
4556 0           --j;
4557 0           ++p;
4558 0 0         } else if ((lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))] > (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))]) {
4559 0           --j;
4560             } else {
4561 0           --i;
4562             }
4563             }
4564 0           (len_datap)[0] = p;
4565 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
4566 0           int endp = (len_datap)[0]-p-1;
4567 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
4568 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
4569 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
4570 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
4571 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
4572 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
4573             }
4574 0 0         }PDL_BROADCASTLOOP_END__lcs_backtrace_readdata
    0          
4575 0           } break;
4576 0           case PDL_LL: {
4577 0 0         PDL_DECLARE_PARAMS__lcs_backtrace_1(PDL_LongLong,Q,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4578 0 0         PDL_BROADCASTLOOP_START__lcs_backtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4579             int i,j,p, iprev,jprev, tmp;
4580 0           (len_datap)[0] = 0;
4581 0 0         for (p=0, i=(ifinal_datap)[0], j=(jfinal_datap)[0]; p < __privtrans->ind_sizes[0] && i>0 && j>0; ) {
    0          
    0          
4582 0           PDL_LongLong a1i = (a1_datap)[0+(__inc_a1_N1*(i))];
4583 0           PDL_LongLong b1j = (b1_datap)[0+(__inc_b1_M1*(j))];
4584 0           iprev=i-1;
4585 0           jprev=j-1;
4586 0 0         if (a1i==b1j) {
4587 0           (ai_datap)[0+(__inc_ai_L*(p))] = iprev;
4588 0           (bi_datap)[0+(__inc_bi_L*(p))] = jprev;
4589 0           --i;
4590 0           --j;
4591 0           ++p;
4592 0 0         } else if ((lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))] > (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))]) {
4593 0           --j;
4594             } else {
4595 0           --i;
4596             }
4597             }
4598 0           (len_datap)[0] = p;
4599 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
4600 0           int endp = (len_datap)[0]-p-1;
4601 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
4602 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
4603 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
4604 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
4605 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
4606 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
4607             }
4608 0 0         }PDL_BROADCASTLOOP_END__lcs_backtrace_readdata
    0          
4609 0           } break;
4610 0           case PDL_F: {
4611 0 0         PDL_DECLARE_PARAMS__lcs_backtrace_1(PDL_Float,F,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4612 0 0         PDL_BROADCASTLOOP_START__lcs_backtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4613             int i,j,p, iprev,jprev, tmp;
4614 0           (len_datap)[0] = 0;
4615 0 0         for (p=0, i=(ifinal_datap)[0], j=(jfinal_datap)[0]; p < __privtrans->ind_sizes[0] && i>0 && j>0; ) {
    0          
    0          
4616 0           PDL_Float a1i = (a1_datap)[0+(__inc_a1_N1*(i))];
4617 0           PDL_Float b1j = (b1_datap)[0+(__inc_b1_M1*(j))];
4618 0           iprev=i-1;
4619 0           jprev=j-1;
4620 0 0         if (a1i==b1j) {
4621 0           (ai_datap)[0+(__inc_ai_L*(p))] = iprev;
4622 0           (bi_datap)[0+(__inc_bi_L*(p))] = jprev;
4623 0           --i;
4624 0           --j;
4625 0           ++p;
4626 0 0         } else if ((lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))] > (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))]) {
4627 0           --j;
4628             } else {
4629 0           --i;
4630             }
4631             }
4632 0           (len_datap)[0] = p;
4633 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
4634 0           int endp = (len_datap)[0]-p-1;
4635 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
4636 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
4637 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
4638 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
4639 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
4640 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
4641             }
4642 0 0         }PDL_BROADCASTLOOP_END__lcs_backtrace_readdata
    0          
4643 0           } break;
4644 0           case PDL_D: {
4645 0 0         PDL_DECLARE_PARAMS__lcs_backtrace_1(PDL_Double,D,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4646 0 0         PDL_BROADCASTLOOP_START__lcs_backtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4647             int i,j,p, iprev,jprev, tmp;
4648 0           (len_datap)[0] = 0;
4649 0 0         for (p=0, i=(ifinal_datap)[0], j=(jfinal_datap)[0]; p < __privtrans->ind_sizes[0] && i>0 && j>0; ) {
    0          
    0          
4650 0           PDL_Double a1i = (a1_datap)[0+(__inc_a1_N1*(i))];
4651 0           PDL_Double b1j = (b1_datap)[0+(__inc_b1_M1*(j))];
4652 0           iprev=i-1;
4653 0           jprev=j-1;
4654 0 0         if (a1i==b1j) {
4655 0           (ai_datap)[0+(__inc_ai_L*(p))] = iprev;
4656 0           (bi_datap)[0+(__inc_bi_L*(p))] = jprev;
4657 0           --i;
4658 0           --j;
4659 0           ++p;
4660 0 0         } else if ((lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))] > (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))]) {
4661 0           --j;
4662             } else {
4663 0           --i;
4664             }
4665             }
4666 0           (len_datap)[0] = p;
4667 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
4668 0           int endp = (len_datap)[0]-p-1;
4669 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
4670 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
4671 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
4672 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
4673 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
4674 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
4675             }
4676 0 0         }PDL_BROADCASTLOOP_END__lcs_backtrace_readdata
    0          
4677 0           } break;
4678 0           case PDL_LD: {
4679 0 0         PDL_DECLARE_PARAMS__lcs_backtrace_1(PDL_LDouble,E,PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4680 0 0         PDL_BROADCASTLOOP_START__lcs_backtrace_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
4681             int i,j,p, iprev,jprev, tmp;
4682 0           (len_datap)[0] = 0;
4683 0 0         for (p=0, i=(ifinal_datap)[0], j=(jfinal_datap)[0]; p < __privtrans->ind_sizes[0] && i>0 && j>0; ) {
    0          
    0          
4684 0           PDL_LDouble a1i = (a1_datap)[0+(__inc_a1_N1*(i))];
4685 0           PDL_LDouble b1j = (b1_datap)[0+(__inc_b1_M1*(j))];
4686 0           iprev=i-1;
4687 0           jprev=j-1;
4688 0 0         if (a1i==b1j) {
4689 0           (ai_datap)[0+(__inc_ai_L*(p))] = iprev;
4690 0           (bi_datap)[0+(__inc_bi_L*(p))] = jprev;
4691 0           --i;
4692 0           --j;
4693 0           ++p;
4694 0 0         } else if ((lcs_datap)[0+(__inc_lcs_N1*(i))+(__inc_lcs_M1*(jprev))] > (lcs_datap)[0+(__inc_lcs_N1*(iprev))+(__inc_lcs_M1*(j))]) {
4695 0           --j;
4696             } else {
4697 0           --i;
4698             }
4699             }
4700 0           (len_datap)[0] = p;
4701 0 0         for (p=0; p < ((len_datap)[0]+1)/2; p++) {
4702 0           int endp = (len_datap)[0]-p-1;
4703 0           tmp = (ai_datap)[0+(__inc_ai_L*(p))];
4704 0           (ai_datap)[0+(__inc_ai_L*(p))] = (ai_datap)[0+(__inc_ai_L*(endp))];
4705 0           (ai_datap)[0+(__inc_ai_L*(endp))] = tmp;
4706 0           tmp = (bi_datap)[0+(__inc_bi_L*(p))];
4707 0           (bi_datap)[0+(__inc_bi_L*(p))] = (bi_datap)[0+(__inc_bi_L*(endp))];
4708 0           (bi_datap)[0+(__inc_bi_L*(endp))] = tmp;
4709             }
4710 0 0         }PDL_BROADCASTLOOP_END__lcs_backtrace_readdata
    0          
4711 0           } break;
4712 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in _lcs_backtrace: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
4713             }
4714             #undef PDL_IF_BAD
4715 1           return PDL_err;
4716             }
4717              
4718             static pdl_datatypes pdl__lcs_backtrace_vtable_gentypes[] = { PDL_SB, PDL_B, PDL_S, PDL_US, PDL_L, PDL_UL, PDL_IND, PDL_ULL, PDL_LL, PDL_F, PDL_D, PDL_LD, -1 };
4719             static PDL_Indx pdl__lcs_backtrace_vtable_realdims[] = { 1, 1, 2, 0, 0, 1, 1, 0 };
4720             static char *pdl__lcs_backtrace_vtable_parnames[] = { "a1","b1","lcs","ifinal","jfinal","ai","bi","len" };
4721             static short pdl__lcs_backtrace_vtable_parflags[] = {
4722             0,
4723             0,
4724             PDL_PARAM_ISTYPED,
4725             PDL_PARAM_ISTYPED,
4726             PDL_PARAM_ISTYPED,
4727             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE,
4728             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE,
4729             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
4730             };
4731             static pdl_datatypes pdl__lcs_backtrace_vtable_partypes[] = { -1, -1, PDL_L, PDL_L, PDL_L, -1, -1, PDL_L };
4732             static PDL_Indx pdl__lcs_backtrace_vtable_realdims_starts[] = { 0, 1, 2, 4, 4, 4, 5, 6 };
4733             static PDL_Indx pdl__lcs_backtrace_vtable_realdims_ind_ids[] = { 2, 1, 2, 1, 0, 0 };
4734             static char *pdl__lcs_backtrace_vtable_indnames[] = { "L","M1","N1" };
4735             pdl_transvtable pdl__lcs_backtrace_vtable = {
4736             PDL_TRANS_DO_BROADCAST, 0, pdl__lcs_backtrace_vtable_gentypes, 5, 8, NULL /*CORE21*/,
4737             pdl__lcs_backtrace_vtable_realdims, pdl__lcs_backtrace_vtable_parnames,
4738             pdl__lcs_backtrace_vtable_parflags, pdl__lcs_backtrace_vtable_partypes,
4739             pdl__lcs_backtrace_vtable_realdims_starts, pdl__lcs_backtrace_vtable_realdims_ind_ids, 6,
4740             3, pdl__lcs_backtrace_vtable_indnames,
4741             NULL, pdl__lcs_backtrace_readdata, NULL,
4742             NULL,
4743             0,"PDL::EditDistance::_lcs_backtrace"
4744             };
4745              
4746              
4747 1           pdl_error pdl_run__lcs_backtrace(pdl *a1,pdl *b1,pdl *lcs,pdl *ifinal,pdl *jfinal,pdl *ai,pdl *bi,pdl *len) {
4748 1           pdl_error PDL_err = {0, NULL, 0};
4749 1 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
4750 1           pdl_trans *__privtrans = PDL->create_trans(&pdl__lcs_backtrace_vtable);
4751 1 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
4752 1           __privtrans->pdls[0] = a1;
4753 1           __privtrans->pdls[1] = b1;
4754 1           __privtrans->pdls[2] = lcs;
4755 1           __privtrans->pdls[3] = ifinal;
4756 1           __privtrans->pdls[4] = jfinal;
4757 1           __privtrans->pdls[5] = ai;
4758 1           __privtrans->pdls[6] = bi;
4759 1           __privtrans->pdls[7] = len;
4760 1 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
4761 1 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
4762 1           return PDL_err;
4763             }
4764              
4765             #line 449 "lib/PDL/PP.pm"
4766             #include "pdlperl.h"
4767             #line 4768 "EditDistance.xs"
4768              
4769             Core* PDL = NULL; /* Structure hold core C functions */
4770              
4771             MODULE = PDL::EditDistance PACKAGE = PDL PREFIX=pdl_run_
4772              
4773             PROTOTYPES: DISABLE
4774              
4775              
4776             void
4777             pdl_run__edit_distance_full(a1, b1, costsMatch, costsIns, costsDel, costsSubst, dist=PDL_XS_PERLINIT_initsv(dist_SV))
4778             SV *dist_SV = items > 6 ? ST(6) : NULL;
4779             PREINIT:
4780 2 50         PDL_XS_PREAMBLE((items == 7) ? 0 : 1);
    50          
    0          
    50          
    50          
    50          
    50          
    0          
    50          
    50          
4781             INPUT:
4782             pdl *a1
4783             pdl *b1
4784             pdl *costsMatch
4785             pdl *costsIns
4786             pdl *costsDel
4787             pdl *costsSubst
4788             pdl *dist
4789             PPCODE:
4790 2           PDL->barf_if_error(pdl_run__edit_distance_full(a1,b1,costsMatch,costsIns,costsDel,costsSubst,dist));
4791 2 50         PDL_XS_RETURN(ST(0) = dist_SV)
    50          
    50          
    50          
    0          
4792              
4793             void
4794             pdl_run__edit_align_full(a1, b1, costsMatch, costsIns, costsDel, costsSubst, dist=PDL_XS_PERLINIT_initsv(dist_SV), align=PDL_XS_PERLINIT_initsv(align_SV))
4795             SV *dist_SV = items > 6 ? ST(6) : NULL;
4796             SV *align_SV = items > 7 ? ST(7) : NULL;
4797             PREINIT:
4798 2 50         PDL_XS_PREAMBLE((items == 8) ? 0 : 2);
    50          
    50          
    0          
    50          
    50          
    50          
    50          
    0          
    50          
    50          
4799             INPUT:
4800             pdl *a1
4801             pdl *b1
4802             pdl *costsMatch
4803             pdl *costsIns
4804             pdl *costsDel
4805             pdl *costsSubst
4806             pdl *dist
4807             pdl *align
4808             PPCODE:
4809 2           PDL->barf_if_error(pdl_run__edit_align_full(a1,b1,costsMatch,costsIns,costsDel,costsSubst,dist,align));
4810 2 50         PDL_XS_RETURN(ST(0) = dist_SV;ST(1) = align_SV)
    50          
    50          
    50          
    0          
4811              
4812             void
4813             pdl_run__edit_distance_static(a1, b1, costMatch, costIns, costDel, costSubst, dist=PDL_XS_PERLINIT_initsv(dist_SV))
4814             SV *dist_SV = items > 6 ? ST(6) : NULL;
4815             PREINIT:
4816 2 50         PDL_XS_PREAMBLE((items == 7) ? 0 : 1);
    50          
    0          
    50          
    50          
    50          
    50          
    0          
    50          
    50          
4817             INPUT:
4818             pdl *a1
4819             pdl *b1
4820             pdl *costMatch
4821             pdl *costIns
4822             pdl *costDel
4823             pdl *costSubst
4824             pdl *dist
4825             PPCODE:
4826 2           PDL->barf_if_error(pdl_run__edit_distance_static(a1,b1,costMatch,costIns,costDel,costSubst,dist));
4827 2 50         PDL_XS_RETURN(ST(0) = dist_SV)
    50          
    50          
    50          
    0          
4828              
4829             void
4830             pdl_run__edit_align_static(a1, b1, costMatch, costIns, costDel, costSubst, dist=PDL_XS_PERLINIT_initsv(dist_SV), align=PDL_XS_PERLINIT_initsv(align_SV))
4831             SV *dist_SV = items > 6 ? ST(6) : NULL;
4832             SV *align_SV = items > 7 ? ST(7) : NULL;
4833             PREINIT:
4834 4 50         PDL_XS_PREAMBLE((items == 8) ? 0 : 2);
    50          
    50          
    0          
    50          
    50          
    50          
    50          
    0          
    50          
    50          
4835             INPUT:
4836             pdl *a1
4837             pdl *b1
4838             pdl *costMatch
4839             pdl *costIns
4840             pdl *costDel
4841             pdl *costSubst
4842             pdl *dist
4843             pdl *align
4844             PPCODE:
4845 4           PDL->barf_if_error(pdl_run__edit_align_static(a1,b1,costMatch,costIns,costDel,costSubst,dist,align));
4846 4 50         PDL_XS_RETURN(ST(0) = dist_SV;ST(1) = align_SV)
    50          
    50          
    50          
    0          
4847              
4848             void
4849             pdl_run_align_op_insert1(a=PDL_XS_PERLINIT_initsv(a_SV))
4850             SV *a_SV = items > 0 ? ST(0) : NULL;
4851             PREINIT:
4852 0 0         PDL_XS_PREAMBLE((items == 1) ? 0 : 1);
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4853             INPUT:
4854             pdl *a
4855             PPCODE:
4856 0           PDL->barf_if_error(pdl_run_align_op_insert1(a));
4857 0 0         PDL_XS_RETURN(ST(0) = a_SV)
    0          
    0          
    0          
    0          
4858              
4859             void
4860             pdl_run_align_op_insert2(a=PDL_XS_PERLINIT_initsv(a_SV))
4861             SV *a_SV = items > 0 ? ST(0) : NULL;
4862             PREINIT:
4863 0 0         PDL_XS_PREAMBLE((items == 1) ? 0 : 1);
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4864             INPUT:
4865             pdl *a
4866             PPCODE:
4867 0           PDL->barf_if_error(pdl_run_align_op_insert2(a));
4868 0 0         PDL_XS_RETURN(ST(0) = a_SV)
    0          
    0          
    0          
    0          
4869              
4870             void
4871             pdl_run_align_op_match(a=PDL_XS_PERLINIT_initsv(a_SV))
4872             SV *a_SV = items > 0 ? ST(0) : NULL;
4873             PREINIT:
4874 0 0         PDL_XS_PREAMBLE((items == 1) ? 0 : 1);
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4875             INPUT:
4876             pdl *a
4877             PPCODE:
4878 0           PDL->barf_if_error(pdl_run_align_op_match(a));
4879 0 0         PDL_XS_RETURN(ST(0) = a_SV)
    0          
    0          
    0          
    0          
4880              
4881             void
4882             pdl_run_align_op_substitute(a=PDL_XS_PERLINIT_initsv(a_SV))
4883             SV *a_SV = items > 0 ? ST(0) : NULL;
4884             PREINIT:
4885 0 0         PDL_XS_PREAMBLE((items == 1) ? 0 : 1);
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
4886             INPUT:
4887             pdl *a
4888             PPCODE:
4889 0           PDL->barf_if_error(pdl_run_align_op_substitute(a));
4890 0 0         PDL_XS_RETURN(ST(0) = a_SV)
    0          
    0          
    0          
    0          
4891              
4892             void
4893             pdl_run__edit_bestpath(align, apath=apath, bpath=bpath, len=len, ifinal=ifinal, jfinal=jfinal)
4894             SV *apath_SV = (items == 6) ? ST(1) : NULL;
4895             SV *bpath_SV = (items == 6) ? ST(2) : NULL;
4896             SV *len_SV = (items == 6) ? ST(3) : NULL;
4897             SV *ifinal_SV = (items == 6) ? ST(4) : ST(1);
4898             SV *jfinal_SV = (items == 6) ? ST(5) : ST(2);
4899             PREINIT:
4900 1 50         PDL_XS_PREAMBLE((items == 6) ? 0 : 3);
    50          
    50          
    0          
    50          
    50          
    50          
    50          
    0          
    50          
    50          
4901 1 50         if (!((items == 3) || (items == 6)))
    50          
4902 0           croak("Usage: PDL::_edit_bestpath(align,[apath],[bpath],[len],ifinal,jfinal) (you may leave [outputs] and values with =defaults out of list)");
4903             INPUT:
4904             pdl *align
4905             pdl *apath=NO_INIT
4906             pdl *bpath=NO_INIT
4907             pdl *len=NO_INIT
4908             int ifinal; { ifinal = (int)SvIV(ifinal_SV); }
4909             int jfinal; { jfinal = (int)SvIV(jfinal_SV); }
4910             PPCODE:
4911 1 50         if (apath_SV) { apath = PDL_CORE_(SvPDLV)(apath_SV); } else apath = PDL_XS_PERLINIT_initsv(apath_SV);
    0          
4912 1 50         if (bpath_SV) { bpath = PDL_CORE_(SvPDLV)(bpath_SV); } else bpath = PDL_XS_PERLINIT_initsv(bpath_SV);
    0          
4913 1 50         if (len_SV) { len = PDL_CORE_(SvPDLV)(len_SV); } else len = PDL_XS_PERLINIT_initsv(len_SV);
    0          
4914 1           PDL->barf_if_error(pdl_run__edit_bestpath(align,apath,bpath,len,ifinal,jfinal));
4915 1 50         PDL_XS_RETURN(ST(0) = apath_SV;ST(1) = bpath_SV;ST(2) = len_SV)
    0          
    0          
    0          
    50          
4916              
4917             void
4918             pdl_run__edit_pathtrace(align, ai=ai, bi=bi, ops=ops, len=len, ifinal=ifinal, jfinal=jfinal)
4919             SV *ai_SV = (items == 7) ? ST(1) : NULL;
4920             SV *bi_SV = (items == 7) ? ST(2) : NULL;
4921             SV *ops_SV = (items == 7) ? ST(3) : NULL;
4922             SV *len_SV = (items == 7) ? ST(4) : NULL;
4923             SV *ifinal_SV = (items == 7) ? ST(5) : ST(1);
4924             SV *jfinal_SV = (items == 7) ? ST(6) : ST(2);
4925             PREINIT:
4926 1 50         PDL_XS_PREAMBLE((items == 7) ? 0 : 4);
    50          
    50          
    0          
    50          
    50          
    50          
    50          
    0          
    50          
    50          
4927 1 50         if (!((items == 3) || (items == 7)))
    50          
4928 0           croak("Usage: PDL::_edit_pathtrace(align,[ai],[bi],[ops],[len],ifinal,jfinal) (you may leave [outputs] and values with =defaults out of list)");
4929             INPUT:
4930             pdl *align
4931             pdl *ai=NO_INIT
4932             pdl *bi=NO_INIT
4933             pdl *ops=NO_INIT
4934             pdl *len=NO_INIT
4935             int ifinal; { ifinal = (int)SvIV(ifinal_SV); }
4936             int jfinal; { jfinal = (int)SvIV(jfinal_SV); }
4937             PPCODE:
4938 1 50         if (ai_SV) { ai = PDL_CORE_(SvPDLV)(ai_SV); } else ai = PDL_XS_PERLINIT_initsv(ai_SV);
    0          
4939 1 50         if (bi_SV) { bi = PDL_CORE_(SvPDLV)(bi_SV); } else bi = PDL_XS_PERLINIT_initsv(bi_SV);
    0          
4940 1 50         if (ops_SV) { ops = PDL_CORE_(SvPDLV)(ops_SV); } else ops = PDL_XS_PERLINIT_initsv(ops_SV);
    0          
4941 1 50         if (len_SV) { len = PDL_CORE_(SvPDLV)(len_SV); } else len = PDL_XS_PERLINIT_initsv(len_SV);
    0          
4942 1           PDL->barf_if_error(pdl_run__edit_pathtrace(align,ai,bi,ops,len,ifinal,jfinal));
4943 1 50         PDL_XS_RETURN(ST(0) = ai_SV;ST(1) = bi_SV;ST(2) = ops_SV;ST(3) = len_SV)
    0          
    0          
    0          
    50          
4944              
4945             void
4946             pdl_run__edit_lcs(a1, b1, lcs=PDL_XS_PERLINIT_initsv(lcs_SV))
4947             SV *lcs_SV = items > 2 ? ST(2) : NULL;
4948             PREINIT:
4949 1 50         PDL_XS_PREAMBLE((items == 3) ? 0 : 1);
    50          
    0          
    50          
    50          
    50          
    50          
    0          
    50          
    50          
4950             INPUT:
4951             pdl *a1
4952             pdl *b1
4953             pdl *lcs
4954             PPCODE:
4955 1           PDL->barf_if_error(pdl_run__edit_lcs(a1,b1,lcs));
4956 1 50         PDL_XS_RETURN(ST(0) = lcs_SV)
    50          
    50          
    50          
    0          
4957              
4958             void
4959             pdl_run__lcs_backtrace(a1, b1, lcs, ifinal, jfinal, ai=PDL_XS_PERLINIT_initsv(ai_SV), bi=PDL_XS_PERLINIT_initsv(bi_SV), len=PDL_XS_PERLINIT_initsv(len_SV))
4960             SV *ai_SV = items > 5 ? ST(5) : NULL;
4961             SV *bi_SV = items > 6 ? ST(6) : NULL;
4962             SV *len_SV = items > 7 ? ST(7) : NULL;
4963             PREINIT:
4964 1 50         PDL_XS_PREAMBLE((items == 8) ? 0 : 3);
    50          
    50          
    0          
    50          
    50          
    50          
    50          
    0          
    50          
    50          
4965             INPUT:
4966             pdl *a1
4967             pdl *b1
4968             pdl *lcs
4969             pdl *ifinal
4970             pdl *jfinal
4971             pdl *ai
4972             pdl *bi
4973             pdl *len
4974             PPCODE:
4975 1           PDL->barf_if_error(pdl_run__lcs_backtrace(a1,b1,lcs,ifinal,jfinal,ai,bi,len));
4976 1 50         PDL_XS_RETURN(ST(0) = ai_SV;ST(1) = bi_SV;ST(2) = len_SV)
    0          
    0          
    0          
    50          
4977              
4978              
4979             #line 483 "lib/PDL/PP.pm"
4980             BOOT:
4981             /* Get pointer to structure of core shared C routines */
4982             /* make sure PDL::Core is loaded */
4983             #line 4984 "EditDistance.xs"
4984 2           perl_require_pv ("PDL/Core.pm"); /* make sure PDL::Core is loaded */
4985             #ifndef aTHX_
4986             #define aTHX_
4987             #endif
4988 2 50         if (SvTRUE (ERRSV)) Perl_croak(aTHX_ "%s",SvPV_nolen (ERRSV));
    50          
    0          
4989 2           SV* CoreSV = perl_get_sv("PDL::SHARE",FALSE); /* var with core structure */
4990 2 50         if (!CoreSV)
4991 0           Perl_croak(aTHX_ "We require the PDL::Core module, which was not found");
4992 2 50         if (!(PDL = INT2PTR(Core*,SvIV( CoreSV )))) /* Core* value */
4993 0           Perl_croak(aTHX_ "Got NULL pointer for PDL");
4994 2 50         if (PDL->Version != PDL_CORE_VERSION)
4995 0           Perl_croak(aTHX_ "[PDL->Version: %ld PDL_CORE_VERSION: %ld XS_VERSION: %s] PDL::EditDistance needs to be recompiled against the newly installed PDL", (long int)PDL->Version, (long int)PDL_CORE_VERSION, XS_VERSION);