< Summary

Information
Class: FixedMathSharp.Geometry.WideAxis3
Assembly: FixedMathSharp
File(s): /home/runner/work/FixedMathSharp/FixedMathSharp/src/FixedMathSharp/Geometry/Wide/Common/WideAxis3.cs
Line coverage
100%
Covered lines: 29
Uncovered lines: 0
Coverable lines: 29
Total lines: 59
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_IsZero()100%44100%
get_SquaredLength()100%11100%
Cross(...)100%11100%
Dot(...)100%11100%
op_UnaryNegation(...)100%11100%

File(s)

/home/runner/work/FixedMathSharp/FixedMathSharp/src/FixedMathSharp/Geometry/Wide/Common/WideAxis3.cs

#LineLine coverage
 1//=======================================================================
 2// WideAxis3.cs
 3//=======================================================================
 4// MIT License, Copyright (c) 2024-present David Oravsky (mrdav30)
 5// See LICENSE file in the project root for full license information.
 6//=======================================================================
 7
 8namespace FixedMathSharp.Geometry;
 9
 10/// <summary>
 11/// Stores an exact three-component axis used by rigid wide geometry.
 12/// </summary>
 13internal readonly struct WideAxis3
 14{
 15    internal readonly Signed320 X;
 16    internal readonly Signed320 Y;
 17    internal readonly Signed320 Z;
 18
 19    internal WideAxis3(Signed320 x, Signed320 y, Signed320 z)
 20    {
 10492421        X = x;
 10492422        Y = y;
 10492423        Z = z;
 10492424    }
 25
 3537226    internal bool IsZero => X.IsZero && Y.IsZero && Z.IsZero;
 27
 28    internal Signed576 SquaredLength =>
 5784429        WideArithmetic.AddSigned576(
 5784430            WideArithmetic.AddSigned576(
 5784431                WideArithmetic.MultiplySigned320(X, X),
 5784432                WideArithmetic.MultiplySigned320(Y, Y)),
 5784433            WideArithmetic.MultiplySigned320(Z, Z));
 34
 35    internal static WideAxis3 Cross(in WideAxis3 left, in WideAxis3 right) =>
 1286936        new(
 1286937            Signed320.NarrowValue(WideArithmetic.SubtractSigned576(
 1286938                WideArithmetic.MultiplySigned320(left.Y, right.Z),
 1286939                WideArithmetic.MultiplySigned320(left.Z, right.Y))),
 1286940            Signed320.NarrowValue(WideArithmetic.SubtractSigned576(
 1286941                WideArithmetic.MultiplySigned320(left.Z, right.X),
 1286942                WideArithmetic.MultiplySigned320(left.X, right.Z))),
 1286943            Signed320.NarrowValue(WideArithmetic.SubtractSigned576(
 1286944                WideArithmetic.MultiplySigned320(left.X, right.Y),
 1286945                WideArithmetic.MultiplySigned320(left.Y, right.X))));
 46
 47    internal static Signed576 Dot(in WideAxis3 left, in WideAxis3 right) =>
 4080648        WideArithmetic.AddSigned576(
 4080649            WideArithmetic.AddSigned576(
 4080650                WideArithmetic.MultiplySigned320(left.X, right.X),
 4080651                WideArithmetic.MultiplySigned320(left.Y, right.Y)),
 4080652            WideArithmetic.MultiplySigned320(left.Z, right.Z));
 53
 54    public static WideAxis3 operator -(WideAxis3 value) =>
 4455        new(
 4456            WideArithmetic.SubtractSigned320(default, value.X),
 4457            WideArithmetic.SubtractSigned320(default, value.Y),
 4458            WideArithmetic.SubtractSigned320(default, value.Z));
 59}