mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 01:44:37 +00:00
25 lines
615 B
Nim
25 lines
615 B
Nim
discard """
|
|
output: "optimized"
|
|
"""
|
|
# bug #4227
|
|
type Vector64[N: static[int]] = array[N, int]
|
|
|
|
proc `*`*[N: static[int]](a: Vector64[N]; b: float64): Vector64[N] =
|
|
result = a
|
|
|
|
proc `+=`*[N: static[int]](a: var Vector64[N]; b: Vector64[N]) =
|
|
echo "regular"
|
|
|
|
proc linearCombinationMut[N: static[int]](a: float64, v: var Vector64[N], w: Vector64[N]) {. inline .} =
|
|
echo "optimized"
|
|
|
|
template rewriteLinearCombinationMut*{v += `*`(w, a)}(a: float64, v: var Vector64, w: Vector64): auto =
|
|
linearCombinationMut(a, v, w)
|
|
|
|
proc main() =
|
|
const scaleVal = 9.0
|
|
var a, b: Vector64[7]
|
|
a += b * scaleval
|
|
|
|
main()
|