Пример #1
0
        public static float MaxAbs(ReadOnlySpan <float> source)
        {
            Contracts.AssertNonEmpty(source);

            if (Avx.IsSupported)
            {
                return(AvxIntrinsics.MaxAbsU(source));
            }
            else if (Sse.IsSupported)
            {
                return(SseIntrinsics.MaxAbsU(source));
            }
            else
            {
                float max = 0;
                for (int i = 0; i < source.Length; i++)
                {
                    float abs = Math.Abs(source[i]);
                    if (abs > max)
                    {
                        max = abs;
                    }
                }
                return(max);
            }
        }
Пример #2
0
 private static float MaxAbs(Span <float> src)
 {
     if (Avx.IsSupported)
     {
         return(AvxIntrinsics.MaxAbsU(src));
     }
     else if (Sse.IsSupported)
     {
         return(SseIntrinsics.MaxAbsU(src));
     }
     else
     {
         float max = 0;
         for (int i = 0; i < src.Length; i++)
         {
             float abs = Math.Abs(src[i]);
             if (abs > max)
             {
                 max = abs;
             }
         }
         return(max);
     }
 }
Пример #3
0
 public float MaxAbsU()
 => AvxIntrinsics.MaxAbsU(new Span <float>(src, 0, Length));
Пример #4
0
 public float ManagedMaxAbsUPerf()
 {
     return(AvxIntrinsics.MaxAbsU(new Span <float>(src, 0, LEN)));
 }