< 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: 61
Uncovered lines: 0
Coverable lines: 61
Total lines: 125
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%
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    {
 64457846        Word12 = word12;
 64457847        Word11 = word11;
 64457848        Word10 = word10;
 64457849        Word9 = word9;
 64457850        Word8 = word8;
 64457851        Word7 = word7;
 64457852        Word6 = word6;
 64457853        Word5 = word5;
 64457854        Word4 = word4;
 64457855        Word3 = word3;
 64457856        Word2 = word2;
 64457857        Word1 = word1;
 64457858        Word0 = word0;
 64457859    }
 60
 61    internal bool IsZero =>
 25464662        (Word12 | Word11 | Word10 | Word9 | Word8 | Word7 | Word6 |
 25464663         Word5 | Word4 | Word3 | Word2 | Word1 | Word0) == 0UL;
 64
 19523065    internal int Sign => IsZero ? 0 : (Word12 & (1UL << 63)) != 0UL ? -1 : 1;
 66
 67    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 68    internal static Signed832 ExtendValue(Signed192 value) =>
 295169        ExtendValue(Signed576.ExtendValue(Signed320.ExtendValue(value)));
 70
 71    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 72    internal static Signed832 ExtendValue(Signed576 value)
 73    {
 4346274        ulong extension = unchecked((ulong)((long)value.Word8 >> 63));
 4346275        return new Signed832(
 4346276            extension,
 4346277            extension,
 4346278            extension,
 4346279            extension,
 4346280            value.Word8,
 4346281            value.Word7,
 4346282            value.Word6,
 4346283            value.Word5,
 4346284            value.Word4,
 4346285            value.Word3,
 4346286            value.Word2,
 4346287            value.Word1,
 4346288            value.Word0);
 89    }
 90
 91    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 92    internal static Signed832 ExtendValue(Signed704 value)
 93    {
 8194        ulong extension = unchecked((ulong)((long)value.Word10 >> 63));
 8195        return new Signed832(
 8196            extension,
 8197            extension,
 8198            value.Word10,
 8199            value.Word9,
 81100            value.Word8,
 81101            value.Word7,
 81102            value.Word6,
 81103            value.Word5,
 81104            value.Word4,
 81105            value.Word3,
 81106            value.Word2,
 81107            value.Word1,
 81108            value.Word0);
 109    }
 110
 111    internal bool Equals(Signed832 other) =>
 3981112        ((Word12 ^ other.Word12)
 3981113         | (Word11 ^ other.Word11)
 3981114         | (Word10 ^ other.Word10)
 3981115         | (Word9 ^ other.Word9)
 3981116         | (Word8 ^ other.Word8)
 3981117         | (Word7 ^ other.Word7)
 3981118         | (Word6 ^ other.Word6)
 3981119         | (Word5 ^ other.Word5)
 3981120         | (Word4 ^ other.Word4)
 3981121         | (Word3 ^ other.Word3)
 3981122         | (Word2 ^ other.Word2)
 3981123         | (Word1 ^ other.Word1)
 3981124         | (Word0 ^ other.Word0)) == 0UL;
 125}