File Coverage

lib/PDL/MatrixOps-pp-tritosquare.c
Criterion Covered Total %
statement 39 266 14.6
branch 30 612 4.9
condition n/a
subroutine n/a
pod n/a
total 69 878 7.8


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 lib/PDL/MatrixOps.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_MatrixOps
21             extern Core* PDL; /* Structure hold core C functions */
22             #line 23 "lib/PDL/MatrixOps-pp-tritosquare.c"
23              
24             #include
25              
26             #line 1857 "lib/PDL/PP.pm"
27             pdl_error pdl_tritosquare_redodims(pdl_trans *__privtrans) {
28             pdl_error PDL_err = {0, NULL, 0};
29             #line 30 "lib/PDL/MatrixOps-pp-tritosquare.c"
30             #ifndef PDL_DECLARE_PARAMS_tritosquare_0
31             #define PDL_DECLARE_PARAMS_tritosquare_0(PDL_TYPE_OP,PDL_PPSYM_OP) \
32             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 0, PDL_PPSYM_OP) \
33             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, b, (__privtrans->pdls[1]), 0, PDL_PPSYM_OP)
34             #endif
35             #define PDL_IF_BAD(t,f) f
36 1           switch (__privtrans->__datatype) { /* Start generic switch */
37 0           case PDL_SB: {
38 0 0         PDL_DECLARE_PARAMS_tritosquare_0(PDL_SByte,A)
    0          
39 0           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
40 0           __privtrans->ind_sizes[1] = roundf(n);
41 0 0         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
42 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
43             }
44 0           } break;
45 0           case PDL_B: {
46 0 0         PDL_DECLARE_PARAMS_tritosquare_0(PDL_Byte,B)
    0          
47 0           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
48 0           __privtrans->ind_sizes[1] = roundf(n);
49 0 0         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
50 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
51             }
52 0           } break;
53 0           case PDL_S: {
54 0 0         PDL_DECLARE_PARAMS_tritosquare_0(PDL_Short,S)
    0          
55 0           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
56 0           __privtrans->ind_sizes[1] = roundf(n);
57 0 0         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
58 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
59             }
60 0           } break;
61 0           case PDL_US: {
62 0 0         PDL_DECLARE_PARAMS_tritosquare_0(PDL_Ushort,U)
    0          
63 0           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
64 0           __privtrans->ind_sizes[1] = roundf(n);
65 0 0         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
66 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
67             }
68 0           } break;
69 0           case PDL_L: {
70 0 0         PDL_DECLARE_PARAMS_tritosquare_0(PDL_Long,L)
    0          
71 0           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
72 0           __privtrans->ind_sizes[1] = roundf(n);
73 0 0         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
74 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
75             }
76 0           } break;
77 0           case PDL_UL: {
78 0 0         PDL_DECLARE_PARAMS_tritosquare_0(PDL_ULong,K)
    0          
79 0           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
80 0           __privtrans->ind_sizes[1] = roundf(n);
81 0 0         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
82 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
83             }
84 0           } break;
85 0           case PDL_IND: {
86 0 0         PDL_DECLARE_PARAMS_tritosquare_0(PDL_Indx,N)
    0          
87 0           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
88 0           __privtrans->ind_sizes[1] = roundf(n);
89 0 0         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
90 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
91             }
92 0           } break;
93 0           case PDL_ULL: {
94 0 0         PDL_DECLARE_PARAMS_tritosquare_0(PDL_ULongLong,P)
    0          
95 0           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
96 0           __privtrans->ind_sizes[1] = roundf(n);
97 0 0         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
98 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
99             }
100 0           } break;
101 0           case PDL_LL: {
102 0 0         PDL_DECLARE_PARAMS_tritosquare_0(PDL_LongLong,Q)
    0          
103 0           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
104 0           __privtrans->ind_sizes[1] = roundf(n);
105 0 0         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
106 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
107             }
108 0           } break;
109 0           case PDL_F: {
110 0 0         PDL_DECLARE_PARAMS_tritosquare_0(PDL_Float,F)
    0          
111 0           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
112 0           __privtrans->ind_sizes[1] = roundf(n);
113 0 0         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
114 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
115             }
116 0           } break;
117 1           case PDL_D: {
118 1 50         PDL_DECLARE_PARAMS_tritosquare_0(PDL_Double,D)
    50          
119 1           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
120 1           __privtrans->ind_sizes[1] = roundf(n);
121 1 50         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
122 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
123             }
124 1           } break;
125 0           case PDL_LD: {
126 0 0         PDL_DECLARE_PARAMS_tritosquare_0(PDL_LDouble,E)
    0          
127 0           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
128 0           __privtrans->ind_sizes[1] = roundf(n);
129 0 0         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
130 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
131             }
132 0           } break;
133 0           case PDL_CF: {
134 0 0         PDL_DECLARE_PARAMS_tritosquare_0(PDL_CFloat,G)
    0          
135 0           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
136 0           __privtrans->ind_sizes[1] = roundf(n);
137 0 0         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
138 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
139             }
140 0           } break;
141 0           case PDL_CD: {
142 0 0         PDL_DECLARE_PARAMS_tritosquare_0(PDL_CDouble,C)
    0          
143 0           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
144 0           __privtrans->ind_sizes[1] = roundf(n);
145 0 0         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
146 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
147             }
148 0           } break;
149 0           case PDL_CLD: {
150 0 0         PDL_DECLARE_PARAMS_tritosquare_0(PDL_CLDouble,H)
    0          
151 0           {float n = (sqrtf(1 + 8*__privtrans->ind_sizes[0]) - 1)/2;
152 0           __privtrans->ind_sizes[1] = roundf(n);
153 0 0         if (fabsf(__privtrans->ind_sizes[1] - n) > 0.0001)
154 0           return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "Non-triangular vector size=%"IND_FLAG,__privtrans->ind_sizes[0]);
155             }
156 0           } break;
157 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in tritosquare: unhandled datatype(%d), only handles (ABSULKNPQFDEGCH)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
158             }
159             #undef PDL_IF_BAD
160              
161 1 50         PDL_RETERROR(PDL_err, PDL->redodims_default(__privtrans));
162 1           return PDL_err;
163             }
164              
165              
166             #line 1857 "lib/PDL/PP.pm"
167             pdl_error pdl_tritosquare_readdata(pdl_trans *__privtrans) {
168             pdl_error PDL_err = {0, NULL, 0};
169             #line 170 "lib/PDL/MatrixOps-pp-tritosquare.c"
170 1           register PDL_Indx __m_size = __privtrans->ind_sizes[0];
171 1 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in tritosquare:" "broadcast.incs NULL");
172             /* broadcastloop declarations */
173             int __brcloopval;
174             register PDL_Indx __tind0,__tind1; /* counters along dim */
175 1           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
176             /* dims here are how many steps along those dims */
177 1           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
178 1           register PDL_Indx __tinc0_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
179 1           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
180 1           register PDL_Indx __tinc1_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
181             #define PDL_BROADCASTLOOP_START_tritosquare_readdata PDL_BROADCASTLOOP_START( \
182             readdata, \
183             __privtrans->broadcast, \
184             __privtrans->vtable, \
185             a_datap += __offsp[0]; \
186             b_datap += __offsp[1]; \
187             , \
188             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
189             ,b_datap += __tinc1_b - __tinc0_b * __tdims0 \
190             ), \
191             ( ,a_datap += __tinc0_a \
192             ,b_datap += __tinc0_b \
193             ) \
194             )
195             #define PDL_BROADCASTLOOP_END_tritosquare_readdata PDL_BROADCASTLOOP_END( \
196             __privtrans->broadcast, \
197             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
198             b_datap -= __tinc1_b * __tdims1 + __offsp[1]; \
199             )
200 1           register PDL_Indx __inc_a_m = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a_m;
201 1           register PDL_Indx __inc_b_n0 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_b_n0;register PDL_Indx __inc_b_n1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,1)]; (void)__inc_b_n1;
202             #ifndef PDL_DECLARE_PARAMS_tritosquare_1
203             #define PDL_DECLARE_PARAMS_tritosquare_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
204             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
205             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, b, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP)
206             #endif
207             #define PDL_IF_BAD(t,f) f
208 1           switch (__privtrans->__datatype) { /* Start generic switch */
209 0           case PDL_SB: {
210 0 0         PDL_DECLARE_PARAMS_tritosquare_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
211 0 0         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
212 0           register PDL_Indx mna=0, nb=0;
213 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
214 0           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
215 0 0         mna++; if(mna > nb) {mna = 0; nb ++;}
216             }} /* Close m */
217 0 0         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    0          
218 0           } break;
219 0           case PDL_B: {
220 0 0         PDL_DECLARE_PARAMS_tritosquare_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
221 0 0         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
222 0           register PDL_Indx mna=0, nb=0;
223 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
224 0           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
225 0 0         mna++; if(mna > nb) {mna = 0; nb ++;}
226             }} /* Close m */
227 0 0         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    0          
228 0           } break;
229 0           case PDL_S: {
230 0 0         PDL_DECLARE_PARAMS_tritosquare_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
231 0 0         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
232 0           register PDL_Indx mna=0, nb=0;
233 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
234 0           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
235 0 0         mna++; if(mna > nb) {mna = 0; nb ++;}
236             }} /* Close m */
237 0 0         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    0          
238 0           } break;
239 0           case PDL_US: {
240 0 0         PDL_DECLARE_PARAMS_tritosquare_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
241 0 0         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
242 0           register PDL_Indx mna=0, nb=0;
243 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
244 0           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
245 0 0         mna++; if(mna > nb) {mna = 0; nb ++;}
246             }} /* Close m */
247 0 0         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    0          
248 0           } break;
249 0           case PDL_L: {
250 0 0         PDL_DECLARE_PARAMS_tritosquare_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
251 0 0         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
252 0           register PDL_Indx mna=0, nb=0;
253 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
254 0           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
255 0 0         mna++; if(mna > nb) {mna = 0; nb ++;}
256             }} /* Close m */
257 0 0         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    0          
258 0           } break;
259 0           case PDL_UL: {
260 0 0         PDL_DECLARE_PARAMS_tritosquare_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
261 0 0         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
262 0           register PDL_Indx mna=0, nb=0;
263 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
264 0           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
265 0 0         mna++; if(mna > nb) {mna = 0; nb ++;}
266             }} /* Close m */
267 0 0         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    0          
268 0           } break;
269 0           case PDL_IND: {
270 0 0         PDL_DECLARE_PARAMS_tritosquare_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
271 0 0         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
272 0           register PDL_Indx mna=0, nb=0;
273 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
274 0           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
275 0 0         mna++; if(mna > nb) {mna = 0; nb ++;}
276             }} /* Close m */
277 0 0         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    0          
278 0           } break;
279 0           case PDL_ULL: {
280 0 0         PDL_DECLARE_PARAMS_tritosquare_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
281 0 0         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
282 0           register PDL_Indx mna=0, nb=0;
283 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
284 0           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
285 0 0         mna++; if(mna > nb) {mna = 0; nb ++;}
286             }} /* Close m */
287 0 0         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    0          
288 0           } break;
289 0           case PDL_LL: {
290 0 0         PDL_DECLARE_PARAMS_tritosquare_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
291 0 0         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
292 0           register PDL_Indx mna=0, nb=0;
293 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
294 0           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
295 0 0         mna++; if(mna > nb) {mna = 0; nb ++;}
296             }} /* Close m */
297 0 0         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    0          
298 0           } break;
299 0           case PDL_F: {
300 0 0         PDL_DECLARE_PARAMS_tritosquare_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
301 0 0         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
302 0           register PDL_Indx mna=0, nb=0;
303 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
304 0           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
305 0 0         mna++; if(mna > nb) {mna = 0; nb ++;}
306             }} /* Close m */
307 0 0         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    0          
308 0           } break;
309 1           case PDL_D: {
310 1 50         PDL_DECLARE_PARAMS_tritosquare_1(PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
311 4 50         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
312 1           register PDL_Indx mna=0, nb=0;
313 7 100         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
314 6           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
315 6 100         mna++; if(mna > nb) {mna = 0; nb ++;}
316             }} /* Close m */
317 1 50         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    50          
318 1           } break;
319 0           case PDL_LD: {
320 0 0         PDL_DECLARE_PARAMS_tritosquare_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
321 0 0         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
322 0           register PDL_Indx mna=0, nb=0;
323 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
324 0           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
325 0 0         mna++; if(mna > nb) {mna = 0; nb ++;}
326             }} /* Close m */
327 0 0         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    0          
328 0           } break;
329 0           case PDL_CF: {
330 0 0         PDL_DECLARE_PARAMS_tritosquare_1(PDL_CFloat,G)
    0          
    0          
    0          
    0          
    0          
331 0 0         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
332 0           register PDL_Indx mna=0, nb=0;
333 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
334 0           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
335 0 0         mna++; if(mna > nb) {mna = 0; nb ++;}
336             }} /* Close m */
337 0 0         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    0          
338 0           } break;
339 0           case PDL_CD: {
340 0 0         PDL_DECLARE_PARAMS_tritosquare_1(PDL_CDouble,C)
    0          
    0          
    0          
    0          
    0          
341 0 0         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
342 0           register PDL_Indx mna=0, nb=0;
343 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
344 0           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
345 0 0         mna++; if(mna > nb) {mna = 0; nb ++;}
346             }} /* Close m */
347 0 0         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    0          
348 0           } break;
349 0           case PDL_CLD: {
350 0 0         PDL_DECLARE_PARAMS_tritosquare_1(PDL_CLDouble,H)
    0          
    0          
    0          
    0          
    0          
351 0 0         PDL_BROADCASTLOOP_START_tritosquare_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
352 0           register PDL_Indx mna=0, nb=0;
353 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
354 0           (b_datap)[0+(__inc_b_n0*(mna))+(__inc_b_n1*(nb))] = (a_datap)[0+(__inc_a_m*(m))];
355 0 0         mna++; if(mna > nb) {mna = 0; nb ++;}
356             }} /* Close m */
357 0 0         }PDL_BROADCASTLOOP_END_tritosquare_readdata
    0          
