3 * Include this test values from
4 * http://people.sc.fsu.edu/~jburkardt/c_src/test_values/test_values.c
6 * Omega(0) is overridden to be 0. This is a matter of definition.
8 #include "test_values.c"
32 test_func (const char *func_name
,
39 void (*generator
)() = generator_
;
44 int special_args
= order
&& strchr (order
, '%') != NULL
;
52 generator (&n_data
, &xd
[0], &yd
);
56 generator (&n_data
, &xd
[0], &xd
[1], &yd
);
60 generator (&n_data
, &xd
[0], &xd
[1], &xd
[2], &yd
);
64 generator (&n_data
, &xd
[0], &xi
[1], &yd
);
68 generator (&n_data
, &xi
[0], &yd
);
72 generator (&n_data
, &xi
[0], &xd
[1], &yd
);
76 generator (&n_data
, &xi
[0], &xd
[1], &xi
[2], &yd
);
80 generator (&n_data
, &xi
[0], &xi
[1], &xd
[2], &yd
);
84 generator (&n_data
, &xi
[0], &xi
[1], &xi
[2], &xi
[3], &yd
);
88 generator (&n_data
, &xi
[0], &yi
);
92 generator (&n_data
, &xi
[0], &xi
[1], &yi
);
96 generator (&n_data
, &xi
[0], &xi
[1], &xi
[2], &yi
);
107 printf ("%s,", func_name
);
112 printf ("\"=%s(", func_name
);
113 n_args
= strlen (types
) - 2;
115 char *argstr
= strdup (order
);
117 while ((pct
= strchr (argstr
, '%'))) {
118 size_t prelen
= pct
- argstr
;
119 int o
= pct
[1] - '1';
120 char a1
[4 * sizeof (int) + 100];
125 sprintf (a1
, FMT
, xd
[o
]);
128 sprintf (a1
, "%d", xi
[o
]);
132 newargstr
= malloc (strlen (argstr
) + strlen (a1
));
133 memcpy (newargstr
, argstr
, prelen
);
134 strcpy (newargstr
+ prelen
, a1
);
135 strcat (newargstr
+ prelen
, pct
+ 2);
139 printf ("%s", argstr
);
142 for (a
= 0; a
< n_args
; a
++) {
143 int o
= order
? order
[a
] - '1' : a
;
151 printf ("%d", xi
[o
]);
158 restype
= types
[n_args
+ 1];
161 printf (FMT
",", yd
);
170 printf ("\"=IF(B%d=C%d,\"\"\"\",IF(C%d=0,-LOG10(ABS(B%d)),-LOG10(ABS((B%d-C%d)/C%d))))\"", r
, r
, r
, r
, r
, r
, r
);
173 printf ("\"=IF(B%d=C%d,\"\"\"\",0)\"", r
, r
);
185 main (int argc
, char **argv
)
190 if (argc
>= 2 && strcmp (argv
[1], "--slow") == 0)
193 printf ("WORST,\"\",\"\",=MIN(D3:D65525)\n");
195 printf ("\"\",\"\",\"\",\"\"\n");
198 test_func ("acos", arccos_values
, GT_D_D
, NULL
);
199 test_func ("acosh", arccosh_values
, GT_D_D
, NULL
);
200 test_func ("agm", agm_values
, GT_DD_D
, NULL
);
201 test_func ("asin", arcsin_values
, GT_D_D
, NULL
);
202 test_func ("asinh", arcsinh_values
, GT_D_D
, NULL
);
203 test_func ("atan", arctan_values
, GT_D_D
, NULL
);
204 test_func ("atan2", arctan2_values
, GT_DD_D
, NULL
);
205 test_func ("atanh", arctanh_values
, GT_D_D
, NULL
);
206 test_func ("besseli", bessel_i0_values
, GT_D_D
, "%1,0");
207 test_func ("besseli", bessel_i1_values
, GT_D_D
, "%1,1");
208 test_func ("besseli", bessel_in_values
, GT_ID_D
, "21");
209 test_func ("besseli", bessel_ix_values
, GT_DD_D
, "21");
210 test_func ("besselj", bessel_j0_values
, GT_D_D
, "%1,0");
211 test_func ("besselj", bessel_j1_values
, GT_D_D
, "%1,1");
212 test_func ("besselj", bessel_jn_values
, GT_ID_D
, "21");
213 // Our besselj truncates the order.
214 if (0) test_func ("besselj", bessel_jx_values
, GT_DD_D
, "21");
215 test_func ("besselk", bessel_k0_values
, GT_D_D
, "%1,0");
216 test_func ("besselk", bessel_k1_values
, GT_D_D
, "%1,1");
217 test_func ("besselk", bessel_kn_values
, GT_ID_D
, "21");
218 // Our besselk truncates the order.
219 if (0) test_func ("besselk", bessel_kx_values
, GT_DD_D
, "21");
220 test_func ("bessely", bessel_y0_values
, GT_D_D
, "%1,0");
221 test_func ("bessely", bessel_y1_values
, GT_D_D
, "%1,1");
222 test_func ("bessely", bessel_yn_values
, GT_ID_D
, "21");
223 // Our bessely truncates the order.
224 if (0) test_func ("bessely", bessel_yx_values
, GT_DD_D
, "21");
225 test_func ("r.pbeta", beta_cdf_values
, GT_DDD_D
, "312");
226 test_func ("beta", beta_values
, GT_DD_D
, NULL
);
227 test_func ("combin", binomial_values
, GT_II_I
, NULL
);
228 test_func ("r.pbinom", binomial_cdf_values
, GT_IDI_D
, "312");
229 test_func ("r.pcauchy", cauchy_cdf_values
, GT_DDD_D
, "312");
230 test_func ("power", cbrt_values
, GT_D_D
, "%1,1,3");
231 test_func ("r.pchisq", chi_square_cdf_values
, GT_ID_D
, "21");
232 test_func ("cos", cos_values
, GT_D_D
, NULL
);
233 test_func ("cosh", cosh_values
, GT_D_D
, NULL
);
234 test_func ("cot", cot_values
, GT_D_D
, NULL
);
235 test_func ("erf", erf_values
, GT_D_D
, NULL
);
236 test_func ("erfc", erfc_values
, GT_D_D
, NULL
);
237 test_func ("exp", exp_values
, GT_D_D
, NULL
);
238 test_func ("r.pexp", exponential_cdf_values
, GT_DD_D
, "%2,1/%1");
240 test_func ("r.pf", f_cdf_values
, GT_IID_D
, "312");
241 // f_noncentral_cdf_values ( int *n_data, int *n1, int *n2, double *lambda,
242 test_func ("fact", i4_factorial_values
, GT_I_I
, NULL
);
243 test_func ("fact", r8_factorial_values
, GT_I_D
, NULL
);
244 test_func ("factdouble", i4_factorial2_values
, GT_I_I
, NULL
);
245 // factorial_rising_values ( int *n_data, int *m, int *n, int *fmn )
246 // fresnel_cos_values ( int *n_data, double *x, double *fx )
247 // fresnel_sin_values ( int *n_data, double *x, double *fx )
248 // frobenius_number_data_values ( int *n_data, int order, int c[], int *f )
249 // frobenius_number_order_values ( int *n_data, int *order )
250 // frobenius_number_order2_values ( int *n_data, int *c1, int *c2, int *f )
251 test_func ("gamma", gamma_values
, GT_D_D
, NULL
);
252 test_func ("r.pgamma", gamma_cdf_values
, GT_DDD_D
, "312");
253 // gamma_inc_p_values ( int *n_data, double *a, double *x, double *fx )
254 // gamma_inc_q_values ( int *n_data, double *a, double *x, double *fx )
255 // gamma_inc_tricomi_values ( int *n_data, double *a, double *x, double *fx )
256 // gamma_inc_values ( int *n_data, double *a, double *x, double *fx )
257 test_func ("gammaln", gamma_log_values
, GT_D_D
, NULL
);
258 // gegenbauer_poly_values ( int *n_data, int *n, double *a, double *x,
259 test_func ("r.pgeom", geometric_cdf_values
, GT_ID_D
, NULL
);
260 // goodwin_values ( int *n_data, double *x, double *fx )
261 test_func ("gd", gud_values
, GT_D_D
, NULL
);
262 // hermite_function_values ( int *n_data, int *n, double *x, double *fx )
263 // hermite_poly_phys_values ( int *n_data, int *n, double *x, double *fx )
264 // hermite_poly_prob_values ( int *n_data, int *n, double *x, double *fx )
265 // hyper_1f1_values ( int *n_data, double *a, double *b, double *x,
266 // hyper_2f1_values ( int *n_data, double *a, double *b, double *c,
267 test_func ("r.phyper", hypergeometric_cdf_values
, GT_IIII_D
, "%4,%2,%3-%2,%1");
268 test_func ("r.dhyper", hypergeometric_pdf_values
, GT_IIII_D
, "%4,%2,%3-%2,%1");
269 // hypergeometric_u_values ( int *n_data, double *a, double *b, double *x,
270 // i0ml0_values ( int *n_data, double *x, double *fx )
271 // i1ml1_values ( int *n_data, double *x, double *fx )
272 // void int_values ( int *n_data, double *x, double *fx )
273 // jacobi_cn_values ( int *n_data, double *a, double *x, double *fx )
274 // jacobi_dn_values ( int *n_data, double *a, double *x, double *fx )
275 // jacobi_poly_values ( int *n_data, int *n, double *a, double *b, double *x,
276 // jacobi_sn_values ( int *n_data, double *a, double *x, double *fx )
277 // jed_ce_values ( int *n_data, double *jed, int *y, int *m, int *d,
278 // jed_mjd_values ( int *n_data, double *jed, double *mjd )
279 // jed_rd_values ( int *n_data, double *jed, double *rd )
280 // jed_weekday_values ( int *n_data, double *jed, int *weekday )
281 // kei0_values ( int *n_data, double *x, double *fx )
282 // kei1_values ( int *n_data, double *x, double *fx )
283 // ker0_values ( int *n_data, double *x, double *fx )
284 // ker1_values ( int *n_data, double *x, double *fx )
285 // laguerre_associated_values ( int *n_data, int *n, int *m, double *x,
286 // laguerre_general_values ( int *n_data, int *n, double *a, double *x,
287 // laguerre_polynomial_values ( int *n_data, int *n, double *x, double *fx )
288 // lambert_w_values ( int *n_data, double *x, double *fx )
289 // laplace_cdf_values ( int *n_data, double *mu, double *beta, double *x,
290 // legendre_associated_values ( int *n_data, int *n, int *m, double *x,
291 // legendre_associated_normalized_sphere_values ( int *n_data, int *n, int *m,
292 // legendre_associated_normalized_values ( int *n_data, int *n, int *m,
293 // legendre_function_q_values ( int *n_data, int *n, double *x, double *fx )
294 // legendre_poly_values ( int *n_data, int *n, double *x, double *fx )
295 // lerch_values ( int *n_data, double *z, int *s, double *a, double *fx )
296 // lobachevsky_values ( int *n_data, double *x, double *fx )
297 test_func ("ln", log_values
, GT_D_D
, NULL
);
298 test_func ("r.plnorm", log_normal_cdf_values
, GT_DDD_D
, "312");
299 // log_series_cdf_values ( int *n_data, double *t, int *n, double *fx )
300 test_func ("log10", log10_values
, GT_D_D
, NULL
);
301 // logarithmic_integral_values ( int *n_data, double *x, double *fx )
302 // logistic_cdf_values ( int *n_data, double *mu, double *beta, double *x,
303 // mertens_values ( int *n_data, int *n, int *c )
304 test_func ("nt_mu", moebius_values
, GT_I_I
, NULL
);
305 test_func ("r.pnbinom", negative_binomial_cdf_values
, GT_IID_D
, NULL
);
306 // nine_j_values ( int *n_data, double *j1, double *j2, double *j3,
307 test_func ("r.pnorm", normal_cdf_values
, GT_DDD_D
, "312");
308 test_func ("normsdist", normal_01_cdf_values
, GT_D_D
, NULL
);
309 test_func ("nt_omega", omega_values
, GT_I_I
, NULL
);
310 test_func ("owent", owen_values
, GT_DD_D
, NULL
);
311 // partition_count_values ( int *n_data, int *n, int *c )
312 // partition_distinct_count_values ( int *n_data, int *n, int *c )
313 test_func ("nt_phi", phi_values
, GT_I_I
, NULL
);
314 if (do_slow
) test_func ("nt_pi", pi_values
, GT_I_I
, NULL
);
315 test_func ("pochhammer", i4_rise_values
, GT_II_I
, NULL
);
316 test_func ("pochhammer", r8_rise_values
, GT_DI_D
, NULL
);
317 test_func ("r.ppois", poisson_cdf_values
, GT_DI_D
, "21");
318 // polylogarithm_values ( int *n_data, int *n, double *z, double *fx )
319 // prandtl_values ( int *n_data, double *tc, double *p, double *pr )
320 if (do_slow
) test_func ("ithprime", prime_values
, GT_I_I
, NULL
);
321 // psat_values ( int *n_data, double *tc, double *p )
322 // psi_values ( int *n_data, double *x, double *fx )
323 // r8_factorial_log_values ( int *n_data, int *n, double *fn )
324 // r8_factorial_values ( int *n_data, int *n, double *fn )
325 // rayleigh_cdf_values ( int *n_data, double *sigma, double *x, double *fx )
326 // secvir_values ( int *n_data, double *tc, double *vir )
327 // shi_values ( int *n_data, double *x, double *fx )
328 // si_values ( int *n_data, double *x, double *fx )
329 test_func ("nt_sigma", sigma_values
, GT_I_I
, NULL
);
330 // sin_power_int_values ( int *n_data, double *a, double *b, int *n,
331 test_func ("sin", sin_values
, GT_D_D
, NULL
);
332 test_func ("sinh", sinh_values
, GT_D_D
, NULL
);
333 // six_j_values ( int *n_data, double *j1, double *j2, double *j3,
334 // sound_values ( int *n_data, double *tc, double *p, double *c )
335 // sphere_unit_area_values ( int *n_data, int *n, double *area )
336 // sphere_unit_volume_values ( int *n_data, int *n, double *volume )
337 // spherical_harmonic_values ( int *n_data, int *l, int *m, double *theta,
338 test_func ("sqrt", sqrt_values
, GT_D_D
, NULL
);
339 // stirling1_values ( int *n_data, int *n, int *m, int *fx )
340 // stirling2_values ( int *n_data, int *n, int *m, int *fx )
341 // stromgen_values ( int *n_data, double *x, double *fx )
342 // struve_h0_values ( int *n_data, double *x, double *fx )
343 // struve_h1_values ( int *n_data, double *x, double *fx )
344 // struve_l0_values ( int *n_data, double *x, double *fx )
345 // struve_l1_values ( int *n_data, double *x, double *fx )
346 test_func ("r.pt", student_cdf_values
, GT_DD_D
, "21");
347 // student_noncentral_cdf_values ( int *n_data, int *df, double *lambda,
348 // subfactorial_values ( int *n_data, int *n, int *fn )
349 // surten_values ( int *n_data, double *tc, double *sigma )
350 // synch1_values ( int *n_data, double *x, double *fx )
351 // synch2_values ( int *n_data, double *x, double *fx )
352 test_func ("tan", tan_values
, GT_D_D
, NULL
);
353 test_func ("tanh", tanh_values
, GT_D_D
, NULL
);
354 test_func ("nt_d", tau_values
, GT_I_I
, NULL
);
355 // thercon_values ( int *n_data, double *tc, double *p, double *lambda )
356 // three_j_values ( int *n_data, double *j1, double *j2, double *j3,
357 // tran02_values ( int *n_data, double *x, double *fx )
358 // tran03_values ( int *n_data, double *x, double *fx )
359 // tran04_values ( int *n_data, double *x, double *fx )
360 // tran05_values ( int *n_data, double *x, double *fx )
361 // tran06_values ( int *n_data, double *x, double *fx )
362 // tran07_values ( int *n_data, double *x, double *fx )
363 // tran08_values ( int *n_data, double *x, double *fx )
364 // tran09_values ( int *n_data, double *x, double *fx )
365 // trigamma_values ( int *n_data, double *x, double *fx )
366 // tsat_values ( int *n_data, double *p, double *tc )
367 // van_der_corput_values ( int *n_data, int *base, int *seed, double *value )
368 // viscosity_values ( int *n_data, double *tc, double *p, double *eta )
369 // von_mises_cdf_values ( int *n_data, double *a, double *b, double *x,
371 // Differences in year interpretation.
372 if (0) test_func ("weekday", weekday_values
, GT_III_I
, "date(%1,%2,%3)");
374 test_func ("r.pweibull", weibull_cdf_values
, GT_DDD_D
, "312");
375 // zeta_values ( int *n_data, int *n, double *zeta )