Open
Description
Description
This is a meta issue to list out the steps needed for static matrices (list is in no particular order). If I'm missing anything please make a comment and I'll update
- A. Code reviews for the base implementation (I think it could be made a lot better)
- B. Write a script that replaces vari and var with templated versions in the math library.
- I think a clever R or Python script could read through the library and add those templates as necessary.
- C. Write out the derivatives for the operators in core for mixes of matrices, vectors, scalars, etc.
- This is just going through Giles and using matrixcalculus.org to template out matrix specializations
- D. Figure out what stuff can be reused in rev
- I'm not totally sure how much can be reused. Things like rev inverse etc probably need specializations, but it looks like a lot of the unary functions can just reuse the same code with some templating. I'd like to support everything that a matrix can currently do and I need some help from people smarter than I to figure out what can be reused with some clever refactoring.
- E. Have distributions take in var types with inner Eigen types
- Writing out specializations for operands_and_partials, scalar_seq_view, and VectorBuilder.
- This can only be done once the underlying functions distributions depend on accept static matrices
- We will also need to add static matrices to the distribution test suite
- F. Refactor the AD test suite to work on static matrices - There's a lot of places in the AD test suite that assumes the var's inner type is double. The steps for this could be to implement the derivatives of the operators first, then once those are in refactor the AD test suite / add a specialization for matrix var types.
Current Version:
v3.2.0