358 0           } break;
359 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in tritosquare: unhandled datatype(%d), only handles (ABSULKNPQFDEGCH)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
360             }
361             #undef PDL_IF_BAD
362 1           return PDL_err;
363             }
364              
365             static pdl_datatypes pdl_tritosquare_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, PDL_CF, PDL_CD, PDL_CLD, -1 };
366             static PDL_Indx pdl_tritosquare_vtable_realdims[] = { 1, 2 };
367             static char *pdl_tritosquare_vtable_parnames[] = { "a","b" };
368             static short pdl_tritosquare_vtable_parflags[] = {
369             0,
370             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
371             };
372             static pdl_datatypes pdl_tritosquare_vtable_partypes[] = { -1, -1 };
373             static PDL_Indx pdl_tritosquare_vtable_realdims_starts[] = { 0, 1 };
374             static PDL_Indx pdl_tritosquare_vtable_realdims_ind_ids[] = { 0, 1, 1 };
375             static char *pdl_tritosquare_vtable_indnames[] = { "m","n" };
376             pdl_transvtable pdl_tritosquare_vtable = {
377             PDL_TRANS_DO_BROADCAST, 0, pdl_tritosquare_vtable_gentypes, 1, 2, NULL /*CORE21*/,
378             pdl_tritosquare_vtable_realdims, pdl_tritosquare_vtable_parnames,
379             pdl_tritosquare_vtable_parflags, pdl_tritosquare_vtable_partypes,
380             pdl_tritosquare_vtable_realdims_starts, pdl_tritosquare_vtable_realdims_ind_ids, 3,
381             2, pdl_tritosquare_vtable_indnames,
382             pdl_tritosquare_redodims, pdl_tritosquare_readdata, NULL,
383             NULL,
384             0,"PDL::MatrixOps::tritosquare"
385             };
386              
387              
388 1           pdl_error pdl_run_tritosquare(pdl *a,pdl *b) {
389 1           pdl_error PDL_err = {0, NULL, 0};
390 1 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
391 1           pdl_trans *__privtrans = PDL->create_trans(&pdl_tritosquare_vtable);
392 1 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
393 1           __privtrans->pdls[0] = a;
394 1           __privtrans->pdls[1] = b;
395 1 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
396 1 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
397 1           return PDL_err;
398             }