File Coverage

lib/PDL/Math-pp-lgamma.c
Criterion Covered Total %
statement 38 205 18.5
branch 55 1068 5.1
condition n/a
subroutine n/a
pod n/a
total 93 1273 7.3


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/Math.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_Math
21             extern Core* PDL; /* Structure hold core C functions */
22             #line 23 "lib/PDL/Math-pp-lgamma.c"
23              
24             #include
25             #include "protos.h"
26             #include "cpoly.h"
27              
28             #line 1857 "lib/PDL/PP.pm"
29             pdl_error pdl_lgamma_readdata(pdl_trans *__privtrans) {
30             pdl_error PDL_err = {0, NULL, 0};
31             #line 32 "lib/PDL/Math-pp-lgamma.c"
32 3 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in lgamma:" "broadcast.incs NULL");
33             /* broadcastloop declarations */
34             int __brcloopval;
35             register PDL_Indx __tind0,__tind1; /* counters along dim */
36 3           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
37             /* dims here are how many steps along those dims */
38 3           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
39 3           register PDL_Indx __tinc0_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
40 3           register PDL_Indx __tinc0_s = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
41 3           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
42 3           register PDL_Indx __tinc1_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
43 3           register PDL_Indx __tinc1_s = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
44             #define PDL_BROADCASTLOOP_START_lgamma_readdata PDL_BROADCASTLOOP_START( \
45             readdata, \
46             __privtrans->broadcast, \
47             __privtrans->vtable, \
48             a_datap += __offsp[0]; \
49             b_datap += __offsp[1]; \
50             s_datap += __offsp[2]; \
51             , \
52             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
53             ,b_datap += __tinc1_b - __tinc0_b * __tdims0 \
54             ,s_datap += __tinc1_s - __tinc0_s * __tdims0 \
55             ), \
56             ( ,a_datap += __tinc0_a \
57             ,b_datap += __tinc0_b \
58             ,s_datap += __tinc0_s \
59             ) \
60             )
61             #define PDL_BROADCASTLOOP_END_lgamma_readdata PDL_BROADCASTLOOP_END( \
62             __privtrans->broadcast, \
63             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
64             b_datap -= __tinc1_b * __tdims1 + __offsp[1]; \
65             s_datap -= __tinc1_s * __tdims1 + __offsp[2]; \
66             )
67             #ifndef PDL_DECLARE_PARAMS_lgamma_1
68             #define PDL_DECLARE_PARAMS_lgamma_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_s,PDL_PPSYM_PARAM_s) \
69             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
70             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, b, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP) \
71             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_s, s, (__privtrans->pdls[2]), 1, PDL_PPSYM_PARAM_s)
72             #endif
73 3 100         if ( __privtrans->bvalflag ) { /* ** do 'bad' Code ** */
74             #define PDL_BAD_CODE
75             #define PDL_IF_BAD(t,f) t
76 1           switch (__privtrans->__datatype) { /* Start generic switch */
77 0           case PDL_SB: {
78 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_SByte,A,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
79 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
80             extern int signgam;
81 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,A,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
    0          
82 0           (b_datap)[0] = lgamma((a_datap)[0]);
83 0           (s_datap)[0] = signgam;
84             }
85 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
86 0           } break;
87 0           case PDL_B: {
88 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_Byte,B,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
89 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
90             extern int signgam;
91 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,B,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
    0          
92 0           (b_datap)[0] = lgamma((a_datap)[0]);
93 0           (s_datap)[0] = signgam;
94             }
95 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
96 0           } break;
97 0           case PDL_S: {
98 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_Short,S,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
99 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
100             extern int signgam;
101 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,S,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
    0          
102 0           (b_datap)[0] = lgamma((a_datap)[0]);
103 0           (s_datap)[0] = signgam;
104             }
105 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
106 0           } break;
107 0           case PDL_US: {
108 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_Ushort,U,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
109 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
110             extern int signgam;
111 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,U,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
    0          
112 0           (b_datap)[0] = lgamma((a_datap)[0]);
113 0           (s_datap)[0] = signgam;
114             }
115 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
116 0           } break;
117 0           case PDL_L: {
118 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
119 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
120             extern int signgam;
121 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,L,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
    0          
122 0           (b_datap)[0] = lgamma((a_datap)[0]);
123 0           (s_datap)[0] = signgam;
124             }
125 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
126 0           } break;
127 0           case PDL_UL: {
128 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_ULong,K,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
129 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
130             extern int signgam;
131 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,K,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
    0          
132 0           (b_datap)[0] = lgamma((a_datap)[0]);
133 0           (s_datap)[0] = signgam;
134             }
135 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
136 0           } break;
137 0           case PDL_IND: {
138 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_Indx,N,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
139 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
140             extern int signgam;
141 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,N,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
    0          
142 0           (b_datap)[0] = lgamma((a_datap)[0]);
143 0           (s_datap)[0] = signgam;
144             }
145 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
146 0           } break;
147 0           case PDL_ULL: {
148 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_ULongLong,P,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
149 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
150             extern int signgam;
151 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,P,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
    0          
152 0           (b_datap)[0] = lgamma((a_datap)[0]);
153 0           (s_datap)[0] = signgam;
154             }
155 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
156 0           } break;
157 0           case PDL_LL: {
158 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_LongLong,Q,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
159 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
160             extern int signgam;
161 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,Q,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
    0          
162 0           (b_datap)[0] = lgamma((a_datap)[0]);
163 0           (s_datap)[0] = signgam;
164             }
165 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
166 0           } break;
167 0           case PDL_F: {
168 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_Float,F,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
169 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
170             extern int signgam;
171 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,F,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
    0          
172 0           (b_datap)[0] = lgamma((a_datap)[0]);
173 0           (s_datap)[0] = signgam;
174             }
175 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
176 0           } break;
177 1           case PDL_D: {
178 1 50         PDL_DECLARE_PARAMS_lgamma_1(PDL_Double,D,PDL_Long,L)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
179 4 50         PDL_BROADCASTLOOP_START_lgamma_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
180             extern int signgam;
181 1 50         PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,D,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
    50          
182 1           (b_datap)[0] = lgamma((a_datap)[0]);
183 1           (s_datap)[0] = signgam;
184             }
185 1 50         }PDL_BROADCASTLOOP_END_lgamma_readdata
    50          
