is there a good way to make sure that the output function from
build_function in Symbolics returns output in the same dimensions as the symbolic function used to generate it?
In the simple example below, if
N = 5, running
myf returns a sparse matrix (as expected). However, if
N=100, it returns a sparse vector. If I reshape it, it becomes a dense vector, defeating the purpose of trying to keep everything sparse. Does anybody have a work around?
using Symbolics, SparseArrays N = 5 # try with N = 5 and N = 100 _S = sprand(N, N, 0.1) _Q = Array(sprand(N, N, 0.1)) F(z) = [ _S * z _Q * z.^2 ] Symbolics.@variables z[1:N] sj = Symbolics.sparsejacobian(F(z), z) f_expr = build_function(sj, z) myf = eval(first(f_expr)) myf(rand(N)) reshape(myf(rand(N)), size(sj)) # dense!