Example #1
0
File: sum.cs Project: 0xCM/arrows
        public static double sum(ReadOnlySpan <double> src)
        {
            var veclen = Vec128 <double> .Length;
            var seglen = 2 * veclen;
            var srclen = src.Length;

            require(0 == srclen % seglen);

            var dst    = Vec128.Fill((double)0);
            var offset = 0;

            for (var i = 0; i < srclen; i += seglen)
            {
                var v1 = Vec128.Load(src, offset);
                offset += veclen;
                var v2 = Vec128.Load(src, offset);
                offset += veclen;
                var vSum = dfp.hadd(v1, v2);
                dst = dfp.add(dst, vSum);
            }

            Span <double> final = stackalloc double[veclen];

            vstore(dst, ref final[0]);

            var total = (double)0;

            for (var i = 0; i < veclen; i++)
            {
                total += final[i];
            }
            return(total);
        }
Example #2
0
 static Vec128 <float> CalcFpSignMask32()
 => Vec128.Fill(-0.0f);
Example #3
0
 static Vec128 <double> CalcFpSignMask64()
 => Vec128.Fill(-0.0);