inline void apply_on_vector(FloatType * out, Arg1Type in1, Arg2Type in2, Functor f)
{
    for (int i = 0; i != VectorSize; ++i) {
        *out++ = f(in1.get(), in2.get());
        in1.increment();
        in2.increment();
    }
}
inline void apply_on_vector(FloatType * out, Arg1Type in1, Arg2Type in2, unsigned int n, Functor f)
{
    do
    {
        *out++ = f(in1.get(), in2.get());
        in1.increment();
        in2.increment();
    }
    while (--n);
}