mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-31 02:12:11 +00:00
36 lines
720 B
Nim
36 lines
720 B
Nim
discard """
|
|
targets: "c cpp"
|
|
matrix: "--mm:refc; --mm:arc"
|
|
"""
|
|
|
|
import base64, complex, sequtils, math, sugar
|
|
|
|
type
|
|
|
|
FP = float
|
|
T = object
|
|
index: int
|
|
arg: FP
|
|
val: Complex[FP]
|
|
M = object
|
|
alpha, beta: FP
|
|
|
|
func a(s: openArray[T], model: M): seq[T] =
|
|
let f = (tn: int) => model.alpha + FP(tn) * model.beta;
|
|
return mapIt s:
|
|
block:
|
|
let s = it.val * rect(1.0, - f(it.index))
|
|
T(index: it.index, arg: phase(s), val: s)
|
|
|
|
proc b(): float64 =
|
|
var s = toSeq(0..10).mapIt(T(index: it, arg: 1.0, val: complex.complex(1.0)))
|
|
discard a(s, M(alpha: 1, beta: 1))
|
|
return 1.0
|
|
|
|
func cc(str: cstring, offset: ptr[cdouble]): cint {.exportc.} =
|
|
offset[] = b()
|
|
return 0
|
|
|
|
static:
|
|
echo b()
|