41 lines
1003 B
Kotlin
Vendored
41 lines
1003 B
Kotlin
Vendored
import kotlin.*
|
|
import kotlin.ranges.*
|
|
|
|
@CompileTimeCalculation
|
|
class MatrixNN(val values: Array<Array<Double>>) {
|
|
val size = values.size
|
|
operator fun times(other: MatrixNN): MatrixNN {
|
|
val matrix = Array<Array<Double>>(size) { Array<Double>(size) { 0.0 } }
|
|
for (i in 0 until size) {
|
|
for (j in 0 until size) {
|
|
for (k in 0 until size) {
|
|
matrix[i][j] += this.values[i][k] * other.values[k][j]
|
|
}
|
|
}
|
|
}
|
|
return MatrixNN(matrix)
|
|
}
|
|
}
|
|
|
|
@CompileTimeCalculation
|
|
fun demo(): Double {
|
|
val m1 = MatrixNN(
|
|
arrayOf(
|
|
arrayOf(3.0, 1.0, 0.0),
|
|
arrayOf(1.0, 1.0, 0.0),
|
|
arrayOf(0.0, 0.0, 1.0)
|
|
)
|
|
)
|
|
val m2 = MatrixNN(
|
|
arrayOf(
|
|
arrayOf(3.0, 1.0, 1.0),
|
|
arrayOf(1.0, 1.0, 1.0),
|
|
arrayOf(1.0, 1.0, 1.0)
|
|
)
|
|
)
|
|
|
|
return (m1 * m2).values[0][0]
|
|
}
|
|
|
|
const val temp = <!EVALUATED: `10.0`!>demo()<!>
|