File Coverage

lib/PDL/Ops-pp-czip.c
Criterion Covered Total %
statement 41 70 58.5
branch 110 442 24.8
condition n/a
subroutine n/a
pod n/a
total 151 512 29.4


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/Ops.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_Ops
21             extern Core* PDL; /* Structure hold core C functions */
22             #line 23 "lib/PDL/Ops-pp-czip.c"
23              
24             #include
25              
26             #define MOD(X,N) (((N) == 0) ? 0 : ( (X) - (PDL_ABS(N)) * ((long long)((X)/(PDL_ABS(N))) + ( ( ((N) * ((long long)((X)/(N)))) != (X) ) ? ( ( ((N)<0) ? 1 : 0 ) + ( (((X)<0) ? -1 : 0))) : 0 ))))
27             #define BU_MOD(X,N)(((N) == 0) ? 0 : ( (X)-(N)*((uint64_t)((X)/(N))) ))
28             #define SPACE(A,B) ( ((A)<(B)) ? -1 : ((A)!=(B)) )
29              
30             #line 83 "lib/PDL/Ops.pd"
31             #define PDL_BADVAL_WARN_X(datatype, ctype, ppsym, ...) \
32             bad_anyval.type = datatype; bad_anyval.value.ppsym = PDL->bvals.ppsym;
33             #define PDL_BADVAL_WARN(var) \
34             { \
35             PDL_Anyval bad_anyval = { PDL_INVALID, {0} }; \
36             if (!(var->has_badvalue && var->badvalue.type != var->datatype)) { \
37             if (var->has_badvalue) \
38             bad_anyval = var->badvalue; \
39             else { \
40             PDL_GENERICSWITCH(PDL_TYPELIST_ALL, var->datatype, PDL_BADVAL_WARN_X, ) \
41             } \
42             } \
43             if (bad_anyval.type < 0) \
44             barf("Error getting badvalue, type=%d", bad_anyval.type); \
45             complex double bad_c; \
46             ANYVAL_TO_CTYPE(bad_c, complex double, bad_anyval); \
47             if( bad_c == 0 || bad_c == 1 ) \
48             warn(#var " badvalue is set to 0 or 1. This will cause data loss when using badvalues for comparison operators."); \
49             }
50              
51             #line 1857 "lib/PDL/PP.pm"
52             pdl_error pdl_czip_readdata(pdl_trans *__privtrans) {
53             pdl_error PDL_err = {0, NULL, 0};
54             #line 55 "lib/PDL/Ops-pp-czip.c"
55 43 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in czip:" "broadcast.incs NULL");
56             /* broadcastloop declarations */
57             int __brcloopval;
58             register PDL_Indx __tind0,__tind1; /* counters along dim */
59 43           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
60             /* dims here are how many steps along those dims */
61 43           register PDL_Indx __tinc0_r = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
62 43           register PDL_Indx __tinc0_i = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
63 43           register PDL_Indx __tinc0_c = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
64 43           register PDL_Indx __tinc1_r = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
65 43           register PDL_Indx __tinc1_i = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
66 43           register PDL_Indx __tinc1_c = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
67             #define PDL_BROADCASTLOOP_START_czip_readdata PDL_BROADCASTLOOP_START( \
68             readdata, \
69             __privtrans->broadcast, \
70             __privtrans->vtable, \
71             r_datap += __offsp[0]; \
72             i_datap += __offsp[1]; \
73             c_datap += __offsp[2]; \
74             , \
75             ( ,r_datap += __tinc1_r - __tinc0_r * __tdims0 \
76             ,i_datap += __tinc1_i - __tinc0_i * __tdims0 \
77             ,c_datap += __tinc1_c - __tinc0_c * __tdims0 \
78             ), \
79             ( ,r_datap += __tinc0_r \
80             ,i_datap += __tinc0_i \
81             ,c_datap += __tinc0_c \
82             ) \
83             )
84             #define PDL_BROADCASTLOOP_END_czip_readdata PDL_BROADCASTLOOP_END( \
85             __privtrans->broadcast, \
86             r_datap -= __tinc1_r * __tdims1 + __offsp[0]; \
87             i_datap -= __tinc1_i * __tdims1 + __offsp[1]; \
88             c_datap -= __tinc1_c * __tdims1 + __offsp[2]; \
89             )
90             #ifndef PDL_DECLARE_PARAMS_czip_1
91             #define PDL_DECLARE_PARAMS_czip_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_r,PDL_PPSYM_PARAM_r,PDL_TYPE_PARAM_i,PDL_PPSYM_PARAM_i,PDL_TYPE_PARAM_c,PDL_PPSYM_PARAM_c) \
92             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_r, r, (__privtrans->pdls[0]), 1, PDL_PPSYM_PARAM_r) \
93             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_i, i, (__privtrans->pdls[1]), 1, PDL_PPSYM_PARAM_i) \
94             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_c, c, (__privtrans->pdls[2]), 1, PDL_PPSYM_PARAM_c)
95             #endif
96             #define PDL_IF_BAD(t,f) f
97 43           switch (__privtrans->__datatype) { /* Start generic switch */
98 2           case PDL_SB: {
99 2 50         PDL_DECLARE_PARAMS_czip_1(PDL_SByte,A,PDL_SByte,A,PDL_SByte,A,PDL_CFloat,G)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
100 8 50         PDL_BROADCASTLOOP_START_czip_readdata {(c_datap)[0] = (r_datap)[0] + (i_datap)[0] * I;}PDL_BROADCASTLOOP_END_czip_readdata
    50          
    50          
    50          
    50          
    100          
    100          
    50          
    50          
101 2           } break;
102 0           case PDL_B: {
103 0 0         PDL_DECLARE_PARAMS_czip_1(PDL_Byte,B,PDL_Byte,B,PDL_Byte,B,PDL_CFloat,G)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
104 0 0         PDL_BROADCASTLOOP_START_czip_readdata {(c_datap)[0] = (r_datap)[0] + (i_datap)[0] * I;}PDL_BROADCASTLOOP_END_czip_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
105 0           } break;
106 0           case PDL_S: {
107 0 0         PDL_DECLARE_PARAMS_czip_1(PDL_Short,S,PDL_Short,S,PDL_Short,S,PDL_CFloat,G)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
108 0 0         PDL_BROADCASTLOOP_START_czip_readdata {(c_datap)[0] = (r_datap)[0] + (i_datap)[0] * I;}PDL_BROADCASTLOOP_END_czip_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
109 0           } break;
110 0           case PDL_US: {
111 0 0         PDL_DECLARE_PARAMS_czip_1(PDL_Ushort,U,PDL_Ushort,U,PDL_Ushort,U,PDL_CFloat,G)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
112 0 0         PDL_BROADCASTLOOP_START_czip_readdata {(c_datap)[0] = (r_datap)[0] + (i_datap)[0] * I;}PDL_BROADCASTLOOP_END_czip_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
113 0           } break;
114 2           case PDL_L: {
115 2 50         PDL_DECLARE_PARAMS_czip_1(PDL_Long,L,PDL_Long,L,PDL_Long,L,PDL_CFloat,G)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
116 295684 50         PDL_BROADCASTLOOP_START_czip_readdata {(c_datap)[0] = (r_datap)[0] + (i_datap)[0] * I;}PDL_BROADCASTLOOP_END_czip_readdata
    50          
    50          
    50          
    50          
    100          
    100          
    50          
    50          
117 2           } break;
118 0           case PDL_UL: {
119 0 0         PDL_DECLARE_PARAMS_czip_1(PDL_ULong,K,PDL_ULong,K,PDL_ULong,K,PDL_CFloat,G)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
120 0 0         PDL_BROADCASTLOOP_START_czip_readdata {(c_datap)[0] = (r_datap)[0] + (i_datap)[0] * I;}PDL_BROADCASTLOOP_END_czip_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
121 0           } break;
122 0           case PDL_IND: {
123 0 0         PDL_DECLARE_PARAMS_czip_1(PDL_Indx,N,PDL_Indx,N,PDL_Indx,N,PDL_CFloat,G)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
124 0 0         PDL_BROADCASTLOOP_START_czip_readdata {(c_datap)[0] = (r_datap)[0] + (i_datap)[0] * I;}PDL_BROADCASTLOOP_END_czip_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
125 0           } break;
126 0           case PDL_ULL: {
127 0 0         PDL_DECLARE_PARAMS_czip_1(PDL_ULongLong,P,PDL_ULongLong,P,PDL_ULongLong,P,PDL_CFloat,G)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
128 0 0         PDL_BROADCASTLOOP_START_czip_readdata {(c_datap)[0] = (r_datap)[0] + (i_datap)[0] * I;}PDL_BROADCASTLOOP_END_czip_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
129 0           } break;
130 0           case PDL_LL: {
131 0 0         PDL_DECLARE_PARAMS_czip_1(PDL_LongLong,Q,PDL_LongLong,Q,PDL_LongLong,Q,PDL_CFloat,G)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
132 0 0         PDL_BROADCASTLOOP_START_czip_readdata {(c_datap)[0] = (r_datap)[0] + (i_datap)[0] * I;}PDL_BROADCASTLOOP_END_czip_readdata
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
133 0           } break;
134 11           case PDL_F: {
135 11 100         PDL_DECLARE_PARAMS_czip_1(PDL_Float,F,PDL_Float,F,PDL_Float,F,PDL_CFloat,G)
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    50          
136 591402 50         PDL_BROADCASTLOOP_START_czip_readdata {(c_datap)[0] = (r_datap)[0] + (i_datap)[0] * I;}PDL_BROADCASTLOOP_END_czip_readdata
    50          
    50          
    50          
    50          
    100          
    100          
    50          
    50          
137 11           } break;
138 24           case PDL_D: {
139 24 100         PDL_DECLARE_PARAMS_czip_1(PDL_Double,D,PDL_Double,D,PDL_Double,D,PDL_CDouble,C)
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    50          
140 887179 50         PDL_BROADCASTLOOP_START_czip_readdata {(c_datap)[0] = (r_datap)[0] + (i_datap)[0] * I;}PDL_BROADCASTLOOP_END_czip_readdata
    50          
    50          
    50          
    50          
    100          
    100          
    50          
    50          
141 24           } break;
142 4           case PDL_LD: {
143 4 50         PDL_DECLARE_PARAMS_czip_1(PDL_LDouble,E,PDL_LDouble,E,PDL_LDouble,E,PDL_CLDouble,H)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
144 16 50         PDL_BROADCASTLOOP_START_czip_readdata {(c_datap)[0] = (r_datap)[0] + (i_datap)[0] * I;}PDL_BROADCASTLOOP_END_czip_readdata
    50          
    50          
    50          
    50          
    100          
    100          
    50          
    50          
145 4           } break;
146 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in czip: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
147             }
148             #undef PDL_IF_BAD
149 43           return PDL_err;
150             }
151              
152             static pdl_datatypes pdl_czip_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 };
153             static PDL_Indx pdl_czip_vtable_realdims[] = { 0, 0, 0 };
154             static char *pdl_czip_vtable_parnames[] = { "r","i","c" };
155             static short pdl_czip_vtable_parflags[] = {
156             PDL_PARAM_ISNOTCOMPLEX,
157             PDL_PARAM_ISNOTCOMPLEX,
158             PDL_PARAM_ISCOMPLEX|PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
159             };
160             static pdl_datatypes pdl_czip_vtable_partypes[] = { -1, -1, -1 };
161             static PDL_Indx pdl_czip_vtable_realdims_starts[] = { 0, 0, 0 };
162             static PDL_Indx pdl_czip_vtable_realdims_ind_ids[] = { 0 };
163             static char *pdl_czip_vtable_indnames[] = { "" };
164             pdl_transvtable pdl_czip_vtable = {
165             PDL_TRANS_DO_BROADCAST, 0, pdl_czip_vtable_gentypes, 2, 3, NULL /*CORE21*/,
166             pdl_czip_vtable_realdims, pdl_czip_vtable_parnames,
167             pdl_czip_vtable_parflags, pdl_czip_vtable_partypes,
168             pdl_czip_vtable_realdims_starts, pdl_czip_vtable_realdims_ind_ids, 0,
169             0, pdl_czip_vtable_indnames,
170             NULL, pdl_czip_readdata, NULL,
171             NULL,
172             0,"PDL::Ops::czip"
173             };
174              
175              
176 47           pdl_error pdl_run_czip(pdl *r,pdl *i,pdl *c) {
177 47           pdl_error PDL_err = {0, NULL, 0};
178 47 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
179 47           pdl_trans *__privtrans = PDL->create_trans(&pdl_czip_vtable);
180 47 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
181 47           __privtrans->pdls[0] = r;
182 47           __privtrans->pdls[1] = i;
183 47           __privtrans->pdls[2] = c;
184 47 100         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
185 46 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
186 46           return PDL_err;
187             }