/// <summary> /// 지정된 시퀀스의 값 중 가장 작은 값을 가진 요소의 인덱스를 구한다. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="source"></param> /// <returns></returns> public static int IndexOfAbsMin <T>(this IEnumerable <T> source) { var index = -1; using (var iter = source.Abs().GetEnumerator()) { if (iter.MoveNext() == false) { return(index); } var highest = iter.Current; var count = 0; index = count; while (iter.MoveNext()) { var current = iter.Current; count++; if (LinqTool.Operators <T> .LessThan(current, highest)) { highest = current; index = count; } } } return(index); }
/// <summary> /// 시퀀스 요소의 절대값의 최대/최소값을 구한다. /// </summary> /// <param name="source">Sequece of variable</param> /// <param name="min">변량의 절대값의 최소값</param> /// <param name="max">변량의 절대값의 최대값</param> public static void GetAbsMinMax(this IEnumerable <int> source, out int min, out int max) { source.ShouldNotBeNull("source"); min = int.MaxValue; max = int.MinValue; foreach (var v in source.Abs()) { if (min > v) { min = v; } if (max < v) { max = v; } } }
/// <summary> /// 변량들의 절대값의 합을 구한다. /// </summary> /// <param name="source">변량 시퀀스</param> /// <returns>변량들의 절대값의 합</returns> public static long AbsSum(this IEnumerable <long> source) { return(source.Abs().Sum()); }
/// <summary> /// 변량들의 절대값의 합을 구한다. /// </summary> /// <param name="source">변량 시퀀스</param> /// <returns>변량들의 절대값의 합</returns> public static int AbsSum(this IEnumerable <int> source) { return(source.Abs().Sum()); }
/// <summary> /// 변량들의 절대값의 합을 구한다. /// </summary> /// <param name="source">변량 시퀀스</param> /// <returns>변량들의 절대값의 합</returns> public static float AbsSum(this IEnumerable <float> source) { return(source.Abs().Sum()); }
/// <summary> /// 변량들의 절대값의 합을 구한다. /// </summary> /// <param name="source">변량 시퀀스</param> /// <returns>변량들의 절대값의 합</returns> public static double AbsSum(this IEnumerable <double> source) { return(source.Abs().Sum()); }
/// <summary> /// 변량들의 절대값의 합을 구한다. /// </summary> /// <param name="source">변량 시퀀스</param> /// <returns>변량들의 절대값의 합</returns> public static decimal AbsSum(this IEnumerable <decimal> source) { return(source.Abs().Sum()); }