File Coverage

lib/PDL/Stats/Kmeans-pp-which_cluster.c
Criterion Covered Total %
statement 35 78 44.8
branch 31 184 16.8
condition n/a
subroutine n/a
pod n/a
total 66 262 25.1


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/Stats/Kmeans.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_Stats_Kmeans
21             extern Core* PDL; /* Structure hold core C functions */
22             #line 23 "lib/PDL/Stats/Kmeans-pp-which_cluster.c"
23              
24             #include
25             #include
26             #include
27              
28              
29             #line 1857 "lib/PDL/PP.pm"
30             pdl_error pdl_which_cluster_readdata(pdl_trans *__privtrans) {
31             pdl_error PDL_err = {0, NULL, 0};
32             #line 33 "lib/PDL/Stats/Kmeans-pp-which_cluster.c"
33 1           register PDL_Indx __c_size = __privtrans->ind_sizes[0];
34 1           register PDL_Indx __o_size = __privtrans->ind_sizes[1];
35 1 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in which_cluster:" "broadcast.incs NULL");
36             /* broadcastloop declarations */
37             int __brcloopval;
38             register PDL_Indx __tind0,__tind1; /* counters along dim */
39 1           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
40             /* dims here are how many steps along those dims */
41 1           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
42 1           register PDL_Indx __tinc0_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
43 1           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
44 1           register PDL_Indx __tinc1_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
45             #define PDL_BROADCASTLOOP_START_which_cluster_readdata PDL_BROADCASTLOOP_START( \
46             readdata, \
47             __privtrans->broadcast, \
48             __privtrans->vtable, \
49             a_datap += __offsp[0]; \
50             b_datap += __offsp[1]; \
51             , \
52             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
53             ,b_datap += __tinc1_b - __tinc0_b * __tdims0 \
54             ), \
55             ( ,a_datap += __tinc0_a \
56             ,b_datap += __tinc0_b \
57             ) \
58             )
59             #define PDL_BROADCASTLOOP_END_which_cluster_readdata PDL_BROADCASTLOOP_END( \
60             __privtrans->broadcast, \
61             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
62             b_datap -= __tinc1_b * __tdims1 + __offsp[1]; \
63             )
64 1           register PDL_Indx __inc_a_o = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a_o;register PDL_Indx __inc_a_c = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,1)]; (void)__inc_a_c;
65 1           register PDL_Indx __inc_b_o = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_b_o;
66             #ifndef PDL_DECLARE_PARAMS_which_cluster_1
67             #define PDL_DECLARE_PARAMS_which_cluster_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_a,PDL_PPSYM_PARAM_a,PDL_TYPE_PARAM_b,PDL_PPSYM_PARAM_b) \
68             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_a, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_PARAM_a) \
69             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_b, b, (__privtrans->pdls[1]), 1, PDL_PPSYM_PARAM_b)
70             #endif
71 1 50         if ( __privtrans->bvalflag ) { /* ** do 'bad' Code ** */
72             #define PDL_BAD_CODE
73             #define PDL_IF_BAD(t,f) t
74 0           switch (__privtrans->__datatype) { /* Start generic switch */
75 0           case PDL_US: {
76 0 0         PDL_DECLARE_PARAMS_which_cluster_1(PDL_Ushort,U,PDL_Short,S,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
77 0 0         PDL_BROADCASTLOOP_START_which_cluster_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
78 0 0         {/* Open o */ PDL_EXPAND2(register PDL_Indx o=0, __o_stop=(__o_size)); for(; o<__o_stop; o+=1) {
79 0           PDL_Indx cl=-1;
80 0 0         {/* Open c */ PDL_EXPAND2(register PDL_Indx c=0, __c_stop=(__c_size)); for(; c<__c_stop; c+=1) {
81 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_o*(o))+(__inc_a_c*(c))],a_badval,S,a_badval_isnan)) continue;,)
    0          
82 0 0         if (!(a_datap)[0+(__inc_a_o*(o))+(__inc_a_c*(c))]) continue;
83 0           cl = c;
84 0           break;
85             }} /* Close c */
86 0 0         PDL_IF_BAD(if (cl==-1) { (b_datap)[0+(__inc_b_o*(o))]=b_badval; continue; },)
87 0           (b_datap)[0+(__inc_b_o*(o))] = cl;
88             }} /* Close o */
89 0 0         }PDL_BROADCASTLOOP_END_which_cluster_readdata
    0          
90 0           } break;
91 0           case PDL_L: {
92 0 0         PDL_DECLARE_PARAMS_which_cluster_1(PDL_Long,L,PDL_Short,S,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
93 0 0         PDL_BROADCASTLOOP_START_which_cluster_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
94 0 0         {/* Open o */ PDL_EXPAND2(register PDL_Indx o=0, __o_stop=(__o_size)); for(; o<__o_stop; o+=1) {
95 0           PDL_Indx cl=-1;
96 0 0         {/* Open c */ PDL_EXPAND2(register PDL_Indx c=0, __c_stop=(__c_size)); for(; c<__c_stop; c+=1) {
97 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_o*(o))+(__inc_a_c*(c))],a_badval,S,a_badval_isnan)) continue;,)
    0          
98 0 0         if (!(a_datap)[0+(__inc_a_o*(o))+(__inc_a_c*(c))]) continue;
99 0           cl = c;
100 0           break;
101             }} /* Close c */
102 0 0         PDL_IF_BAD(if (cl==-1) { (b_datap)[0+(__inc_b_o*(o))]=b_badval; continue; },)
103 0           (b_datap)[0+(__inc_b_o*(o))] = cl;
104             }} /* Close o */
105 0 0         }PDL_BROADCASTLOOP_END_which_cluster_readdata
    0          
