Skip to content

Commit dfddd01

Browse files
committed
statistics: gsl_stats_Qn0_from_sorted_data & gsl_stats_Qn_from_sorted_data
1 parent d561917 commit dfddd01

File tree

4 files changed

+75
-3
lines changed

4 files changed

+75
-3
lines changed

gslext.stub.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,6 @@ function gsl_stats_gastwirth_from_sorted_data(array $sorted_data, int $stride):
9090
function gsl_stats_mad0(array $data, int $stride): float {}
9191
function gsl_stats_mad(array $data, int $stride): float {}
9292
function gsl_stats_Sn0_from_sorted_data(array $sorted_data, int $stride): float {}
93-
function gsl_stats_Sn_from_sorted_data(array $sorted_data, int $stride): float {}
93+
function gsl_stats_Sn_from_sorted_data(array $sorted_data, int $stride): float {}
94+
function gsl_stats_Qn0_from_sorted_data(array $sorted_data, int $stride): float {}
95+
function gsl_stats_Qn_from_sorted_data(array $sorted_data, int $stride): float {}

gslext_arginfo.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 30e64c54e8548bcb86f4957ae56c7255a38f13a9 */
2+
* Stub hash: ff2821df6a63df9aa60e187ced5591b4928cf084 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_GSL_log1p, 0, 1, IS_DOUBLE, 0)
55
ZEND_ARG_TYPE_INFO(0, x, IS_DOUBLE, 0)
@@ -272,6 +272,10 @@ ZEND_END_ARG_INFO()
272272

273273
#define arginfo_gsl_stats_Sn_from_sorted_data arginfo_gsl_stats_median_from_sorted_data
274274

275+
#define arginfo_gsl_stats_Qn0_from_sorted_data arginfo_gsl_stats_median_from_sorted_data
276+
277+
#define arginfo_gsl_stats_Qn_from_sorted_data arginfo_gsl_stats_median_from_sorted_data
278+
275279

276280
ZEND_FUNCTION(GSL_log1p);
277281
ZEND_FUNCTION(GSL_expm1);
@@ -351,6 +355,8 @@ ZEND_FUNCTION(gsl_stats_mad0);
351355
ZEND_FUNCTION(gsl_stats_mad);
352356
ZEND_FUNCTION(gsl_stats_Sn0_from_sorted_data);
353357
ZEND_FUNCTION(gsl_stats_Sn_from_sorted_data);
358+
ZEND_FUNCTION(gsl_stats_Qn0_from_sorted_data);
359+
ZEND_FUNCTION(gsl_stats_Qn_from_sorted_data);
354360

355361

356362
static const zend_function_entry ext_functions[] = {
@@ -432,5 +438,7 @@ static const zend_function_entry ext_functions[] = {
432438
ZEND_FE(gsl_stats_mad, arginfo_gsl_stats_mad)
433439
ZEND_FE(gsl_stats_Sn0_from_sorted_data, arginfo_gsl_stats_Sn0_from_sorted_data)
434440
ZEND_FE(gsl_stats_Sn_from_sorted_data, arginfo_gsl_stats_Sn_from_sorted_data)
441+
ZEND_FE(gsl_stats_Qn0_from_sorted_data, arginfo_gsl_stats_Qn0_from_sorted_data)
442+
ZEND_FE(gsl_stats_Qn_from_sorted_data, arginfo_gsl_stats_Qn_from_sorted_data)
435443
ZEND_FE_END
436444
};

inc/statistics.c

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1332,3 +1332,53 @@ PHP_FUNCTION(gsl_stats_Sn_from_sorted_data)
13321332
RETURN_DOUBLE(rv);
13331333
}
13341334

1335+
PHP_FUNCTION(gsl_stats_Qn0_from_sorted_data)
1336+
{
1337+
zval *p_sorted_data, *p_stride;
1338+
long stride, n;
1339+
int *work_int;
1340+
double *sorted_data, *work, rv;
1341+
1342+
ZEND_PARSE_PARAMETERS_START(2, 2)
1343+
Z_PARAM_ZVAL(p_sorted_data)
1344+
Z_PARAM_ZVAL(p_stride)
1345+
ZEND_PARSE_PARAMETERS_END();
1346+
1347+
__zval_to_long(p_stride, &stride);
1348+
1349+
n = (long) zend_array_count(Z_ARR_P(p_sorted_data));
1350+
1351+
__alloc_double_array(&sorted_data, n);
1352+
__alloc_double_array(&work, 3 * n);
1353+
__alloc_int_array(&work_int, 5 * n);
1354+
1355+
rv = gsl_stats_Qn0_from_sorted_data(sorted_data, stride, n, work, work_int);
1356+
1357+
RETURN_DOUBLE(rv);
1358+
}
1359+
1360+
PHP_FUNCTION(gsl_stats_Qn_from_sorted_data)
1361+
{
1362+
zval *p_sorted_data, *p_stride;
1363+
long stride, n;
1364+
int *work_int;
1365+
double *sorted_data, *work, rv;
1366+
1367+
ZEND_PARSE_PARAMETERS_START(2, 2)
1368+
Z_PARAM_ZVAL(p_sorted_data)
1369+
Z_PARAM_ZVAL(p_stride)
1370+
ZEND_PARSE_PARAMETERS_END();
1371+
1372+
__zval_to_long(p_stride, &stride);
1373+
1374+
n = (long) zend_array_count(Z_ARR_P(p_sorted_data));
1375+
1376+
__alloc_double_array(&sorted_data, n);
1377+
__alloc_double_array(&work, 3 * n);
1378+
__alloc_int_array(&work_int, 5 * n);
1379+
1380+
rv = gsl_stats_Qn_from_sorted_data(sorted_data, stride, n, work, work_int);
1381+
1382+
RETURN_DOUBLE(rv);
1383+
}
1384+

tests/0007.statistics.phpt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,14 @@ var_dump("gsl_stats_Sn_from_sorted_data");
260260
$data = [1, 5, 11, 34, 56];
261261
var_dump(gsl_stats_Sn_from_sorted_data($data, 25));
262262

263+
var_dump("gsl_stats_Qn0_from_sorted_data");
264+
$data = [12.6, 15.2, 16.1, 17.5, 18.3];
265+
var_dump(gsl_stats_Qn0_from_sorted_data($data, 1));
266+
267+
var_dump("gsl_stats_Qn_from_sorted_data");
268+
$data = [12.6, 15.2, 16.1, 17.5, 18.3];
269+
var_dump(gsl_stats_Qn_from_sorted_data($data, 1));
270+
263271

264272
?>
265273
--EXPECT--
@@ -370,4 +378,8 @@ float(1.482602218505602)
370378
string(30) "gsl_stats_Sn0_from_sorted_data"
371379
float(1.2975342124590806E-281)
372380
string(29) "gsl_stats_Sn_from_sorted_data"
373-
float(6.373052309258179E-233)
381+
float(6.373052309258179E-233)
382+
string(30) "gsl_stats_Qn0_from_sorted_data"
383+
float(1.0996497102983598E+248)
384+
string(29) "gsl_stats_Qn_from_sorted_data"
385+
float(2.0596179022126888E+248)

0 commit comments

Comments
 (0)