std.simd module
Martin Nowak
dawg at dawgfoto.de
Sat Feb 4 16:17:01 PST 2012
> First criticism I expect is for many to insist on a class-style vector
> library, which I personally think has no place as a low level, portable
> API.
> Everyone has a different idea of what the perfect vector lib should look
> like, and it tends to change significantly with respect to its
> application.
>
- Thing like toDouble, toFloat don't map to vectors if they change the
number of elements.
- What's getX(byte16), swizzling makes sense for float4/double2, not sure
about the rest.
- Using named free functions for operands (or, complement, neg) is overly
verbose.
So indeed my proposal is to prefer GLSL-like syntax.
// construction conversion
auto f = float4(1.0, 2.0f, 3, 4);
auto f2 = v.yxzw; // using opDispatch
auto d = double2(v.wy);
auto d = double2(v.get!(0), v.get!(1)); // probably someone knows a
trick for compile time indexing (v[0])
auto f3 = float4(1.0, d, 2);
double d = f3.z;
// a lot of operands can be mapped and are already
f |= f2;
f = f & ~f2;
// named functions for the rest
auto f1 = float4.loadAligned(p);
auto f2 = float4.loadUnaligned(p);
auto f3 = float4.broadcast(1.0f);
> I feel this flat API is easier to implement, maintain, and understand,
> and
> I expect the most common use of this lib will be in the back end of
> peoples
> own vector/matrix/linear algebra libs that suit their apps.
>
Phobos should provide at least basic vector and matrix implementations.
More information about the Digitalmars-d
mailing list