@@ -301,3 +301,49 @@ module VectorOpsTests =
301301 let result1 = scalar .* ( v1 .+ v2)
302302 let result2 = ( scalar .* v1) .+ ( scalar .* v2)
303303 floatArrayClose result1 result2 1e-10
304+
305+ // =============================================
306+ // @ Operator Tests (Power operator - NOTE: Comment in VectorOps.fs incorrectly says "Dot product")
307+ // =============================================
308+
309+ [<Fact>]
310+ let ``@ operator applies power operation ( float ) `` () =
311+ // The @ operator currently calls Power.Invoke, not Dot.Invoke
312+ // despite the comment saying "// Dot product ( @ )"
313+ let v = [| 2.0 ; 3.0 ; 4.0 |]
314+ let power = 2.0
315+ let result = v @ power
316+ let expected = [| 4.0 ; 9.0 ; 16.0 |]
317+ floatArrayClose expected result 1e-10
318+
319+ [<Fact>]
320+ let ``@ operator with fractional power ( float ) `` () =
321+ let v = [| 4.0 ; 9.0 ; 16.0 |]
322+ let power = 0.5
323+ let result = v @ power
324+ let expected = [| 2.0 ; 3.0 ; 4.0 |]
325+ floatArrayClose expected result 1e-10
326+
327+ [<Fact>]
328+ let ``@ operator with negative power ( float ) `` () =
329+ let v = [| 2.0 ; 4.0 ; 5.0 |]
330+ let power = - 1.0
331+ let result = v @ power
332+ let expected = [| 0.5 ; 0.25 ; 0.2 |]
333+ floatArrayClose expected result 1e-10
334+
335+ [<Fact>]
336+ let ``@ operator with zero power returns ones ( float ) `` () =
337+ let v = [| 2.0 ; 3.0 ; 4.0 |]
338+ let power = 0.0
339+ let result = v @ power
340+ let expected = [| 1.0 ; 1.0 ; 1.0 |]
341+ floatArrayClose expected result 1e-10
342+
343+ [<Fact>]
344+ let ``@ operator with integer power ( float ) `` () =
345+ let v = [| 2.0 ; 3.0 ; 4.0 |]
346+ let power = 3.0
347+ let result = v @ power
348+ let expected = [| 8.0 ; 27.0 ; 64.0 |]
349+ floatArrayClose expected result 1e-10
0 commit comments