186 1           } break;
187 0           case PDL_LD: {
188 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_LDouble,E,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
189 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
190             extern int signgam;
191 0 0         PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,E,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
    0          
192 0           (b_datap)[0] = lgamma((a_datap)[0]);
193 0           (s_datap)[0] = signgam;
194             }
195 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
196 0           } break;
197 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in lgamma: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
198             }
199             #undef PDL_BAD_CODE
200             #undef PDL_IF_BAD
201             } else { /* ** else do 'good' Code ** */
202             #define PDL_IF_BAD(t,f) f
203 2           switch (__privtrans->__datatype) { /* Start generic switch */
204 0           case PDL_SB: {
205 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_SByte,A,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
206 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
207             extern int signgam;
208             PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,A,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
209 0           (b_datap)[0] = lgamma((a_datap)[0]);
210 0           (s_datap)[0] = signgam;
211             }
212 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
213 0           } break;
214 0           case PDL_B: {
215 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_Byte,B,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
216 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
217             extern int signgam;
218             PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,B,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
219 0           (b_datap)[0] = lgamma((a_datap)[0]);
220 0           (s_datap)[0] = signgam;
221             }
222 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
223 0           } break;
224 0           case PDL_S: {
225 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_Short,S,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
226 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
227             extern int signgam;
228             PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,S,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
229 0           (b_datap)[0] = lgamma((a_datap)[0]);
230 0           (s_datap)[0] = signgam;
231             }
232 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
233 0           } break;
234 0           case PDL_US: {
235 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_Ushort,U,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
236 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
237             extern int signgam;
238             PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,U,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
239 0           (b_datap)[0] = lgamma((a_datap)[0]);
240 0           (s_datap)[0] = signgam;
241             }
242 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
243 0           } break;
244 0           case PDL_L: {
245 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
246 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
247             extern int signgam;
248             PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,L,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
249 0           (b_datap)[0] = lgamma((a_datap)[0]);
250 0           (s_datap)[0] = signgam;
251             }
252 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
253 0           } break;
254 0           case PDL_UL: {
255 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_ULong,K,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
256 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
257             extern int signgam;
258             PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,K,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
259 0           (b_datap)[0] = lgamma((a_datap)[0]);
260 0           (s_datap)[0] = signgam;
261             }
262 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
263 0           } break;
264 0           case PDL_IND: {
265 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_Indx,N,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
266 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
267             extern int signgam;
268             PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,N,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
269 0           (b_datap)[0] = lgamma((a_datap)[0]);
270 0           (s_datap)[0] = signgam;
271             }
272 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
273 0           } break;
274 0           case PDL_ULL: {
275 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_ULongLong,P,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
276 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
277             extern int signgam;
278             PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,P,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
279 0           (b_datap)[0] = lgamma((a_datap)[0]);
280 0           (s_datap)[0] = signgam;
281             }
282 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
283 0           } break;
284 0           case PDL_LL: {
285 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_LongLong,Q,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
286 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
287             extern int signgam;
288             PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,Q,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
289 0           (b_datap)[0] = lgamma((a_datap)[0]);
290 0           (s_datap)[0] = signgam;
291             }
292 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
293 0           } break;
294 0           case PDL_F: {
295 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_Float,F,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
296 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
297             extern int signgam;
298             PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,F,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
299 0           (b_datap)[0] = lgamma((a_datap)[0]);
300 0           (s_datap)[0] = signgam;
301             }
302 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
303 0           } break;
304 2           case PDL_D: {
305 2 50         PDL_DECLARE_PARAMS_lgamma_1(PDL_Double,D,PDL_Long,L)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
306 8 50         PDL_BROADCASTLOOP_START_lgamma_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
307             extern int signgam;
308             PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,D,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
309 2           (b_datap)[0] = lgamma((a_datap)[0]);
310 2           (s_datap)[0] = signgam;
311             }
312 2 50         }PDL_BROADCASTLOOP_END_lgamma_readdata
    50          
