Skip to content

Commit 989f5ee

Browse files
authored
Merge pull request #1094 from stan-dev/add_loglogistic
Add loglogistic_lpdf, loglogistic_rng and loglogistic_cdf
2 parents f7349d0 + f5f1347 commit 989f5ee

8 files changed

Lines changed: 3823 additions & 1 deletion

File tree

src/middle/Stan_math_signatures.ml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,9 @@ let%expect_test "combinations " =
8181
[%expect
8282
{| ((1 3 5) (2 3 5) (1 4 5) (2 4 5) (1 3 6) (2 3 6) (1 4 6) (2 4 6)) |}]
8383

84-
let missing_math_functions = String.Set.of_list ["beta_proportion_cdf"]
84+
let missing_math_functions =
85+
String.Set.of_list
86+
["beta_proportion_cdf"; "loglogistic_lcdf"; "loglogistic_cdf_log"]
8587

8688
let rng_return_type t lt =
8789
if List.for_all ~f:is_primitive lt then t else UnsizedType.UArray t
@@ -239,6 +241,7 @@ let distributions =
239241
; ([Lpdf], "lkj_corr", [DMatrix; DReal], AoS)
240242
; ([Lpdf], "lkj_corr_cholesky", [DMatrix; DReal], AoS)
241243
; (full_lpdf, "logistic", [DVReal; DVReal; DVReal], SoA)
244+
; ([Lpdf; Rng; Cdf], "loglogistic", [DVReal; DVReal; DVReal], SoA)
242245
; (full_lpdf, "lognormal", [DVReal; DVReal; DVReal], SoA)
243246
; ([Lpdf], "multi_gp", [DMatrix; DMatrix; DVector], AoS)
244247
; ([Lpdf], "multi_gp_cholesky", [DMatrix; DMatrix; DVector], AoS)

test/integration/good/function-signatures/distributions/pretty.expected

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1735,5 +1735,41 @@ generated quantities {
17351735
N = discrete_range_rng(N, N);
17361736
N = bernoulli_logit_glm_rng(d_x_m, d_alpha_v, d_beta_v);
17371737
N = bernoulli_logit_glm_rng(d_x_rv, d_alpha_v, d_beta_v);
1738+
z = loglogistic_rng(n, n);
1739+
z = loglogistic_rng(n, y);
1740+
z = loglogistic_rng(y, n);
1741+
z = loglogistic_rng(y, y);
1742+
x = loglogistic_rng(n, mu);
1743+
x = loglogistic_rng(n, nu);
1744+
x = loglogistic_rng(n, N);
1745+
x = loglogistic_rng(n, x);
1746+
x = loglogistic_rng(y, mu);
1747+
x = loglogistic_rng(y, nu);
1748+
x = loglogistic_rng(y, N);
1749+
x = loglogistic_rng(y, x);
1750+
x = loglogistic_rng(mu, n);
1751+
x = loglogistic_rng(mu, y);
1752+
x = loglogistic_rng(mu, mu);
1753+
x = loglogistic_rng(mu, nu);
1754+
x = loglogistic_rng(mu, N);
1755+
x = loglogistic_rng(mu, x);
1756+
x = loglogistic_rng(nu, n);
1757+
x = loglogistic_rng(nu, y);
1758+
x = loglogistic_rng(nu, mu);
1759+
x = loglogistic_rng(nu, nu);
1760+
x = loglogistic_rng(nu, N);
1761+
x = loglogistic_rng(nu, x);
1762+
x = loglogistic_rng(N, n);
1763+
x = loglogistic_rng(N, y);
1764+
x = loglogistic_rng(N, mu);
1765+
x = loglogistic_rng(N, nu);
1766+
x = loglogistic_rng(N, N);
1767+
x = loglogistic_rng(N, x);
1768+
x = loglogistic_rng(x, n);
1769+
x = loglogistic_rng(x, y);
1770+
x = loglogistic_rng(x, mu);
1771+
x = loglogistic_rng(x, nu);
1772+
x = loglogistic_rng(x, N);
1773+
x = loglogistic_rng(x, x);
17381774
}
17391775

