Commit 87863a834b

Chris Boesch <48591413+chrboesch@users.noreply.github.com>
2024-11-26 14:03:48
std.math.complex: Add squared magnitude function (#21998)
1 parent b0dcce9
Changed files (1)
lib
std
lib/std/math/complex.zig
@@ -115,6 +115,10 @@ pub fn Complex(comptime T: type) type {
         pub fn magnitude(self: Self) T {
             return @sqrt(self.re * self.re + self.im * self.im);
         }
+
+        pub fn squaredMagnitude(self: Self) T {
+            return self.re * self.re + self.im * self.im;
+        }
     };
 }
 
@@ -189,6 +193,13 @@ test "magnitude" {
     try testing.expect(math.approxEqAbs(f32, c, 5.83095, epsilon));
 }
 
+test "squaredMagnitude" {
+    const a = Complex(f32).init(5, 3);
+    const c = a.squaredMagnitude();
+
+    try testing.expect(math.approxEqAbs(f32, c, math.pow(f32, a.magnitude(), 2), epsilon));
+}
+
 test {
     _ = @import("complex/abs.zig");
     _ = @import("complex/acosh.zig");