106 0           } break;
107 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in which_cluster: unhandled datatype(%d), only handles (UL)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
108             }
109             #undef PDL_BAD_CODE
110             #undef PDL_IF_BAD
111             } else { /* ** else do 'good' Code ** */
112             #define PDL_IF_BAD(t,f) f
113 1           switch (__privtrans->__datatype) { /* Start generic switch */
114 0           case PDL_US: {
115 0 0         PDL_DECLARE_PARAMS_which_cluster_1(PDL_Ushort,U,PDL_Short,S,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
116 0 0         PDL_BROADCASTLOOP_START_which_cluster_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
117 0 0         {/* Open o */ PDL_EXPAND2(register PDL_Indx o=0, __o_stop=(__o_size)); for(; o<__o_stop; o+=1) {
118 0           PDL_Indx cl=-1;
119 0 0         {/* Open c */ PDL_EXPAND2(register PDL_Indx c=0, __c_stop=(__c_size)); for(; c<__c_stop; c+=1) {
120             PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_o*(o))+(__inc_a_c*(c))],a_badval,S,a_badval_isnan)) continue;,)
121 0 0         if (!(a_datap)[0+(__inc_a_o*(o))+(__inc_a_c*(c))]) continue;
122 0           cl = c;
123 0           break;
124             }} /* Close c */
125             PDL_IF_BAD(if (cl==-1) { (b_datap)[0+(__inc_b_o*(o))]=b_badval; continue; },)
126 0           (b_datap)[0+(__inc_b_o*(o))] = cl;
127             }} /* Close o */
128 0 0         }PDL_BROADCASTLOOP_END_which_cluster_readdata
    0          
129 0           } break;
130 1           case PDL_L: {
131 1 50         PDL_DECLARE_PARAMS_which_cluster_1(PDL_Long,L,PDL_Short,S,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
132 5 50         PDL_BROADCASTLOOP_START_which_cluster_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
133 10 100         {/* Open o */ PDL_EXPAND2(register PDL_Indx o=0, __o_stop=(__o_size)); for(; o<__o_stop; o+=1) {
134 8           PDL_Indx cl=-1;
135 14 100         {/* Open c */ PDL_EXPAND2(register PDL_Indx c=0, __c_stop=(__c_size)); for(; c<__c_stop; c+=1) {
136             PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_o*(o))+(__inc_a_c*(c))],a_badval,S,a_badval_isnan)) continue;,)
137 13 100         if (!(a_datap)[0+(__inc_a_o*(o))+(__inc_a_c*(c))]) continue;
138 7           cl = c;
139 7           break;
140             }} /* Close c */
141             PDL_IF_BAD(if (cl==-1) { (b_datap)[0+(__inc_b_o*(o))]=b_badval; continue; },)
142 8           (b_datap)[0+(__inc_b_o*(o))] = cl;
143             }} /* Close o */
144 1 50         }PDL_BROADCASTLOOP_END_which_cluster_readdata
    50          
145 1           } break;
146 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in which_cluster: unhandled datatype(%d), only handles (UL)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
147             }
148             #undef PDL_IF_BAD
149             }
150 1           return PDL_err;
151             }
152              
153             static pdl_datatypes pdl_which_cluster_vtable_gentypes[] = { PDL_US, PDL_L, -1 };
154             static PDL_Indx pdl_which_cluster_vtable_realdims[] = { 2, 1 };
155             static char *pdl_which_cluster_vtable_parnames[] = { "a","b" };
156             static short pdl_which_cluster_vtable_parflags[] = {
157             PDL_PARAM_ISTYPED,
158             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
159             };
160             static pdl_datatypes pdl_which_cluster_vtable_partypes[] = { PDL_S, PDL_IND };
161             static PDL_Indx pdl_which_cluster_vtable_realdims_starts[] = { 0, 2 };
162             static PDL_Indx pdl_which_cluster_vtable_realdims_ind_ids[] = { 1, 0, 1 };
163             static char *pdl_which_cluster_vtable_indnames[] = { "c","o" };
164             pdl_transvtable pdl_which_cluster_vtable = {
165             PDL_TRANS_DO_BROADCAST|PDL_TRANS_BADPROCESS, 0, pdl_which_cluster_vtable_gentypes, 1, 2, NULL /*CORE21*/,
166             pdl_which_cluster_vtable_realdims, pdl_which_cluster_vtable_parnames,
167             pdl_which_cluster_vtable_parflags, pdl_which_cluster_vtable_partypes,
168             pdl_which_cluster_vtable_realdims_starts, pdl_which_cluster_vtable_realdims_ind_ids, 3,
169             2, pdl_which_cluster_vtable_indnames,
170             NULL, pdl_which_cluster_readdata, NULL,
171             NULL,
172             0,"PDL::Stats::Kmeans::which_cluster"
173             };
174              
175              
176 1           pdl_error pdl_run_which_cluster(pdl *a,pdl *b) {
177 1           pdl_error PDL_err = {0, NULL, 0};
178 1 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
179 1           pdl_trans *__privtrans = PDL->create_trans(&pdl_which_cluster_vtable);
180 1 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
181 1           __privtrans->pdls[0] = a;
182 1           __privtrans->pdls[1] = b;
183 1 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
184 1 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
185 1           return PDL_err;
186             }