File Coverage

lib/PDL/Ufunc-pp-numdiff.c
Criterion Covered Total %
statement 28 127 22.0
branch 27 520 5.1
condition n/a
subroutine n/a
pod n/a
total 55 647 8.5


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/Ufunc.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_Ufunc
21             extern Core* PDL; /* Structure hold core C functions */
22              
23             #line 1857 "lib/PDL/PP.pm"
24             pdl_error pdl_numdiff_readdata(pdl_trans *__privtrans) {
25             pdl_error PDL_err = {0, NULL, 0};
26             #line 27 "lib/PDL/Ufunc-pp-numdiff.c"
27 4           register PDL_Indx __t_size = __privtrans->ind_sizes[0];
28 4 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in numdiff:" "broadcast.incs NULL");
29             /* broadcastloop declarations */
30             int __brcloopval;
31             register PDL_Indx __tind0,__tind1; /* counters along dim */
32 4           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
33             /* dims here are how many steps along those dims */
34 4           register PDL_Indx __tinc0_x = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
35 4           register PDL_Indx __tinc0_dx = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
36 4           register PDL_Indx __tinc1_x = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
37 4           register PDL_Indx __tinc1_dx = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
38             #define PDL_BROADCASTLOOP_START_numdiff_readdata PDL_BROADCASTLOOP_START( \
39             readdata, \
40             __privtrans->broadcast, \
41             __privtrans->vtable, \
42             x_datap += __offsp[0]; \
43             dx_datap += __offsp[1]; \
44             , \
45             ( ,x_datap += __tinc1_x - __tinc0_x * __tdims0 \
46             ,dx_datap += __tinc1_dx - __tinc0_dx * __tdims0 \
47             ), \
48             ( ,x_datap += __tinc0_x \
49             ,dx_datap += __tinc0_dx \
50             ) \
51             )
52             #define PDL_BROADCASTLOOP_END_numdiff_readdata PDL_BROADCASTLOOP_END( \
53             __privtrans->broadcast, \
54             x_datap -= __tinc1_x * __tdims1 + __offsp[0]; \
55             dx_datap -= __tinc1_dx * __tdims1 + __offsp[1]; \
56             )
57 4           register PDL_Indx __inc_dx_t = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_dx_t;
58 4           register PDL_Indx __inc_x_t = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_x_t;
59             #ifndef PDL_DECLARE_PARAMS_numdiff_1
60             #define PDL_DECLARE_PARAMS_numdiff_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
61             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, x, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
62             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, dx, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP)
63             #endif
64             #define PDL_IF_BAD(t,f) f
65 4           switch (__privtrans->__datatype) { /* Start generic switch */
66 0           case PDL_SB: {
67 0 0         PDL_DECLARE_PARAMS_numdiff_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
68 0 0         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    0          
    0          
    0          
    0          
    0          
    0          
69 0 0         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
70 0 0         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
71             }} /* Close t=::-1 */
72 0 0         }PDL_BROADCASTLOOP_END_numdiff_readdata
    0          
73 0           } break;
74 0           case PDL_B: {
75 0 0         PDL_DECLARE_PARAMS_numdiff_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
76 0 0         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    0          
    0          
    0          
    0          
    0          
    0          
77 0 0         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
78 0 0         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
79             }} /* Close t=::-1 */
80 0 0         }PDL_BROADCASTLOOP_END_numdiff_readdata
    0          
81 0           } break;
82 0           case PDL_S: {
83 0 0         PDL_DECLARE_PARAMS_numdiff_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
84 0 0         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    0          
    0          
    0          
    0          
    0          
    0          
85 0 0         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
86 0 0         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
87             }} /* Close t=::-1 */
88 0 0         }PDL_BROADCASTLOOP_END_numdiff_readdata
    0          
89 0           } break;
90 0           case PDL_US: {
91 0 0         PDL_DECLARE_PARAMS_numdiff_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
92 0 0         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    0          
    0          
    0          
    0          
    0          
    0          
93 0 0         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
94 0 0         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
95             }} /* Close t=::-1 */
96 0 0         }PDL_BROADCASTLOOP_END_numdiff_readdata
    0          
97 0           } break;
98 0           case PDL_L: {
99 0 0         PDL_DECLARE_PARAMS_numdiff_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
100 0 0         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    0          
    0          
    0          
    0          
    0          
    0          
101 0 0         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
102 0 0         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
103             }} /* Close t=::-1 */
104 0 0         }PDL_BROADCASTLOOP_END_numdiff_readdata
    0          
105 0           } break;
106 0           case PDL_UL: {
107 0 0         PDL_DECLARE_PARAMS_numdiff_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
108 0 0         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    0          
    0          
    0          
    0          
    0          
    0          
109 0 0         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
110 0 0         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
111             }} /* Close t=::-1 */
112 0 0         }PDL_BROADCASTLOOP_END_numdiff_readdata
    0          
113 0           } break;
114 0           case PDL_IND: {
115 0 0         PDL_DECLARE_PARAMS_numdiff_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
116 0 0         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    0          
    0          
    0          
    0          
    0          
    0          
117 0 0         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
118 0 0         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
119             }} /* Close t=::-1 */
120 0 0         }PDL_BROADCASTLOOP_END_numdiff_readdata
    0          
121 0           } break;
122 0           case PDL_ULL: {
123 0 0         PDL_DECLARE_PARAMS_numdiff_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
124 0 0         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    0          
    0          
    0          
    0          
    0          
    0          
125 0 0         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
126 0 0         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
127             }} /* Close t=::-1 */
128 0 0         }PDL_BROADCASTLOOP_END_numdiff_readdata
    0          
