40 size_t n = tx[0].
size;
44 convert(tx, libModel._tx, n, p, p + 1);
46 size_t ty_size = m * (p + 1);
47 libModel._ty.resize(ty_size);
49 std::fill(&libModel._ty[0], &libModel._ty[0] + ty_size, Base(0));
51 bool ret = atomic_->forward(q, p, vx, vy, libModel._tx, libModel._ty);
53 convertAdd(libModel._ty, ty, m, p, p);
62 const Array py[])
override {
63 size_t m = py[0].
size;
64 size_t n = tx[0].
size;
66 convert(tx, libModel._tx, n, p, p + 1);
68 libModel._ty.resize(m * (p + 1));
69 std::fill(&libModel._ty[0], &libModel._ty[0] + libModel._ty.size(), Base(0));
71 convert(py, libModel._py, m, p, p + 1);
73 size_t px_size = n * (p + 1);
74 libModel._px.resize(px_size);
76 std::fill(&libModel._px[0], &libModel._px[0] + px_size, Base(0));
79 if (libModel._evalAtomicForwardOne4CppAD) {
82 if (!atomic_->forward(p, p, vx, vy, libModel._tx, libModel._ty))
87 bool ret = atomic_->reverse(p, libModel._tx, libModel._ty, libModel._px, libModel._py);
89 convertAdd(libModel._px, px, n, p, 0);