-
-
Notifications
You must be signed in to change notification settings - Fork 21
/
VecGen.kt
33 lines (29 loc) · 894 Bytes
/
VecGen.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package ai.hypergraph.shipshape
fun genVec() =
genVecOfPrimitives() +
genVecOfSConst() +
genVecOfSFun()
private fun genVecOfSFun() =
(1..maxDim).joinToString("\n", "\n", "\n") { dim ->
"fun <X: SFun<X>> Vec(${
(1..dim).joinToString { "y$it: SFun<X>" }
}) = Vec<X, D$dim>(arrayListOf(${
(1..dim).joinToString { "y$it" }
}))"
}
private fun genVecOfSConst() =
(1..maxDim).joinToString("\n", "\n", "\n") { dim ->
"fun <X: SFun<X>> Vec(${
(1..dim).joinToString { "y$it: SConst<X>" }
}) = VConst<X, D$dim>(${
(1..dim).joinToString { "y$it" }
})"
}
private fun genVecOfPrimitives() =
(1..maxDim).joinToString("\n", "\n", "\n") { dim ->
"fun <X: RealNumber<X, Y>, Y: Number> RealNumber<X, Y>.Vec(${
(1..dim).joinToString { "y$it: Y" }
}) = VConst<X, D$dim>(${
(1..dim).joinToString { "wrap(y$it)" }
})"
}