< 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    {
 62430146        Word12 = word12;
 62430147        Word11 = word11;
 62430148        Word10 = word10;
 62430149        Word9 = word9;
 62430150        Word8 = word8;
 62430151        Word7 = word7;
 62430152        Word6 = word6;
 62430153        Word5 = word5;
 62430154        Word4 = word4;
 62430155        Word3 = word3;
 62430156        Word2 = word2;
 62430157        Word1 = word1;
 62430158        Word0 = word0;
 62430159    }
 60
 61    internal bool IsZero =>
 25011062        (Word12 | Word11 | Word10 | Word9 | Word8 | Word7 | Word6 |
 25011063         Word5 | Word4 | Word3 | Word2 | Word1 | Word0) == 0UL;
 64
 19069465    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}