Cos

y = cos x

struct Cos (
T
size_t dim
) {
Variable!(T, dim, HostStorage) hx;
Variable!(T, dim, DeviceStorage) dx;
}

Examples

1 import grain.testing;
2 import std.typecons;
3 import numir;
4 import mir.ndslice;
5 import mir.math : cos;
6 
7 Cos!(float, 2) hfunc;
8 auto hx = uniform!float(2, 3).slice.variable;
9 auto hy = hfunc.forward(hx);
10 auto hgy = uniform!float(2, 3).slice.variable;
11 auto hgx = hfunc.backward(hgy);
12 gradCheck(hfunc, hx, hgy, 1e-3, 1e-3, 1e-3);
13 assert(approxEqual(hy.sliced, hx.sliced.map!cos));
14 
15 version (grain_cuda) {
16     Cos!(float, 2) dfunc;
17     auto dy = dfunc.forward(hx.to!DeviceStorage);
18     assert(approxEqual(dy.to!HostStorage.sliced, hy.sliced));
19     auto dgx = dfunc.backward(hgy.to!DeviceStorage);
20     assert(approxEqual(dgx.to!HostStorage.sliced, hgx.sliced));
21 }

Meta