serenity/AK
Jelle Raaijmakers 8483064b59 AK: Add FloatingPoint.h
This is a set of functions that allow you to convert between arbitrary
IEEE 754 floating point types, as long as they can be represented
within 64 bits. Conversion methods between floats and doubles are
provided, as well as a generic `float_to_float()`.

Example usage:

  #include <AK/FloatingPoint.h>

  double val = 1.234;
  auto weird_f16 =
      convert_from_native_double<FloatingPointBits<0, 6, 10>>(val);

Signed and unsigned floats are supported, and both NaN and +/-Inf are
handled correctly. Values that do not fit in the target floating point
type are clamped.
2022-08-27 12:28:05 +02:00
..
.clang-tidy Meta: Add basic clang-tidy configuration 2021-11-14 22:52:35 +01:00
AllOf.h AK: Add nodiscard attribute to AllOf functions 2022-07-04 05:53:56 +00:00
AnyOf.h AK: Add nodiscard attribute to AnyOf functions 2022-07-04 05:53:56 +00:00
ArbitrarySizedEnum.h AK: Add an ArbitrarySizedEnum template 2022-03-27 18:54:56 +02:00
Array.h AK+Userland: Rename Array::front/back to first/last 2022-04-06 14:31:52 +02:00
Assertions.h AK: Make VERIFY() work in MinSizeRel builds 2022-07-09 22:15:43 +02:00
Atomic.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
AtomicRefCounted.h AK+Kernel: Add AK::AtomicRefCounted and use everywhere in the kernel 2022-08-20 17:15:52 +02:00
Badge.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Base64.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Base64.h AK: Add nodiscard attribute to Base64 functions 2022-07-04 05:53:56 +00:00
BinaryBufferWriter.h AK: Add helper type for serializing structures into buffer 2021-07-18 19:58:17 +04:30
BinaryHeap.h AK: Add nodiscard attribute to BinaryHeap functions 2022-07-04 05:53:56 +00:00
BinarySearch.h AK: Add nodiscard attribute to BinarySearch functions 2022-07-04 05:53:56 +00:00
BitCast.h AK: Allow bit_cast to be used in constant evaluated context 2022-08-15 17:11:25 +02:00
Bitmap.h AK: Make Bitmap construction OOM-fallible 2022-02-11 17:49:46 +02:00
BitmapView.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
BitStream.h AK: Add nodiscard attribute to BitStream functions 2022-07-04 05:53:56 +00:00
Buffered.h Everywhere: Switch from EnableIf to requires 2022-03-17 22:15:42 -07:00
BuiltinWrappers.h AK: Fix usage of undefined variables 2022-07-31 11:08:33 +02:00
BumpAllocator.h AK+LibGfx+LibJS: Pass -1 as the file descriptor to anonymous mmap 2022-07-19 12:39:24 +02:00
ByteBuffer.h AK: Add Traits<ByteBuffer>::hash() 2022-07-14 00:42:26 +01:00
ByteReader.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
CharacterTypes.h AK: Change static base36 character map to function-local constexpr 2022-02-10 10:22:54 +00:00
Checked.h AK: Add saturating addition and subtraction to Checked 2022-06-23 23:26:33 +01:00
CheckedFormatString.h AK: Make CheckedFormatString pass the char array size to StringView 2022-07-12 23:11:35 +02:00
CircularDeque.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
CircularDuplexStream.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
CircularQueue.h AK: Add non-const iterator for CircularQueue 2022-04-03 09:49:08 -07:00
CMakeLists.txt Meta: Add support for declaring components 2021-06-17 11:03:51 +02:00
Complex.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Concepts.h AK: Add a OneOfIgnoringCV concept 2022-04-20 00:15:23 +04:30
DateConstants.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
DateTimeLexer.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
Debug.h.in Kernel+LibPartition: Move GUIDPartitionTable into LibPartition 2022-07-21 20:13:44 +01:00
Demangle.h Everywhere: Explicitly specify the size in StringView constructors 2022-07-12 23:11:35 +02:00
DisjointChunks.h AK: Skip over initial empty chunks in DisjointChunks 2022-02-27 00:11:14 +03:30
DistinctNumeric.h Everywhere: Prefix 'TYPEDEF_DISTINCT_ORDERED_ID' with 'AK_' 2022-07-22 23:09:43 +01:00
DoublyLinkedList.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Endian.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
EnumBits.h AK+Kernel: Implement and use EnumBits has_any_flag() 2021-07-16 11:49:50 +02:00
Error.h Everywhere: Split Error::from_string_literal and Error::from_string_view 2022-07-12 23:11:35 +02:00
ExtraMathConstants.h Userland: Move non-standard math constants from math.h 2021-04-27 23:06:16 +02:00
FileStream.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Find.h AK: Add nodiscard attribute to Find functions 2022-07-04 05:53:56 +00:00
FixedArray.h AK: Make empty FixedArray smaller 2022-08-27 12:19:37 +02:00
FixedPoint.h AK: Make sure we don't include Math.h or math.h from KERNEL 2022-04-23 10:43:32 -07:00
FloatingPoint.h AK: Add FloatingPoint.h 2022-08-27 12:28:05 +02:00
FlyString.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
FlyString.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Format.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
Format.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
Forward.h Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
FPControl.h AK: Add a cpp-y, more fine grained version of fenv.h: FPControl.h 2022-05-07 20:27:05 +02:00
Function.h AK: Suppress false positive readability-non-const-parameter in Function 2021-11-14 22:52:35 +01:00
FuzzyMatch.h AK: Add FuzzyMatch header 2022-04-20 18:34:09 +02:00
GenericLexer.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
GenericLexer.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
GenericShorthands.h AK: Add header for generic shorthands 2022-07-04 11:15:40 +02:00
HashFunctions.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
HashMap.h AK+LibGUI: Pass predicate to *_matching() methods by const reference 2022-05-08 17:02:00 +02:00
HashTable.h AK: Zero previous pointer *after* fixing the insertion list in HashTable 2022-06-23 20:25:12 +03:00
Hex.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Hex.h AK: Return KString instead of String from encode_hex in the Kernel 2022-02-16 22:21:37 +01:00
IDAllocator.h AK: Use get_random() in IDAllocator 2021-08-30 18:35:36 +02:00
IntegralMath.h AK: Add AK::ceil(float) and AK::ceil_log2(integer) 2022-06-30 11:16:22 +02:00
IntrusiveDetails.h Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
IntrusiveList.h Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
IntrusiveListRelaxedConst.h AK+Everywhere: Reduce the number of template parameters of IntrusiveList 2021-09-10 18:05:46 +03:00
IntrusiveRedBlackTree.h AK: Expose RedBlackTree::find_smallest_not_below() 2022-04-21 13:16:56 +02:00
IPv4Address.h AK: Add IPv4Address::netmask_from_cidr 2022-07-09 09:22:25 +01:00
IPv6Address.h AK: Add Kernel namespace to KStrings in AK::IPv6Address 2022-04-17 16:57:52 -07:00
IterationDecision.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Iterator.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
JsonArray.h Everywhere: Make JSON serialization fallible 2022-02-27 20:37:57 +01:00
JsonArraySerializer.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
JsonObject.h Everywhere: Replace single-char StringView op. arguments with chars 2022-07-12 23:11:35 +02:00
JsonObjectSerializer.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
JsonParser.cpp Everywhere: Split Error::from_string_literal and Error::from_string_view 2022-07-12 23:11:35 +02:00
JsonParser.h AK: Remove unused String[256] from JsonParser 2022-03-10 18:43:09 +01:00
JsonPath.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
JsonPath.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
JsonValue.cpp AK: Treat empty string as invalid JSON 2022-07-10 23:31:48 +02:00
JsonValue.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
kmalloc.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
kmalloc.h AK+Kernel: Avoid double memory clearing of HashTable buckets 2022-03-15 11:56:46 +01:00
kstdio.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
LEB128.h AK: Always check shift amount in LEB128 read functions 2022-07-09 22:04:31 +00:00
LexicalPath.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
LexicalPath.h AK: Add LexicalPath::prepend() 2021-11-22 09:03:47 +01:00
MACAddress.h Everywhere: Replace single-char StringView op. arguments with chars 2022-07-12 23:11:35 +02:00
Math.h AK: Add AK::ceil(float) and AK::ceil_log2(integer) 2022-06-30 11:16:22 +02:00
MemMem.h AK: Use the correct data types in bitap_bitwise() 2022-07-14 13:10:23 +02:00
Memory.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
MemoryStream.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
NeverDestroyed.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
NoAllocationGuard.h Everywhere: Use my new serenityos.org e-mail :^) 2022-01-14 11:54:09 +01:00
Noncopyable.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
NonnullOwnPtr.h Revert "AK: Add comparison operators to NonnullOwnPtr" 2022-06-18 13:17:49 +01:00
NonnullOwnPtrVector.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
NonnullPtrVector.h LibWeb: Make reverse iterators work for const NonnullPtrVectors 2022-04-13 19:52:25 +02:00
NonnullRefPtr.h Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
NonnullRefPtrVector.h AK: Make NonnullRefPtrVector constructible from Vector<NonnullRefPtr> 2021-06-11 00:30:09 +02:00
NumberFormat.h AK: Add human_readable_digital_time() helper 2022-08-05 13:55:13 +02:00
NumericLimits.h AK: Use proper type for bool NumericLimits::min and max specialization 2021-11-14 22:52:35 +01:00
Optional.h AK: Allow Optional<T&> to exist 2022-04-04 12:48:31 +02:00
OwnPtr.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Platform.h AK: Prefix CACHE_ALIGNED & SYSTEM_CACHE_ALIGNMENT_SIZE 2022-08-01 00:19:16 +02:00
PrintfImplementation.h AK: Make sure we don't include Math.h or math.h from KERNEL 2022-04-23 10:43:32 -07:00
Ptr32.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Queue.h AK+Everywhere: Reduce the number of template parameters of IntrusiveList 2021-09-10 18:05:46 +03:00
QuickSort.h AK: Guarantee a maximum stack depth for dual_pivot_quick_sort 2021-04-28 21:38:48 +02:00
Random.cpp AK: Introduce get_random_uniform() 2021-05-14 22:24:02 +02:00
Random.h AK: Add support for building on Android with API version >= 30 2022-07-19 10:44:02 +01:00
RecursionDecision.h AK: Add RecursionDecision 2021-08-07 15:21:58 +02:00
RedBlackTree.h AK: Expose RedBlackTree::find_smallest_not_below() 2022-04-21 13:16:56 +02:00
RefCounted.h AK+Kernel: Add AK::AtomicRefCounted and use everywhere in the kernel 2022-08-20 17:15:52 +02:00
RefCountForwarder.h AK: Add RefCountForwarder<T> 2021-12-09 21:28:52 +01:00
RefPtr.h Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
Result.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ReverseIterator.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ScopedValueRollback.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
ScopeGuard.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
ScopeLogger.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
SIMD.h AK: Add char SIMD types 2021-07-22 23:33:21 +02:00
SIMDExtras.h LibGfx: Implement PNG filtering on write 2022-07-10 15:01:07 +02:00
SIMDMath.h AK: Add clamp(f32x4, float, float) 2022-05-09 21:49:48 +02:00
Singleton.h AK: Add Singleton special-case constructor for SpinlockProtected 2022-08-19 20:26:47 -07:00
SinglyLinkedList.h AK: Add SinglyLinkedList::prepend() 2022-06-10 19:06:46 +01:00
SinglyLinkedListWithCount.h Everywhere: Use bgianf@serenityos.org for my copyright attribution 2021-04-22 21:15:54 +02:00
SourceGenerator.h AK: Add string literal helpers to AK::SourceGenerator 2022-07-12 23:11:35 +02:00
SourceLocation.h Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
Span.h AK: Add last() utility function to Span 2022-04-02 21:50:41 +02:00
Stack.h AK: Use unchecked_append in AK::Stack, as we always validate the size 2022-01-05 14:04:18 +01:00
StackInfo.cpp AK: Port StackInfo to FreeBSD 2022-07-19 12:39:24 +02:00
StackInfo.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Statistics.h AK: Add min and max functions to Statistics 2021-11-06 22:09:25 -07:00
StdLibExtraDetails.h AK: Add a OneOfIgnoringCV concept 2022-04-20 00:15:23 +04:30
StdLibExtras.h AK: Suppress -Wunqualified-std-cast-call in the CLion IDE 2022-08-05 12:42:46 +02:00
Stream.h Everywhere: Split Error::from_string_literal and Error::from_string_view 2022-07-12 23:11:35 +02:00
String.cpp AK: Remove String <-> char const* comparison operators 2022-07-12 23:11:35 +02:00
String.h AK: Add a helper to get the last split-group 2022-07-15 12:42:43 +02:00
StringBuilder.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
StringBuilder.h AK: Add a try variant of StringBuilder::append_escaped_for_json 2022-02-27 20:37:57 +01:00
StringHash.h AK: Define a traits helper for case-insensitive StringView hashing 2022-01-11 00:36:45 +01:00
StringImpl.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
StringImpl.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
StringUtils.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
StringUtils.h AK: Use an enum instead of a bool for String::replace(all_occurences) 2022-07-06 11:12:45 +02:00
StringView.cpp AK: Use an enum instead of a bool for String::replace(all_occurences) 2022-07-06 11:12:45 +02:00
StringView.h AK: VERIFY() the index is in bounds in StringView::operator[] 2022-07-26 12:41:46 +02:00
TemporaryChange.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Time.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Time.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Traits.h AK: Add missing include to Traits.h 2022-04-10 19:18:16 +02:00
Trie.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Try.h AK: Mark the error branch of the TRY() macro as unlikely 2022-01-16 02:01:23 +02:00
Tuple.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
TypeCasts.h AK: Rename downcast<T> => verify_cast<T> 2021-06-24 19:57:01 +02:00
TypedTransfer.h AK: Fast path for single-element TypedTransfer::copy 2021-12-17 13:13:00 -08:00
TypeList.h Everywhere: "indexes" => "indices" 2021-04-29 22:23:52 +02:00
Types.h AK: Add an align_down_to power of two helper 2022-07-05 11:26:10 +02:00
UBSanitizer.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
UFixedBigInt.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
UnicodeUtils.h AK: Remove now-unused AK::UnicodeUtils methods 2022-01-18 15:13:25 +00:00
URL.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
URL.h AK+Userland+Tests: Remove URL(char const*) constructor 2022-07-12 23:11:35 +02:00
URLParser.cpp Everywhere: Add sv suffix to strings relying on StringView(char const*) 2022-07-12 23:11:35 +02:00
URLParser.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
Userspace.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Utf8View.cpp AK: Put invalid UTF8 debug spam behind a flag 2022-04-27 00:02:24 +02:00
Utf8View.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Utf16View.cpp AK: Add a Utf16View::code_unit_offset_of(Utf16CodePointIterator) helper 2022-01-31 21:05:04 +02:00
Utf16View.h AK: Add a Utf16View::code_unit_offset_of(Utf16CodePointIterator) helper 2022-01-31 21:05:04 +02:00
Utf32View.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
UUID.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
UUID.h AK+Kernel: Return KString from UUID::to_string() in the Kernel 2022-02-16 22:21:37 +01:00
Variant.h AK: Use static_cast to cast to base type 2022-05-21 02:18:40 +02:00
Vector.h AK+LibGUI: Pass predicate to *_matching() methods by const reference 2022-05-08 17:02:00 +02:00
Weakable.h Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00
WeakPtr.h Kernel: Make self-contained locking smart pointers their own classes 2022-08-20 17:20:43 +02:00