Skip to content

Commit

Permalink
Merge pull request #2548 from yizhang-cae/feature-2539-matrix_exp_mult
Browse files Browse the repository at this point in the history
Feature 2539 matrix exp mult
  • Loading branch information
Bob Carpenter committed Jun 16, 2018
2 parents 8d67511 + ce2431a commit 1b8a066
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/stan/lang/function_signatures.h
Original file line number Diff line number Diff line change
Expand Up @@ -674,6 +674,7 @@ for (const auto& t : all_vector_types) {
}
add_nullary("machine_precision");
add("matrix_exp", expr_type(matrix_type()), expr_type(matrix_type()));
add("matrix_exp_multiply", expr_type(matrix_type()), expr_type(matrix_type()), expr_type(matrix_type()));
add("max", expr_type(int_type()), expr_type(int_type(), 1));
add("max", expr_type(double_type()), expr_type(double_type(), 1));
add("max", expr_type(double_type()), expr_type(vector_type()));
Expand Down Expand Up @@ -1040,6 +1041,7 @@ add("rows_dot_product", expr_type(vector_type()), expr_type(matrix_type()), expr
add("rows_dot_self", expr_type(vector_type()), expr_type(vector_type()));
add("rows_dot_self", expr_type(vector_type()), expr_type(row_vector_type()));
add("rows_dot_self", expr_type(vector_type()), expr_type(matrix_type()));
add("scale_matrix_exp_multiply", expr_type(matrix_type()), expr_type(double_type()), expr_type(matrix_type()), expr_type(matrix_type()));
for (size_t i = 0; i < vector_types.size(); ++i) {
for (size_t j = 0; j < vector_types.size(); ++j) {
for (size_t k = 0; k < vector_types.size(); ++k) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
data {
int d_int;
int d_col;
matrix[d_int,d_int] d_matrix_a;
matrix[d_int,d_col] d_matrix_b;
}
transformed data {
matrix[d_int,d_col] transformed_data_matrix;
transformed_data_matrix = matrix_exp_multiply(d_matrix_a, d_matrix_b);
}
parameters {
real y_p;
matrix[d_int,d_int] p_matrix_a;
matrix[d_int,d_col] p_matrix_b;
}
transformed parameters {
matrix[d_int,d_col] transformed_param_matrix;

transformed_param_matrix = matrix_exp_multiply(p_matrix_a, p_matrix_b);
transformed_param_matrix = matrix_exp_multiply(p_matrix_a, d_matrix_b);
transformed_param_matrix = matrix_exp_multiply(d_matrix_a, p_matrix_b);
}
model {
y_p ~ normal(0,1);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
data {
int d_int;
int d_col;
real d_t;
matrix[d_int,d_int] d_matrix_a;
matrix[d_int,d_col] d_matrix_b;
}
transformed data {
matrix[d_int,d_col] transformed_data_matrix;
transformed_data_matrix = scale_matrix_exp_multiply(d_t, d_matrix_a, d_matrix_b);
}
parameters {
real y_p;
matrix[d_int,d_int] p_matrix_a;
matrix[d_int,d_col] p_matrix_b;
}
transformed parameters {
matrix[d_int,d_col] transformed_param_matrix;

transformed_param_matrix = scale_matrix_exp_multiply(d_t, p_matrix_a, p_matrix_b);
transformed_param_matrix = scale_matrix_exp_multiply(d_t, p_matrix_a, d_matrix_b);
transformed_param_matrix = scale_matrix_exp_multiply(d_t, d_matrix_a, p_matrix_b);
}
model {
y_p ~ normal(0,1);
}
8 changes: 8 additions & 0 deletions src/test/unit/lang/parser/matrix_functions_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,10 @@ TEST(lang_parser, matrix_exp_matrix_function_signatures) {
test_parsable("function-signatures/math/matrix/matrix_exp");
}

TEST(lang_parser, matrix_exp_multiply_matrix_function_signatures) {
test_parsable("function-signatures/math/matrix/matrix_exp_multiply");
}

TEST(lang_parser, max_matrix_function_signatures) {
test_parsable("function-signatures/math/matrix/max");
}
Expand Down Expand Up @@ -259,6 +263,10 @@ TEST(lang_parser, rows_dot_self_matrix_function_signatures) {
test_parsable("function-signatures/math/matrix/rows_dot_self");
}

TEST(lang_parser, scale_matrix_exp_multiply_matrix_function_signatures) {
test_parsable("function-signatures/math/matrix/scale_matrix_exp_multiply");
}

TEST(lang_parser, singular_values_matrix_function_signatures) {
test_parsable("function-signatures/math/matrix/singular_values");
}
Expand Down

0 comments on commit 1b8a066

Please sign in to comment.