File Coverage

pp-levmar_diff_lb_ub.c
Criterion Covered Total %
statement 122 124 98.3
branch 130 248 52.4
condition n/a
subroutine n/a
pod n/a
total 252 372 67.7


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 levmar.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_Fit_Levmar
21             extern Core* PDL; /* Structure hold core C functions */
22             #line 23 "pp-levmar_diff_lb_ub.c"
23              
24             #include
25             #include
26             #include
27             #include
28             #include "pdlperlfunc.h"
29             #include "levmar.h"
30              
31             #line 1846 "lib/PDL/PP.pm"
32             typedef struct pdl_params_levmar_diff_lb_ub {
33             #line 34 "pp-levmar_diff_lb_ub.c"
34             IV funcn;
35             IV sfuncn;
36             IV indat;
37             int want_covar;
38             } pdl_params_levmar_diff_lb_ub;
39              
40              
41             #line 1857 "lib/PDL/PP.pm"
42             pdl_error pdl_levmar_diff_lb_ub_redodims(pdl_trans *__privtrans) {
43             pdl_error PDL_err = {0, NULL, 0};
44             #line 45 "pp-levmar_diff_lb_ub.c"
45 5           pdl_params_levmar_diff_lb_ub *__params = __privtrans->params; (void)__params;
46 5           __privtrans->ind_sizes[5] = 10;
47             #ifndef PDL_DECLARE_PARAMS_levmar_diff_lb_ub_0
48             #define PDL_DECLARE_PARAMS_levmar_diff_lb_ub_0(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_iopts,PDL_PPSYM_PARAM_iopts,PDL_TYPE_PARAM_returnval,PDL_PPSYM_PARAM_returnval) \
49             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, p, (__privtrans->pdls[0]), 0, PDL_PPSYM_OP) \
50             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, x, (__privtrans->pdls[1]), 0, PDL_PPSYM_OP) \
51             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, t, (__privtrans->pdls[2]), 0, PDL_PPSYM_OP) \
52             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, lb, (__privtrans->pdls[3]), 0, PDL_PPSYM_OP) \
53             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, ub, (__privtrans->pdls[4]), 0, PDL_PPSYM_OP) \
54             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_iopts, iopts, (__privtrans->pdls[5]), 0, PDL_PPSYM_PARAM_iopts) \
55             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, opts, (__privtrans->pdls[6]), 0, PDL_PPSYM_OP) \
56             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, work, (__privtrans->pdls[7]), 0, PDL_PPSYM_OP) \
57             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, covar, (__privtrans->pdls[8]), 0, PDL_PPSYM_OP) \
58             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_returnval, returnval, (__privtrans->pdls[9]), 0, PDL_PPSYM_PARAM_returnval) \
59             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, pout, (__privtrans->pdls[10]), 0, PDL_PPSYM_OP) \
60             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, info, (__privtrans->pdls[11]), 0, PDL_PPSYM_OP)
61             #endif
62             #define PDL_IF_BAD(t,f) f
63 5           switch (__privtrans->__datatype) { /* Start generic switch */
64 2           case PDL_F: {
65 2 50         PDL_DECLARE_PARAMS_levmar_diff_lb_ub_0(PDL_Float,F,PDL_Long,L,PDL_Long,L)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
66             {
67 2           int im = __privtrans->pdls[0]->dims[0];
68 2           int in = __privtrans->pdls[1]->dims[0];
69 2           int min = 4*in + 4*im + in*im + im*im;
70 2           int inw = __privtrans->pdls[7]->dims[0];
71 2           __privtrans->ind_sizes[6] = inw >= min ? inw : min;
72             }
73 2           } break;
74 3           case PDL_D: {
75 3 50         PDL_DECLARE_PARAMS_levmar_diff_lb_ub_0(PDL_Double,D,PDL_Long,L,PDL_Long,L)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
76             {
77 3           int im = __privtrans->pdls[0]->dims[0];
78 3           int in = __privtrans->pdls[1]->dims[0];
79 3           int min = 4*in + 4*im + in*im + im*im;
80 3           int inw = __privtrans->pdls[7]->dims[0];
81 3           __privtrans->ind_sizes[6] = inw >= min ? inw : min;
82             }
83 3           } break;
84 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in levmar_diff_lb_ub: unhandled datatype(%d), only handles (FD)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
85             }
86             #undef PDL_IF_BAD
87              
88 5 50         PDL_RETERROR(PDL_err, PDL->redodims_default(__privtrans));
89 5           return PDL_err;
90             }
91              
92              
93             #line 1857 "lib/PDL/PP.pm"
94             pdl_error pdl_levmar_diff_lb_ub_readdata(pdl_trans *__privtrans) {
95             pdl_error PDL_err = {0, NULL, 0};
96             #line 97 "pp-levmar_diff_lb_ub.c"
97 5           pdl_params_levmar_diff_lb_ub *__params = __privtrans->params; (void)__params;
98 5           register PDL_Indx __m_size = __privtrans->ind_sizes[1];
99 5 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in levmar_diff_lb_ub:" "broadcast.incs NULL");
100             /* broadcastloop declarations */
101             int __brcloopval;
102             register PDL_Indx __tind0,__tind1; /* counters along dim */
103 5           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
104             /* dims here are how many steps along those dims */
105 5           register PDL_Indx __tinc0_p = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
106 5           register PDL_Indx __tinc0_x = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
107 5           register PDL_Indx __tinc0_t = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
108 5           register PDL_Indx __tinc0_lb = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,0);
109 5           register PDL_Indx __tinc0_ub = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,0);
110 5           register PDL_Indx __tinc0_iopts = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,5,0);
111 5           register PDL_Indx __tinc0_opts = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,6,0);
112 5           register PDL_Indx __tinc0_work = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,7,0);
113 5           register PDL_Indx __tinc0_covar = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,8,0);
114 5           register PDL_Indx __tinc0_returnval = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,9,0);
115 5           register PDL_Indx __tinc0_pout = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,10,0);
116 5           register PDL_Indx __tinc0_info = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,11,0);
117 5           register PDL_Indx __tinc1_p = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
118 5           register PDL_Indx __tinc1_x = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
119 5           register PDL_Indx __tinc1_t = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
120 5           register PDL_Indx __tinc1_lb = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,1);
121 5           register PDL_Indx __tinc1_ub = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,1);
122 5           register PDL_Indx __tinc1_iopts = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,5,1);
123 5           register PDL_Indx __tinc1_opts = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,6,1);
124 5           register PDL_Indx __tinc1_work = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,7,1);
125 5           register PDL_Indx __tinc1_covar = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,8,1);
126 5           register PDL_Indx __tinc1_returnval = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,9,1);
127 5           register PDL_Indx __tinc1_pout = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,10,1);
128 5           register PDL_Indx __tinc1_info = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,11,1);
129             #define PDL_BROADCASTLOOP_START_levmar_diff_lb_ub_readdata PDL_BROADCASTLOOP_START( \
130             readdata, \
131             __privtrans->broadcast, \
132             __privtrans->vtable, \
133             p_datap += __offsp[0]; \
134             x_datap += __offsp[1]; \
135             t_datap += __offsp[2]; \
136             lb_datap += __offsp[3]; \
137             ub_datap += __offsp[4]; \
138             iopts_datap += __offsp[5]; \
139             opts_datap += __offsp[6]; \
140             work_datap += __offsp[7]; \
141             covar_datap += __offsp[8]; \
142             returnval_datap += __offsp[9]; \
143             pout_datap += __offsp[10]; \
144             info_datap += __offsp[11]; \
145             , \
146             ( ,p_datap += __tinc1_p - __tinc0_p * __tdims0 \
147             ,x_datap += __tinc1_x - __tinc0_x * __tdims0 \
148             ,t_datap += __tinc1_t - __tinc0_t * __tdims0 \
149             ,lb_datap += __tinc1_lb - __tinc0_lb * __tdims0 \
150             ,ub_datap += __tinc1_ub - __tinc0_ub * __tdims0 \
151             ,iopts_datap += __tinc1_iopts - __tinc0_iopts * __tdims0 \
152             ,opts_datap += __tinc1_opts - __tinc0_opts * __tdims0 \
153             ,work_datap += __tinc1_work - __tinc0_work * __tdims0 \
154             ,covar_datap += __tinc1_covar - __tinc0_covar * __tdims0 \
155             ,returnval_datap += __tinc1_returnval - __tinc0_returnval * __tdims0 \
156             ,pout_datap += __tinc1_pout - __tinc0_pout * __tdims0 \
157             ,info_datap += __tinc1_info - __tinc0_info * __tdims0 \
158             ), \
159             ( ,p_datap += __tinc0_p \
160             ,x_datap += __tinc0_x \
161             ,t_datap += __tinc0_t \
162             ,lb_datap += __tinc0_lb \
163             ,ub_datap += __tinc0_ub \
164             ,iopts_datap += __tinc0_iopts \
165             ,opts_datap += __tinc0_opts \
166             ,work_datap += __tinc0_work \
167             ,covar_datap += __tinc0_covar \
168             ,returnval_datap += __tinc0_returnval \
169             ,pout_datap += __tinc0_pout \
170             ,info_datap += __tinc0_info \
171             ) \
172             )
173             #define PDL_BROADCASTLOOP_END_levmar_diff_lb_ub_readdata PDL_BROADCASTLOOP_END( \
174             __privtrans->broadcast, \
175             p_datap -= __tinc1_p * __tdims1 + __offsp[0]; \
176             x_datap -= __tinc1_x * __tdims1 + __offsp[1]; \
177             t_datap -= __tinc1_t * __tdims1 + __offsp[2]; \
178             lb_datap -= __tinc1_lb * __tdims1 + __offsp[3]; \
179             ub_datap -= __tinc1_ub * __tdims1 + __offsp[4]; \
180             iopts_datap -= __tinc1_iopts * __tdims1 + __offsp[5]; \
181             opts_datap -= __tinc1_opts * __tdims1 + __offsp[6]; \
182             work_datap -= __tinc1_work * __tdims1 + __offsp[7]; \
183             covar_datap -= __tinc1_covar * __tdims1 + __offsp[8]; \
184             returnval_datap -= __tinc1_returnval * __tdims1 + __offsp[9]; \
185             pout_datap -= __tinc1_pout * __tdims1 + __offsp[10]; \
186             info_datap -= __tinc1_info * __tdims1 + __offsp[11]; \
187             )
188 5           register PDL_Indx __inc_covar_m0 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,8,0)]; (void)__inc_covar_m0;register PDL_Indx __inc_covar_m1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,8,1)]; (void)__inc_covar_m1;
189 5           register PDL_Indx __inc_info_q = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,11,0)]; (void)__inc_info_q;
190 5           register PDL_Indx __inc_iopts_in = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,5,0)]; (void)__inc_iopts_in;
191 5           register PDL_Indx __inc_lb_m = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,3,0)]; (void)__inc_lb_m;
192 5           register PDL_Indx __inc_opts_nopt = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,6,0)]; (void)__inc_opts_nopt;
193 5           register PDL_Indx __inc_p_m = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_p_m;
194 5           register PDL_Indx __inc_pout_m = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,10,0)]; (void)__inc_pout_m;
195 5           register PDL_Indx __inc_t_nt = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,0)]; (void)__inc_t_nt;
196 5           register PDL_Indx __inc_ub_m = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,4,0)]; (void)__inc_ub_m;
197 5           register PDL_Indx __inc_work_wn = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,7,0)]; (void)__inc_work_wn;
198 5           register PDL_Indx __inc_x_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_x_n;
199             #ifndef PDL_DECLARE_PARAMS_levmar_diff_lb_ub_1
200             #define PDL_DECLARE_PARAMS_levmar_diff_lb_ub_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_iopts,PDL_PPSYM_PARAM_iopts,PDL_TYPE_PARAM_returnval,PDL_PPSYM_PARAM_returnval) \
201             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, p, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
202             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, x, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP) \
203             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, t, (__privtrans->pdls[2]), 1, PDL_PPSYM_OP) \
204             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, lb, (__privtrans->pdls[3]), 1, PDL_PPSYM_OP) \
205             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, ub, (__privtrans->pdls[4]), 1, PDL_PPSYM_OP) \
206             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_iopts, iopts, (__privtrans->pdls[5]), 1, PDL_PPSYM_PARAM_iopts) \
207             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, opts, (__privtrans->pdls[6]), 1, PDL_PPSYM_OP) \
208             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, work, (__privtrans->pdls[7]), 1, PDL_PPSYM_OP) \
209             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, covar, (__privtrans->pdls[8]), 1, PDL_PPSYM_OP) \
210             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_returnval, returnval, (__privtrans->pdls[9]), 1, PDL_PPSYM_PARAM_returnval) \
211             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, pout, (__privtrans->pdls[10]), 1, PDL_PPSYM_OP) \
212             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, info, (__privtrans->pdls[11]), 1, PDL_PPSYM_OP)
213             #endif
214             #define PDL_IF_BAD(t,f) f
215 5           switch (__privtrans->__datatype) { /* Start generic switch */
216 2           case PDL_F: {
217 2 50         PDL_DECLARE_PARAMS_levmar_diff_lb_ub_1(PDL_Float,F,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          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
218             {
219             int * iopts;
220             int maxits;
221 2           void * tfuncn = (void *) __params->funcn;
222 2           void * tsfuncn = (void *) __params->sfuncn;
223             PDL_Float * pcovar;
224             PDL_Float * pwork;
225             ;
226 2           DFP *dat = (void *) __params->indat;
227 2           DFP_check( &dat, PDL_F, __privtrans->ind_sizes[1], __privtrans->ind_sizes[2],
228 2           __privtrans->ind_sizes[4], t_datap );
229 8 50         PDL_BROADCASTLOOP_START_levmar_diff_lb_ub_readdata
    50          
    50          
    50          
    50          
    100          
    100          
230 10 100         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
231 8           (pout_datap)[0+(__inc_pout_m*(m))] = (p_datap)[0+(__inc_p_m*(m))];
232             }} /* Close m */
233 2           iopts = iopts_datap;
234 2 50         pcovar = __params->want_covar == 1 ? covar_datap : NULL;
235 2           pwork = 0 == 1 ? NULL : work_datap;
236 2           maxits = iopts[0]; /* for clarity. we hope optimized away */
237 2           (returnval_datap)[0] = slevmar_bc_dif (
238             tsfuncn ,
239 2           pout_datap, x_datap, __privtrans->ind_sizes[1], __privtrans->ind_sizes[2], lb_datap, ub_datap, NULL,
240             maxits, opts_datap, info_datap, pwork, pcovar, dat);
241 2 50         PDL_BROADCASTLOOP_END_levmar_diff_lb_ub_readdata
    50          
242             }
243 2           } break;
244 3           case PDL_D: {
245 3 50         PDL_DECLARE_PARAMS_levmar_diff_lb_ub_1(PDL_Double,D,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          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
246             {
247             int * iopts;
248             int maxits;
249 3           void * tfuncn = (void *) __params->funcn;
250 3           void * tsfuncn = (void *) __params->sfuncn;
251             PDL_Double * pcovar;
252             PDL_Double * pwork;
253             ;
254 3           DFP *dat = (void *) __params->indat;
255 3           DFP_check( &dat, PDL_D, __privtrans->ind_sizes[1], __privtrans->ind_sizes[2],
256 3           __privtrans->ind_sizes[4], t_datap );
257 12 50         PDL_BROADCASTLOOP_START_levmar_diff_lb_ub_readdata
    50          
    50          
    50          
    50          
    100          
    100          
258 14 100         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
259 11           (pout_datap)[0+(__inc_pout_m*(m))] = (p_datap)[0+(__inc_p_m*(m))];
260             }} /* Close m */
261 3           iopts = iopts_datap;
262 3 50         pcovar = __params->want_covar == 1 ? covar_datap : NULL;
263 3           pwork = 0 == 1 ? NULL : work_datap;
264 3           maxits = iopts[0]; /* for clarity. we hope optimized away */
265 3           (returnval_datap)[0] = dlevmar_bc_dif (
266             tfuncn ,
267 3           pout_datap, x_datap, __privtrans->ind_sizes[1], __privtrans->ind_sizes[2], lb_datap, ub_datap, NULL,
268             maxits, opts_datap, info_datap, pwork, pcovar, dat);
269 3 50         PDL_BROADCASTLOOP_END_levmar_diff_lb_ub_readdata
    50          
270             }
271 3           } break;
272 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in levmar_diff_lb_ub: unhandled datatype(%d), only handles (FD)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
273             }
274             #undef PDL_IF_BAD
275 5           return PDL_err;
276             }
277              
278             static pdl_datatypes pdl_levmar_diff_lb_ub_vtable_gentypes[] = { PDL_F, PDL_D, -1 };
279             static PDL_Indx pdl_levmar_diff_lb_ub_vtable_realdims[] = { 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1 };
280             static char *pdl_levmar_diff_lb_ub_vtable_parnames[] = { "p","x","t","lb","ub","iopts","opts","work","covar","returnval","pout","info" };
281             static short pdl_levmar_diff_lb_ub_vtable_parflags[] = {
282             0,
283             PDL_PARAM_ISPHYS,
284             PDL_PARAM_ISPHYS,
285             PDL_PARAM_ISPHYS,
286             PDL_PARAM_ISPHYS,
287             PDL_PARAM_ISPHYS|PDL_PARAM_ISTYPED,
288             PDL_PARAM_ISPHYS,
289             PDL_PARAM_ISCREAT|PDL_PARAM_ISPHYS|PDL_PARAM_ISTEMP|PDL_PARAM_ISWRITE,
290             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISPHYS|PDL_PARAM_ISWRITE,
291             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE,
292             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISPHYS|PDL_PARAM_ISWRITE,
293             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISPHYS|PDL_PARAM_ISWRITE
294             };
295             static pdl_datatypes pdl_levmar_diff_lb_ub_vtable_partypes[] = { -1, -1, -1, -1, -1, PDL_L, -1, -1, -1, PDL_L, -1, -1 };
296             static PDL_Indx pdl_levmar_diff_lb_ub_vtable_realdims_starts[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 10, 11 };
297             static PDL_Indx pdl_levmar_diff_lb_ub_vtable_realdims_ind_ids[] = { 1, 2, 4, 1, 1, 0, 3, 6, 1, 1, 1, 5 };
298             static char *pdl_levmar_diff_lb_ub_vtable_indnames[] = { "in","m","n","nopt","nt","q","wn" };
299             pdl_transvtable pdl_levmar_diff_lb_ub_vtable = {
300             PDL_TRANS_DO_BROADCAST, 0, pdl_levmar_diff_lb_ub_vtable_gentypes, 7, 12, NULL /*CORE21*/,
301             pdl_levmar_diff_lb_ub_vtable_realdims, pdl_levmar_diff_lb_ub_vtable_parnames,
302             pdl_levmar_diff_lb_ub_vtable_parflags, pdl_levmar_diff_lb_ub_vtable_partypes,
303             pdl_levmar_diff_lb_ub_vtable_realdims_starts, pdl_levmar_diff_lb_ub_vtable_realdims_ind_ids, 12,
304             7, pdl_levmar_diff_lb_ub_vtable_indnames,
305             pdl_levmar_diff_lb_ub_redodims, pdl_levmar_diff_lb_ub_readdata, NULL,
306             NULL,
307             sizeof(pdl_params_levmar_diff_lb_ub),"PDL::Fit::Levmar::levmar_diff_lb_ub"
308             };
309              
310              
311 5           pdl_error pdl_run_levmar_diff_lb_ub(pdl *p,pdl *x,pdl *t,pdl *lb,pdl *ub,pdl *iopts,pdl *opts,pdl *covar,pdl *returnval,pdl *pout,pdl *info,IV funcn,IV sfuncn,IV indat,int want_covar) {
312 5           pdl_error PDL_err = {0, NULL, 0};
313 5 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
314 5           pdl_trans *__privtrans = PDL->create_trans(&pdl_levmar_diff_lb_ub_vtable);
315 5 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
316 5           pdl_params_levmar_diff_lb_ub *__params = __privtrans->params;
317 5           __privtrans->pdls[0] = p;
318 5           __privtrans->pdls[1] = x;
319 5           __privtrans->pdls[2] = t;
320 5           __privtrans->pdls[3] = lb;
321 5           __privtrans->pdls[4] = ub;
322 5           __privtrans->pdls[5] = iopts;
323 5           __privtrans->pdls[6] = opts;
324 5           __privtrans->pdls[8] = covar;
325 5           __privtrans->pdls[9] = returnval;
326 5           __privtrans->pdls[10] = pout;
327 5           __privtrans->pdls[11] = info;
328 5 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
329 5           (__params->funcn) = (funcn); /* CType.get_copy */
330 5           (__params->sfuncn) = (sfuncn); /* CType.get_copy */
331 5           (__params->indat) = (indat); /* CType.get_copy */
332 5           (__params->want_covar) = (want_covar); /* CType.get_copy */
333 5 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
334 5           return PDL_err;
335             }