129 0           } break;
130 0           case PDL_LL: {
131 0 0         PDL_DECLARE_PARAMS_numdiff_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
132 0 0         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    0          
    0          
    0          
    0          
    0          
    0          
133 0 0         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
134 0 0         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
135             }} /* Close t=::-1 */
136 0 0         }PDL_BROADCASTLOOP_END_numdiff_readdata
    0          
137 0           } break;
138 0           case PDL_F: {
139 0 0         PDL_DECLARE_PARAMS_numdiff_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
140 0 0         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    0          
    0          
    0          
    0          
    0          
    0          
141 0 0         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
142 0 0         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
143             }} /* Close t=::-1 */
144 0 0         }PDL_BROADCASTLOOP_END_numdiff_readdata
    0          
145 0           } break;
146 4           case PDL_D: {
147 4 100         PDL_DECLARE_PARAMS_numdiff_1(PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
148 22 50         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    50          
    50          
    50          
    50          
    100          
    100          
149 52 100         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
150 42 100         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
151             }} /* Close t=::-1 */
152 4 50         }PDL_BROADCASTLOOP_END_numdiff_readdata
    50          
153 4           } break;
154 0           case PDL_LD: {
155 0 0         PDL_DECLARE_PARAMS_numdiff_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
156 0 0         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    0          
    0          
    0          
    0          
    0          
    0          
157 0 0         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
158 0 0         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
159             }} /* Close t=::-1 */
160 0 0         }PDL_BROADCASTLOOP_END_numdiff_readdata
    0          
161 0           } break;
162 0           case PDL_CF: {
163 0 0         PDL_DECLARE_PARAMS_numdiff_1(PDL_CFloat,G)
    0          
    0          
    0          
    0          
    0          
164 0 0         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    0          
    0          
    0          
    0          
    0          
    0          
165 0 0         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
166 0 0         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
167             }} /* Close t=::-1 */
168 0 0         }PDL_BROADCASTLOOP_END_numdiff_readdata
    0          
169 0           } break;
170 0           case PDL_CD: {
171 0 0         PDL_DECLARE_PARAMS_numdiff_1(PDL_CDouble,C)
    0          
    0          
    0          
    0          
    0          
172 0 0         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    0          
    0          
    0          
    0          
    0          
    0          
173 0 0         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
174 0 0         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
175             }} /* Close t=::-1 */
176 0 0         }PDL_BROADCASTLOOP_END_numdiff_readdata
    0          
177 0           } break;
178 0           case PDL_CLD: {
179 0 0         PDL_DECLARE_PARAMS_numdiff_1(PDL_CLDouble,H)
    0          
    0          
    0          
    0          
    0          
180 0 0         PDL_BROADCASTLOOP_START_numdiff_readdata {/* do it in reverse so inplace works */
    0          
    0          
    0          
    0          
    0          
    0          
181 0 0         {/* Open t=::-1 */ PDL_EXPAND2(register PDL_Indx t=(__t_size-1), __t_stop=0); for(; t>=__t_stop; t+=-1) {
182 0 0         (dx_datap)[0+(__inc_dx_t*(t))] = t ? (x_datap)[0+(__inc_x_t*(t))] - (x_datap)[0+(__inc_x_t*(t-1))] : (x_datap)[0+(__inc_x_t*(t))];
183             }} /* Close t=::-1 */
184 0 0         }PDL_BROADCASTLOOP_END_numdiff_readdata
    0          
185 0           } break;
186 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in numdiff: unhandled datatype(%d), only handles (ABSULKNPQFDEGCH)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
187             }
188             #undef PDL_IF_BAD
189 4           return PDL_err;
190             }
191              
192             static pdl_datatypes pdl_numdiff_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 };
193             static PDL_Indx pdl_numdiff_vtable_realdims[] = { 1, 1 };
194             static char *pdl_numdiff_vtable_parnames[] = { "x","dx" };
195             static short pdl_numdiff_vtable_parflags[] = {
196             0,
197             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
198             };
199             static pdl_datatypes pdl_numdiff_vtable_partypes[] = { -1, -1 };
200             static PDL_Indx pdl_numdiff_vtable_realdims_starts[] = { 0, 1 };
201             static PDL_Indx pdl_numdiff_vtable_realdims_ind_ids[] = { 0, 0 };
202             static char *pdl_numdiff_vtable_indnames[] = { "t" };
203             pdl_transvtable pdl_numdiff_vtable = {
204             PDL_TRANS_DO_BROADCAST, 0, pdl_numdiff_vtable_gentypes, 1, 2, NULL /*CORE21*/,
205             pdl_numdiff_vtable_realdims, pdl_numdiff_vtable_parnames,
206             pdl_numdiff_vtable_parflags, pdl_numdiff_vtable_partypes,
207             pdl_numdiff_vtable_realdims_starts, pdl_numdiff_vtable_realdims_ind_ids, 2,
208             1, pdl_numdiff_vtable_indnames,
209             NULL, pdl_numdiff_readdata, NULL,
210             NULL,
211             0,"PDL::Ufunc::numdiff"
212             };
213              
214              
215 4           pdl_error pdl_run_numdiff(pdl *x,pdl *dx) {
216 4           pdl_error PDL_err = {0, NULL, 0};
217 4 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
218 4           pdl_trans *__privtrans = PDL->create_trans(&pdl_numdiff_vtable);
219 4 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
220 4           __privtrans->pdls[0] = x;
221 4           __privtrans->pdls[1] = dx;
222 4 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
223 4 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
224 4           return PDL_err;
225             }