test/integration/good/function-signatures/distributions/rngs.stan

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1734,5 +1734,41 @@ generated quantities {
17341734
N = discrete_range_rng(N, N);
17351735
N = bernoulli_logit_glm_rng(d_x_m, d_alpha_v, d_beta_v);
17361736
N = bernoulli_logit_glm_rng(d_x_rv, d_alpha_v, d_beta_v);
1737+
z = loglogistic_rng(n, n);
1738+
z = loglogistic_rng(n, y);
1739+
z = loglogistic_rng(y, n);
1740+
z = loglogistic_rng(y, y);
1741+
x = loglogistic_rng(n, mu);
1742+
x = loglogistic_rng(n, nu);
1743+
x = loglogistic_rng(n, N);
1744+
x = loglogistic_rng(n, x);
1745+
x = loglogistic_rng(y, mu);
1746+
x = loglogistic_rng(y, nu);
1747+
x = loglogistic_rng(y, N);
1748+
x = loglogistic_rng(y, x);
1749+
x = loglogistic_rng(mu, n);
1750+
x = loglogistic_rng(mu, y);
1751+
x = loglogistic_rng(mu, mu);
1752+
x = loglogistic_rng(mu, nu);
1753+
x = loglogistic_rng(mu, N);
1754+
x = loglogistic_rng(mu, x);
1755+
x = loglogistic_rng(nu, n);
1756+
x = loglogistic_rng(nu, y);
1757+
x = loglogistic_rng(nu, mu);
1758+
x = loglogistic_rng(nu, nu);
1759+
x = loglogistic_rng(nu, N);
1760+
x = loglogistic_rng(nu, x);
1761+
x = loglogistic_rng(N, n);
1762+
x = loglogistic_rng(N, y);
1763+
x = loglogistic_rng(N, mu);
1764+
x = loglogistic_rng(N, nu);
1765+
x = loglogistic_rng(N, N);
1766+
x = loglogistic_rng(N, x);
1767+
x = loglogistic_rng(x, n);
1768+
x = loglogistic_rng(x, y);
1769+
x = loglogistic_rng(x, mu);
1770+
x = loglogistic_rng(x, nu);
1771+
x = loglogistic_rng(x, N);
1772+
x = loglogistic_rng(x, x);
17371773
}
17381774

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
(include ../../../../../dune)

test/integration/good/function-signatures/distributions/univariate/continuous/loglogistic/loglogistic_cdf.stan

Lines changed: 879 additions & 0 deletions
Large diffs are not rendered by default.

test/integration/good/function-signatures/distributions/univariate/continuous/loglogistic/loglogistic_lpdf.stan

Lines changed: 879 additions & 0 deletions
Large diffs are not rendered by default.

test/integration/good/function-signatures/distributions/univariate/continuous/loglogistic/pretty.expected

Lines changed: 1760 additions & 0 deletions
Large diffs are not rendered by default.

test/integration/signatures/stan_math_signatures.t

