TEST(StanAgradRevInternal, precomp_vv_vari) { double value, gradient1, gradient2; AVAR x1(2), x2(3); AVAR y; value = 1; gradient1 = 4; gradient2 = 5; AVEC vars = createAVEC(x1, x2); EXPECT_NO_THROW(y = stan::math::var(new stan::math::precomp_vv_vari(value, x1.vi_, x2.vi_, gradient1, gradient2))); EXPECT_FLOAT_EQ(value, y.val()); VEC g; EXPECT_NO_THROW(y.grad(vars, g)); ASSERT_EQ(2U, g.size()); EXPECT_FLOAT_EQ(gradient1, g[0]); EXPECT_FLOAT_EQ(gradient2, g[1]); stan::math::recover_memory(); }
VEC cgrad(AVAR f, AVAR x1, AVAR x2, AVAR x3, AVAR x4) { AVEC x = createAVEC(x1,x2,x3,x4); VEC g; f.grad(x,g); return g; }
VEC cgrad(AVAR f, AVAR x1, AVAR x2) { AVEC x = createAVEC(x1,x2); VEC g; f.grad(x,g); return g; }
AVEC createAVEC(AVAR x1, AVAR x2, AVAR x3, AVAR x4, AVAR x5, AVAR x6, AVAR x7, AVAR x8) { AVEC v = createAVEC(x1,x2,x3,x4,x5,x6,x7); v.push_back(x8); return v; }
AVEC createAVEC(AVAR x1, AVAR x2, AVAR x3, AVAR x4, AVAR x5, AVAR x6) { AVEC v = createAVEC(x1,x2,x3,x4,x5); v.push_back(x6); return v; }
AVEC createAVEC(AVAR x1, AVAR x2, AVAR x3, AVAR x4) { AVEC v = createAVEC(x1,x2,x3); v.push_back(x4); return v; }