< Summary

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

File(s)

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

#LineLine coverage
 1//=======================================================================
 2// Signed832.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 thirteen-word value used by full-domain conic discriminants.
 14/// </summary>
 15internal readonly struct Signed832
 16{
 17    internal readonly ulong Word12;
 18    internal readonly ulong Word11;
 19    internal readonly ulong Word10;
 20    internal readonly ulong Word9;
 21    internal readonly ulong Word8;
 22    internal readonly ulong Word7;
 23    internal readonly ulong Word6;
 24    internal readonly ulong Word5;
 25    internal readonly ulong Word4;
 26    internal readonly ulong Word3;
 27    internal readonly ulong Word2;
 28    internal readonly ulong Word1;
 29    internal readonly ulong Word0;
 30
 31    internal Signed832(
 32        ulong word12,
 33        ulong word11,
 34        ulong word10,
 35        ulong word9,
 36        ulong word8,
 37        ulong word7,
 38        ulong word6,
 39        ulong word5,
 40        ulong word4,
 41        ulong word3,
 42        ulong word2,
 43        ulong word1,
 44        ulong word0)
 45    {
 757365846        Word12 = word12;
 757365847        Word11 = word11;
 757365848        Word10 = word10;
 757365849        Word9 = word9;
 757365850        Word8 = word8;
 757365851        Word7 = word7;
 757365852        Word6 = word6;
 757365853        Word5 = word5;
 757365854        Word4 = word4;
 757365855        Word3 = word3;
 757365856        Word2 = word2;
 757365857        Word1 = word1;
 757365858        Word0 = word0;
 757365859    }
 60
 61    internal bool IsZero =>
 643310562        (Word12 | Word11 | Word10 | Word9 | Word8 | Word7 | Word6 |
 643310563         Word5 | Word4 | Word3 | Word2 | Word1 | Word0) == 0UL;
 64
 557021865    internal int Sign => IsZero ? 0 : (Word12 & (1UL << 63)) != 0UL ? -1 : 1;
 66
 67    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 68    internal static Signed832 ExtendValue(Signed192 value) =>
 11148869        ExtendValue(Signed576.ExtendValue(Signed320.ExtendValue(value)));
 70
 71    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 72    internal static Signed832 ExtendValue(Signed320 value) =>
 2927573        ExtendValue(Signed576.ExtendValue(value));
 74
 75    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 76    internal static Signed832 ExtendValue(Signed576 value)
 77    {
 94043278        ulong extension = unchecked((ulong)((long)value.Word8 >> 63));
 94043279        return new Signed832(
 94043280            extension,
 94043281            extension,
 94043282            extension,
 94043283            extension,
 94043284            value.Word8,
 94043285            value.Word7,
 94043286            value.Word6,
 94043287            value.Word5,
 94043288            value.Word4,
 94043289            value.Word3,
 94043290            value.Word2,
 94043291            value.Word1,
 94043292            value.Word0);
 93    }
 94
 95    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 96    internal static Signed832 ExtendValue(Signed704 value)
 97    {
 1775098        ulong extension = unchecked((ulong)((long)value.Word10 >> 63));
 1775099        return new Signed832(
 17750100            extension,
 17750101            extension,
 17750102            value.Word10,
 17750103            value.Word9,
 17750104            value.Word8,
 17750105            value.Word7,
 17750106            value.Word6,
 17750107            value.Word5,
 17750108            value.Word4,
 17750109            value.Word3,
 17750110            value.Word2,
 17750111            value.Word1,
 17750112            value.Word0);
 113    }
 114
 115    internal bool Equals(Signed832 other) =>
 29165116        ((Word12 ^ other.Word12)
 29165117         | (Word11 ^ other.Word11)
 29165118         | (Word10 ^ other.Word10)
 29165119         | (Word9 ^ other.Word9)
 29165120         | (Word8 ^ other.Word8)
 29165121         | (Word7 ^ other.Word7)
 29165122         | (Word6 ^ other.Word6)
 29165123         | (Word5 ^ other.Word5)
 29165124         | (Word4 ^ other.Word4)
 29165125         | (Word3 ^ other.Word3)
 29165126         | (Word2 ^ other.Word2)
 29165127         | (Word1 ^ other.Word1)
 29165128         | (Word0 ^ other.Word0)) == 0UL;
 129}