Lines changed: 228 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13465,6 +13465,234 @@ Display all Stan math signatures exposed in the language
1346513465
logit(array[,,,,,,] vector) => array[,,,,,,] vector
1346613466
logit(array[,,,,,,] row_vector) => array[,,,,,,] row_vector
1346713467
logit(array[,,,,,,] matrix) => array[,,,,,,] matrix
13468+
loglogistic_cdf(real, real, real) => real
13469+
loglogistic_cdf(real, real, vector) => real
13470+
loglogistic_cdf(real, real, row_vector) => real
13471+
loglogistic_cdf(real, real, array[] real) => real
13472+
loglogistic_cdf(real, vector, real) => real
13473+
loglogistic_cdf(real, vector, vector) => real
13474+
loglogistic_cdf(real, vector, row_vector) => real
13475+
loglogistic_cdf(real, vector, array[] real) => real
13476+
loglogistic_cdf(real, row_vector, real) => real
13477+
loglogistic_cdf(real, row_vector, vector) => real
13478+
loglogistic_cdf(real, row_vector, row_vector) => real
13479+
loglogistic_cdf(real, row_vector, array[] real) => real
13480+
loglogistic_cdf(real, array[] real, real) => real
13481+
loglogistic_cdf(real, array[] real, vector) => real
13482+
loglogistic_cdf(real, array[] real, row_vector) => real
13483+
loglogistic_cdf(real, array[] real, array[] real) => real
13484+
loglogistic_cdf(vector, real, real) => real
13485+
loglogistic_cdf(vector, real, vector) => real
13486+
loglogistic_cdf(vector, real, row_vector) => real
13487+
loglogistic_cdf(vector, real, array[] real) => real
13488+
loglogistic_cdf(vector, vector, real) => real
13489+
loglogistic_cdf(vector, vector, vector) => real
13490+
loglogistic_cdf(vector, vector, row_vector) => real
13491+
loglogistic_cdf(vector, vector, array[] real) => real
13492+
loglogistic_cdf(vector, row_vector, real) => real
13493+
loglogistic_cdf(vector, row_vector, vector) => real
13494+
loglogistic_cdf(vector, row_vector, row_vector) => real
13495+
loglogistic_cdf(vector, row_vector, array[] real) => real
13496+
loglogistic_cdf(vector, array[] real, real) => real
13497+
loglogistic_cdf(vector, array[] real, vector) => real
13498+
loglogistic_cdf(vector, array[] real, row_vector) => real
13499+
loglogistic_cdf(vector, array[] real, array[] real) => real
13500+
loglogistic_cdf(row_vector, real, real) => real
13501+
loglogistic_cdf(row_vector, real, vector) => real
13502+
loglogistic_cdf(row_vector, real, row_vector) => real
13503+
loglogistic_cdf(row_vector, real, array[] real) => real
13504+
loglogistic_cdf(row_vector, vector, real) => real
13505+
loglogistic_cdf(row_vector, vector, vector) => real
13506+
loglogistic_cdf(row_vector, vector, row_vector) => real
13507+
loglogistic_cdf(row_vector, vector, array[] real) => real
13508+
loglogistic_cdf(row_vector, row_vector, real) => real
13509+
loglogistic_cdf(row_vector, row_vector, vector) => real
13510+
loglogistic_cdf(row_vector, row_vector, row_vector) => real
13511+
loglogistic_cdf(row_vector, row_vector, array[] real) => real
13512+
loglogistic_cdf(row_vector, array[] real, real) => real
13513+
loglogistic_cdf(row_vector, array[] real, vector) => real
13514+
loglogistic_cdf(row_vector, array[] real, row_vector) => real
13515+
loglogistic_cdf(row_vector, array[] real, array[] real) => real
13516+
loglogistic_cdf(array[] real, real, real) => real
13517+
loglogistic_cdf(array[] real, real, vector) => real
13518+
loglogistic_cdf(array[] real, real, row_vector) => real
13519+
loglogistic_cdf(array[] real, real, array[] real) => real
13520+
loglogistic_cdf(array[] real, vector, real) => real
13521+
loglogistic_cdf(array[] real, vector, vector) => real
13522+
loglogistic_cdf(array[] real, vector, row_vector) => real
13523+
loglogistic_cdf(array[] real, vector, array[] real) => real
13524+
loglogistic_cdf(array[] real, row_vector, real) => real
13525+
loglogistic_cdf(array[] real, row_vector, vector) => real
13526+
loglogistic_cdf(array[] real, row_vector, row_vector) => real
13527+
loglogistic_cdf(array[] real, row_vector, array[] real) => real
13528+
loglogistic_cdf(array[] real, array[] real, real) => real
13529+
loglogistic_cdf(array[] real, array[] real, vector) => real
13530+
loglogistic_cdf(array[] real, array[] real, row_vector) => real
13531+
loglogistic_cdf(array[] real, array[] real, array[] real) => real
13532+
loglogistic_log(real, real, real) => real
13533+
loglogistic_log(real, real, vector) => real
13534+
loglogistic_log(real, real, row_vector) => real
13535+
loglogistic_log(real, real, array[] real) => real
13536+
loglogistic_log(real, vector, real) => real
13537+
loglogistic_log(real, vector, vector) => real
13538+
loglogistic_log(real, vector, row_vector) => real
13539+
loglogistic_log(real, vector, array[] real) => real
13540+
loglogistic_log(real, row_vector, real) => real
13541+
loglogistic_log(real, row_vector, vector) => real
13542+
loglogistic_log(real, row_vector, row_vector) => real
13543+
loglogistic_log(real, row_vector, array[] real) => real
13544+
loglogistic_log(real, array[] real, real) => real
13545+
loglogistic_log(real, array[] real, vector) => real
13546+
loglogistic_log(real, array[] real, row_vector) => real
13547+
loglogistic_log(real, array[] real, array[] real) => real
13548+
loglogistic_log(vector, real, real) => real
13549+
loglogistic_log(vector, real, vector) => real
13550+
loglogistic_log(vector, real, row_vector) => real
13551+
loglogistic_log(vector, real, array[] real) => real
13552+
loglogistic_log(vector, vector, real) => real
13553+
loglogistic_log(vector, vector, vector) => real
13554+
loglogistic_log(vector, vector, row_vector) => real
13555+
loglogistic_log(vector, vector, array[] real) => real
13556+
loglogistic_log(vector, row_vector, real) => real
13557+
loglogistic_log(vector, row_vector, vector) => real
13558+
loglogistic_log(vector, row_vector, row_vector) => real
13559+
loglogistic_log(vector, row_vector, array[] real) => real
13560+
loglogistic_log(vector, array[] real, real) => real
13561+
loglogistic_log(vector, array[] real, vector) => real
13562+
loglogistic_log(vector, array[] real, row_vector) => real
13563+
loglogistic_log(vector, array[] real, array[] real) => real
13564+
loglogistic_log(row_vector, real, real) => real
13565+
loglogistic_log(row_vector, real, vector) => real
13566+
loglogistic_log(row_vector, real, row_vector) => real
13567+
loglogistic_log(row_vector, real, array[] real) => real
13568+
loglogistic_log(row_vector, vector, real) => real
13569+
loglogistic_log(row_vector, vector, vector) => real
13570+
loglogistic_log(row_vector, vector, row_vector) => real
13571+
loglogistic_log(row_vector, vector, array[] real) => real
13572+
loglogistic_log(row_vector, row_vector, real) => real
13573+
loglogistic_log(row_vector, row_vector, vector) => real
13574+
loglogistic_log(row_vector, row_vector, row_vector) => real
13575+
loglogistic_log(row_vector, row_vector, array[] real) => real
13576+
loglogistic_log(row_vector, array[] real, real) => real
13577+
loglogistic_log(row_vector, array[] real, vector) => real
13578+
loglogistic_log(row_vector, array[] real, row_vector) => real
13579+
loglogistic_log(row_vector, array[] real, array[] real) => real
13580+
loglogistic_log(array[] real, real, real) => real
13581+
loglogistic_log(array[] real, real, vector) => real
13582+
loglogistic_log(array[] real, real, row_vector) => real
13583+
loglogistic_log(array[] real, real, array[] real) => real
13584+
loglogistic_log(array[] real, vector, real) => real
13585+
loglogistic_log(array[] real, vector, vector) => real
13586+
loglogistic_log(array[] real, vector, row_vector) => real
13587+
loglogistic_log(array[] real, vector, array[] real) => real
13588+
loglogistic_log(array[] real, row_vector, real) => real
13589+
loglogistic_log(array[] real, row_vector, vector) => real
13590+
loglogistic_log(array[] real, row_vector, row_vector) => real
13591+
loglogistic_log(array[] real, row_vector, array[] real) => real
13592+
loglogistic_log(array[] real, array[] real, real) => real
13593+
loglogistic_log(array[] real, array[] real, vector) => real
13594+
loglogistic_log(array[] real, array[] real, row_vector) => real
13595+
loglogistic_log(array[] real, array[] real, array[] real) => real
13596+
loglogistic_lpdf(real, real, real) => real
13597+
loglogistic_lpdf(real, real, vector) => real
13598+
loglogistic_lpdf(real, real, row_vector) => real
13599+
loglogistic_lpdf(real, real, array[] real) => real
13600+
loglogistic_lpdf(real, vector, real) => real
13601+
loglogistic_lpdf(real, vector, vector) => real
13602+
loglogistic_lpdf(real, vector, row_vector) => real
13603+
loglogistic_lpdf(real, vector, array[] real) => real
13604+
loglogistic_lpdf(real, row_vector, real) => real
13605+
loglogistic_lpdf(real, row_vector, vector) => real
13606+
loglogistic_lpdf(real, row_vector, row_vector) => real
13607+
loglogistic_lpdf(real, row_vector, array[] real) => real
13608+
loglogistic_lpdf(real, array[] real, real) => real
13609+
loglogistic_lpdf(real, array[] real, vector) => real
13610+
loglogistic_lpdf(real, array[] real, row_vector) => real
13611+
loglogistic_lpdf(real, array[] real, array[] real) => real
13612+
loglogistic_lpdf(vector, real, real) => real
13613+
loglogistic_lpdf(vector, real, vector) => real
13614+
loglogistic_lpdf(vector, real, row_vector) => real
13615+
loglogistic_lpdf(vector, real, array[] real) => real
13616+
loglogistic_lpdf(vector, vector, real) => real
13617+
loglogistic_lpdf(vector, vector, vector) => real
13618+
loglogistic_lpdf(vector, vector, row_vector) => real
13619+
loglogistic_lpdf(vector, vector, array[] real) => real
13620+
loglogistic_lpdf(vector, row_vector, real) => real
13621+
loglogistic_lpdf(vector, row_vector, vector) => real
13622+
loglogistic_lpdf(vector, row_vector, row_vector) => real
13623+
loglogistic_lpdf(vector, row_vector, array[] real) => real
13624+
loglogistic_lpdf(vector, array[] real, real) => real
13625+
loglogistic_lpdf(vector, array[] real, vector) => real
13626+
loglogistic_lpdf(vector, array[] real, row_vector) => real
13627+
loglogistic_lpdf(vector, array[] real, array[] real) => real
13628+
loglogistic_lpdf(row_vector, real, real) => real
13629+
loglogistic_lpdf(row_vector, real, vector) => real
13630+
loglogistic_lpdf(row_vector, real, row_vector) => real
13631+
loglogistic_lpdf(row_vector, real, array[] real) => real
13632+
loglogistic_lpdf(row_vector, vector, real) => real
13633+
loglogistic_lpdf(row_vector, vector, vector) => real
13634+
loglogistic_lpdf(row_vector, vector, row_vector) => real
13635+
loglogistic_lpdf(row_vector, vector, array[] real) => real
13636+
loglogistic_lpdf(row_vector, row_vector, real) => real
13637+
loglogistic_lpdf(row_vector, row_vector, vector) => real
13638+
loglogistic_lpdf(row_vector, row_vector, row_vector) => real
13639+
loglogistic_lpdf(row_vector, row_vector, array[] real) => real
13640+
loglogistic_lpdf(row_vector, array[] real, real) => real
13641+
loglogistic_lpdf(row_vector, array[] real, vector) => real
13642+
loglogistic_lpdf(row_vector, array[] real, row_vector) => real
13643+
loglogistic_lpdf(row_vector, array[] real, array[] real) => real
13644+
loglogistic_lpdf(array[] real, real, real) => real
13645+
loglogistic_lpdf(array[] real, real, vector) => real
13646+
loglogistic_lpdf(array[] real, real, row_vector) => real
13647+
loglogistic_lpdf(array[] real, real, array[] real) => real
13648+
loglogistic_lpdf(array[] real, vector, real) => real
13649+
loglogistic_lpdf(array[] real, vector, vector) => real
13650+
loglogistic_lpdf(array[] real, vector, row_vector) => real
13651+
loglogistic_lpdf(array[] real, vector, array[] real) => real
13652+
loglogistic_lpdf(array[] real, row_vector, real) => real
13653+
loglogistic_lpdf(array[] real, row_vector, vector) => real
13654+
loglogistic_lpdf(array[] real, row_vector, row_vector) => real
13655+
loglogistic_lpdf(array[] real, row_vector, array[] real) => real
13656+
loglogistic_lpdf(array[] real, array[] real, real) => real
13657+
loglogistic_lpdf(array[] real, array[] real, vector) => real
13658+
loglogistic_lpdf(array[] real, array[] real, row_vector) => real
13659+
loglogistic_lpdf(array[] real, array[] real, array[] real) => real
13660+
loglogistic_rng(int, int) => real
13661+
loglogistic_rng(int, real) => real
13662+
loglogistic_rng(real, int) => real
13663+
loglogistic_rng(real, real) => real
13664+
loglogistic_rng(int, vector) => array[] real
13665+
loglogistic_rng(int, row_vector) => array[] real
13666+
loglogistic_rng(int, array[] int) => array[] real
13667+
loglogistic_rng(int, array[] real) => array[] real
13668+
loglogistic_rng(real, vector) => array[] real
13669+
loglogistic_rng(real, row_vector) => array[] real
13670+
loglogistic_rng(real, array[] int) => array[] real
13671+
loglogistic_rng(real, array[] real) => array[] real
13672+
loglogistic_rng(vector, int) => array[] real
13673+
loglogistic_rng(vector, real) => array[] real
13674+
loglogistic_rng(vector, vector) => array[] real
13675+
loglogistic_rng(vector, row_vector) => array[] real
13676+
loglogistic_rng(vector, array[] int) => array[] real
13677+
loglogistic_rng(vector, array[] real) => array[] real
13678+
loglogistic_rng(row_vector, int) => array[] real
13679+
loglogistic_rng(row_vector, real) => array[] real
13680+
loglogistic_rng(row_vector, vector) => array[] real
13681+
loglogistic_rng(row_vector, row_vector) => array[] real
13682+
loglogistic_rng(row_vector, array[] int) => array[] real
13683+
loglogistic_rng(row_vector, array[] real) => array[] real
13684+
loglogistic_rng(array[] int, int) => array[] real
13685+
loglogistic_rng(array[] int, real) => array[] real
13686+
loglogistic_rng(array[] int, vector) => array[] real
13687+
loglogistic_rng(array[] int, row_vector) => array[] real
13688+
loglogistic_rng(array[] int, array[] int) => array[] real
13689+
loglogistic_rng(array[] int, array[] real) => array[] real
13690+
loglogistic_rng(array[] real, int) => array[] real
13691+
loglogistic_rng(array[] real, real) => array[] real
13692+
loglogistic_rng(array[] real, vector) => array[] real
13693+
loglogistic_rng(array[] real, row_vector) => array[] real
13694+
loglogistic_rng(array[] real, array[] int) => array[] real
13695+
loglogistic_rng(array[] real, array[] real) => array[] real
1346813696
lognormal_ccdf_log(real, real, real) => real
1346913697
lognormal_ccdf_log(real, real, vector) => real
1347013698
lognormal_ccdf_log(real, real, row_vector) => real

0 commit comments

Comments
 (0)