< Summary

Information
Class: FixedMathSharp.Signed576
Assembly: FixedMathSharp
File(s): /home/runner/work/FixedMathSharp/FixedMathSharp/src/FixedMathSharp/Numerics/Wide/Signed576.cs
Line coverage
100%
Covered lines: 38
Uncovered lines: 0
Coverable lines: 38
Total lines: 93
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
.cctor()100%11100%
.ctor(...)100%11100%
get_IsZero()100%11100%
get_Sign()100%44100%
ExtendValue(...)100%11100%
ExtendValue(...)100%11100%
NarrowValue(...)100%11100%
NarrowValue(...)100%11100%
Equals(...)100%11100%

File(s)

/home/runner/work/FixedMathSharp/FixedMathSharp/src/FixedMathSharp/Numerics/Wide/Signed576.cs

#LineLine coverage
 1//=======================================================================
 2// Signed576.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
 8using System.Runtime.CompilerServices;
 9
 10namespace FixedMathSharp;
 11
 12/// <summary>
 13/// A signed nine-word value used by exact finite-axis geometry evaluations.
 14/// </summary>
 15internal readonly struct Signed576
 16{
 117    public static readonly Signed576 One = ExtendValue(Signed320.One);
 18
 19    internal readonly ulong Word8;
 20    internal readonly ulong Word7;
 21    internal readonly ulong Word6;
 22    internal readonly ulong Word5;
 23    internal readonly ulong Word4;
 24    internal readonly ulong Word3;
 25    internal readonly ulong Word2;
 26    internal readonly ulong Word1;
 27    internal readonly ulong Word0;
 28
 29    internal Signed576(
 30        ulong word8,
 31        ulong word7,
 32        ulong word6,
 33        ulong word5,
 34        ulong word4,
 35        ulong word3,
 36        ulong word2,
 37        ulong word1,
 38        ulong word0)
 39    {
 2660499640        Word8 = word8;
 2660499641        Word7 = word7;
 2660499642        Word6 = word6;
 2660499643        Word5 = word5;
 2660499644        Word4 = word4;
 2660499645        Word3 = word3;
 2660499646        Word2 = word2;
 2660499647        Word1 = word1;
 2660499648        Word0 = word0;
 2660499649    }
 50
 51    internal bool IsZero =>
 2844597952        (Word8 | Word7 | Word6 | Word5 | Word4 | Word3 | Word2 | Word1 | Word0) == 0UL;
 53
 2039370554    internal int Sign => IsZero ? 0 : (Word8 & (1UL << 63)) != 0UL ? -1 : 1;
 55
 56    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 57    internal static Signed576 ExtendValue(Signed320 value)
 58    {
 1626048159        ulong extension = unchecked((ulong)((long)value.Word4 >> 63));
 1626048160        return new Signed576(
 1626048161            extension, extension, extension, extension,
 1626048162            value.Word4, value.Word3, value.Word2, value.Word1, value.Word0);
 63    }
 64
 45303665    internal static Signed576 ExtendValue(Signed192 value) => ExtendValue(Signed320.ExtendValue(value));
 66
 67    internal static Signed576 NarrowValue(Signed704 value) =>
 7699168        new(value.Word8,
 7699169            value.Word7,
 7699170            value.Word6,
 7699171            value.Word5,
 7699172            value.Word4,
 7699173            value.Word3,
 7699174            value.Word2,
 7699175            value.Word1,
 7699176            value.Word0);
 77
 78    /// <summary>Narrows a value whose caller has proved a signed nine-word result.</summary>
 79    internal static Signed576 NarrowValue(Signed832 value) =>
 41256680        new(value.Word8, value.Word7, value.Word6, value.Word5, value.Word4,
 41256681            value.Word3, value.Word2, value.Word1, value.Word0);
 82
 83    internal bool Equals(Signed576 other) =>
 3098184        ((Word8 ^ other.Word8)
 3098185         | (Word7 ^ other.Word7)
 3098186         | (Word6 ^ other.Word6)
 3098187         | (Word5 ^ other.Word5)
 3098188         | (Word4 ^ other.Word4)
 3098189         | (Word3 ^ other.Word3)
 3098190         | (Word2 ^ other.Word2)
 3098191         | (Word1 ^ other.Word1)
 3098192         | (Word0 ^ other.Word0)) == 0UL;
 93}