< 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: 35
Uncovered lines: 0
Coverable lines: 35
Total lines: 69
Line coverage: 100%
Branch coverage
100%
Covered branches: 8
Total branches: 8
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%
AreParallel(...)100%44100%
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    {
 148344621        X = x;
 148344622        Y = y;
 148344623        Z = z;
 148344624    }
 25
 3998026    internal bool IsZero => X.IsZero && Y.IsZero && Z.IsZero;
 27
 28    internal Signed576 SquaredLength =>
 14620529        WideArithmetic.AddSigned576(
 14620530            WideArithmetic.AddSigned576(
 14620531                WideArithmetic.MultiplySigned320(X, X),
 14620532                WideArithmetic.MultiplySigned320(Y, Y)),
 14620533            WideArithmetic.MultiplySigned320(Z, Z));
 34
 35    internal static WideAxis3 Cross(in WideAxis3 left, in WideAxis3 right) =>
 5383636        new(
 5383637            Signed320.NarrowValue(WideArithmetic.SubtractSigned576(
 5383638                WideArithmetic.MultiplySigned320(left.Y, right.Z),
 5383639                WideArithmetic.MultiplySigned320(left.Z, right.Y))),
 5383640            Signed320.NarrowValue(WideArithmetic.SubtractSigned576(
 5383641                WideArithmetic.MultiplySigned320(left.Z, right.X),
 5383642                WideArithmetic.MultiplySigned320(left.X, right.Z))),
 5383643            Signed320.NarrowValue(WideArithmetic.SubtractSigned576(
 5383644                WideArithmetic.MultiplySigned320(left.X, right.Y),
 5383645                WideArithmetic.MultiplySigned320(left.Y, right.X))));
 46
 47    // Equality needs the complete cross products, even when the resulting
 48    // direction would not fit this owner's Signed320 component storage.
 49    internal static bool AreParallel(in WideAxis3 left, in WideAxis3 right) =>
 1550        WideArithmetic.SubtractSigned704(WideArithmetic.MultiplySigned576ToSigned704(Signed576.ExtendValue(left.Y), righ
 1551            WideArithmetic.MultiplySigned576ToSigned704(Signed576.ExtendValue(left.Z), right.Y)).IsZero
 1552        && WideArithmetic.SubtractSigned704(WideArithmetic.MultiplySigned576ToSigned704(Signed576.ExtendValue(left.Z), r
 1553            WideArithmetic.MultiplySigned576ToSigned704(Signed576.ExtendValue(left.X), right.Z)).IsZero
 1554        && WideArithmetic.SubtractSigned704(WideArithmetic.MultiplySigned576ToSigned704(Signed576.ExtendValue(left.X), r
 1555            WideArithmetic.MultiplySigned576ToSigned704(Signed576.ExtendValue(left.Y), right.X)).IsZero;
 56
 57    internal static Signed576 Dot(in WideAxis3 left, in WideAxis3 right) =>
 15734258        WideArithmetic.AddSigned576(
 15734259            WideArithmetic.AddSigned576(
 15734260                WideArithmetic.MultiplySigned320(left.X, right.X),
 15734261                WideArithmetic.MultiplySigned320(left.Y, right.Y)),
 15734262            WideArithmetic.MultiplySigned320(left.Z, right.Z));
 63
 64    public static WideAxis3 operator -(WideAxis3 value) =>
 101165        new(
 101166            WideArithmetic.SubtractSigned320(default, value.X),
 101167            WideArithmetic.SubtractSigned320(default, value.Y),
 101168            WideArithmetic.SubtractSigned320(default, value.Z));
 69}