313 2           } break;
314 0           case PDL_LD: {
315 0 0         PDL_DECLARE_PARAMS_lgamma_1(PDL_LDouble,E,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
316 0 0         PDL_BROADCASTLOOP_START_lgamma_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
317             extern int signgam;
318             PDL_IF_BAD(if ( PDL_ISBAD2((a_datap)[0],a_badval,E,a_badval_isnan) ) { (b_datap)[0]=b_badval; (s_datap)[0]=s_badval; } else,) {
319 0           (b_datap)[0] = lgamma((a_datap)[0]);
320 0           (s_datap)[0] = signgam;
321             }
322 0 0         }PDL_BROADCASTLOOP_END_lgamma_readdata
    0          
323 0           } break;
324 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in lgamma: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
325             }
326             #undef PDL_IF_BAD
327             }
328 3           return PDL_err;
329             }
330              
331             static pdl_datatypes pdl_lgamma_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 };
332             static PDL_Indx pdl_lgamma_vtable_realdims[] = { 0, 0, 0 };
333             static char *pdl_lgamma_vtable_parnames[] = { "a","b","s" };
334             static short pdl_lgamma_vtable_parflags[] = {
335             0,
336             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE,
337             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
338             };
339             static pdl_datatypes pdl_lgamma_vtable_partypes[] = { -1, -1, PDL_L };
340             static PDL_Indx pdl_lgamma_vtable_realdims_starts[] = { 0, 0, 0 };
341             static PDL_Indx pdl_lgamma_vtable_realdims_ind_ids[] = { 0 };
342             static char *pdl_lgamma_vtable_indnames[] = { "" };
343             pdl_transvtable pdl_lgamma_vtable = {
344             PDL_TRANS_DO_BROADCAST|PDL_TRANS_BADPROCESS, 0, pdl_lgamma_vtable_gentypes, 1, 3, NULL /*CORE21*/,
345             pdl_lgamma_vtable_realdims, pdl_lgamma_vtable_parnames,
346             pdl_lgamma_vtable_parflags, pdl_lgamma_vtable_partypes,
347             pdl_lgamma_vtable_realdims_starts, pdl_lgamma_vtable_realdims_ind_ids, 0,
348             0, pdl_lgamma_vtable_indnames,
349             NULL, pdl_lgamma_readdata, NULL,
350             NULL,
351             0,"PDL::Math::lgamma"
352             };
353              
354              
355 3           pdl_error pdl_run_lgamma(pdl *a,pdl *b,pdl *s) {
356 3           pdl_error PDL_err = {0, NULL, 0};
357 3 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
358 3           pdl_trans *__privtrans = PDL->create_trans(&pdl_lgamma_vtable);
359 3 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
360 3           __privtrans->pdls[0] = a;
361 3           __privtrans->pdls[1] = b;
362 3           __privtrans->pdls[2] = s;
363 3 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
364 3 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
365 3           return PDL_err;
366             }