From cc81866da1d045c6702e1c3814fa8ea3e15d53da Mon Sep 17 00:00:00 2001 From: Dan Rose Date: Sun, 28 Aug 2022 21:17:18 -0500 Subject: [PATCH] Implement complex sgn (#20087) Co-authored-by: Clay Sweetser --- lib/pure/complex.nim | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/pure/complex.nim b/lib/pure/complex.nim index 5492028a8c..2ff52455c1 100644 --- a/lib/pure/complex.nim +++ b/lib/pure/complex.nim @@ -81,6 +81,13 @@ func abs2*[T](z: Complex[T]): T = ## that is the squared distance from (0, 0) to `z`. ## This is more efficient than `abs(z) ^ 2`. result = z.re * z.re + z.im * z.im + +func sgn*[T](z: Complex[T]): Complex[T] = + ## Returns the phase of `z` as a unit complex number, + ## or 0 if `z` is 0. + let a = abs(z) + if a != 0: + result = z / a func conjugate*[T](z: Complex[T]): Complex[T] = ## Returns the complex conjugate of `z` (`complex(z.re, -z.im)`).