diff --git a/runtime/src/main/kotlin/kotlin/Arrays.kt b/runtime/src/main/kotlin/kotlin/Arrays.kt index 3de12647d09..92f8450ef92 100644 --- a/runtime/src/main/kotlin/kotlin/Arrays.kt +++ b/runtime/src/main/kotlin/kotlin/Arrays.kt @@ -1804,6 +1804,164 @@ public inline fun Array.map(transform: (T) -> R): List { return mapTo(ArrayList(size), transform) } + +/** + * Returns an average value of elements in the array. + */ +public fun Array.average(): Double { + var sum: Double = 0.0 + var count: Int = 0 + for (element in this) { + sum += element + count += 1 + } + return if (count == 0) Double.NaN else sum / count +} + +/** + * Returns an average value of elements in the array. + */ +public fun Array.average(): Double { + var sum: Double = 0.0 + var count: Int = 0 + for (element in this) { + sum += element + count += 1 + } + return if (count == 0) Double.NaN else sum / count +} + +/** + * Returns an average value of elements in the array. + */ +public fun Array.average(): Double { + var sum: Double = 0.0 + var count: Int = 0 + for (element in this) { + sum += element + count += 1 + } + return if (count == 0) Double.NaN else sum / count +} + +/** + * Returns an average value of elements in the array. + */ +public fun Array.average(): Double { + var sum: Double = 0.0 + var count: Int = 0 + for (element in this) { + sum += element + count += 1 + } + return if (count == 0) Double.NaN else sum / count +} + +/** + * Returns an average value of elements in the array. + */ +public fun Array.average(): Double { + var sum: Double = 0.0 + var count: Int = 0 + for (element in this) { + sum += element + count += 1 + } + return if (count == 0) Double.NaN else sum / count +} + +/** + * Returns an average value of elements in the array. + */ +public fun Array.average(): Double { + var sum: Double = 0.0 + var count: Int = 0 + for (element in this) { + sum += element + count += 1 + } + return if (count == 0) Double.NaN else sum / count +} + +/** + * Returns an average value of elements in the array. + */ +public fun ByteArray.average(): Double { + var sum: Double = 0.0 + var count: Int = 0 + for (element in this) { + sum += element + count += 1 + } + return if (count == 0) Double.NaN else sum / count +} + +/** + * Returns an average value of elements in the array. + */ +public fun ShortArray.average(): Double { + var sum: Double = 0.0 + var count: Int = 0 + for (element in this) { + sum += element + count += 1 + } + return if (count == 0) Double.NaN else sum / count +} + +/** + * Returns an average value of elements in the array. + */ +public fun IntArray.average(): Double { + var sum: Double = 0.0 + var count: Int = 0 + for (element in this) { + sum += element + count += 1 + } + return if (count == 0) Double.NaN else sum / count +} + +/** + * Returns an average value of elements in the array. + */ +public fun LongArray.average(): Double { + var sum: Double = 0.0 + var count: Int = 0 + for (element in this) { + sum += element + count += 1 + } + return if (count == 0) Double.NaN else sum / count +} + +/** + * Returns an average value of elements in the array. + */ +public fun FloatArray.average(): Double { + var sum: Double = 0.0 + var count: Int = 0 + for (element in this) { + sum += element + count += 1 + } + return if (count == 0) Double.NaN else sum / count +} + +/** + * Returns an average value of elements in the array. + */ +public fun DoubleArray.average(): Double { + var sum: Double = 0.0 + var count: Int = 0 + for (element in this) { + sum += element + count += 1 + } + return if (count == 0) Double.NaN else sum / count +} + + /** * Returns the sum of all elements in the array. */