5719 {
5720 byte* digits = stackalloc byte[21];
5721 NumberBuffer number = new NumberBuffer(NumberBufferKind.FloatingPoint, digits, 21);
5723 {
5724 ReadOnlySpan<char> span =
value.Trim();
5725 if (span.EqualsOrdinalIgnoreCase(
info.PositiveInfinitySymbol))
5726 {
5727 result = Half.PositiveInfinity;
5728 }
5729 else if (span.EqualsOrdinalIgnoreCase(
info.NegativeInfinitySymbol))
5730 {
5731 result = Half.NegativeInfinity;
5732 }
5733 else if (span.EqualsOrdinalIgnoreCase(
info.NaNSymbol))
5734 {
5735 result = Half.NaN;
5736 }
5738 {
5739 span = span.Slice(
info.PositiveSign.Length);
5740 if (!
info.PositiveInfinitySymbol.StartsWith(
info.PositiveSign,
StringComparison.OrdinalIgnoreCase) && span.EqualsOrdinalIgnoreCase(
info.PositiveInfinitySymbol))
5741 {
5742 result = Half.PositiveInfinity;
5743 }
5744 else
5745 {
5747 {
5748 result = (Half)0f;
5749 return false;
5750 }
5751 result = Half.NaN;
5752 }
5753 }
5755 {
5756 result = Half.NaN;
5757 }
5758 else
5759 {
5761 {
5762 result = (Half)0f;
5763 return false;
5764 }
5765 result = Half.NaN;
5766 }
5767 }
5768 else
5769 {
5771 }
5772 return true;
5773 }
static bool SpanStartsWith(ReadOnlySpan< char > span, char c)
static Half NumberToHalf(ref NumberBuffer number)
static unsafe bool TryStringToNumber(ReadOnlySpan< char > value, NumberStyles styles, ref NumberBuffer number, NumberFormatInfo info)