Daniel Lemire
b88345d06d
Fixes
2023-06-09 11:28:51 -04:00
Daniel Lemire
e8c0378d6d
Adding ARM NEON optimizations.
2023-06-09 11:19:34 -04:00
Daniel Lemire
8139e164b8
Merge pull request #198 from mayawarrier/main
...
Add opt-in SIMD support for char16_t
2023-06-09 10:40:04 -04:00
v1gnesh
bb2ae14fe6
Add zOS support to float_common.h
2023-06-05 19:16:46 +05:30
zangruochen
fcee052311
Support LoongArch64
2023-05-30 15:16:27 +08:00
Maya Warrier
a5632d5b57
Fix digit comparison, cleanup
2023-05-20 12:29:24 -04:00
Maya Warrier
cb397ef446
Fix for clang (missing _mm_cvtsi128_si64x)
2023-05-17 05:40:29 -04:00
Maya Warrier
1c9a3088bf
Fix for VS 32-bit
2023-05-17 05:31:15 -04:00
Maya Warrier
064d2b832d
Fix Werrors
2023-05-17 02:27:48 -04:00
Maya Warrier
38613a39f9
Fix perf decrease when UC = char
2023-05-17 01:34:33 -04:00
Maya Warrier
6ede038789
Apply changes from benchmarked version
...
- Move parse_truncated_number_string back inside parse_number_string
2023-05-09 22:19:23 -04:00
Daniel Lemire
396a0fc2ae
Merge branch 'main' into main
2023-05-08 16:44:35 -04:00
Daniel Lemire
cc1e01e9ee
Merge pull request #199 from mayawarrier/cmake_intellisense_fix
...
Fix for broken VS Intellisense
2023-05-08 16:43:45 -04:00
Lenard Szolnoki
ddaefc0bbf
Fix multiple definition linker errors for tables
2023-05-08 15:24:11 +01:00
Lenard Szolnoki
cc042ae409
Make lookup tables external linkage
2023-05-07 23:07:34 +01:00
Maya Warrier
53b065f38d
Avoid redundant load in SSE2 code
2023-05-07 17:38:32 -04:00
Maya Warrier
4e7ae339d6
Implement intellisense fix
2023-05-07 00:38:10 -04:00
Maya Warrier
4cb09b5f59
Automatically detect SSE2
2023-05-02 13:05:57 -04:00
Maya Warrier
c811b027ea
Remove testing macro
2023-05-02 01:52:00 -04:00
Maya Warrier
5136b181ba
Fixes and cleanup
2023-05-02 01:41:49 -04:00
Maya Warrier
680ccc73ed
Merge from upstream/main, fix conflicts
2023-05-01 20:27:29 -04:00
Maya Warrier
e08c55c380
Remove json parse rules/allow inf_nan
2023-05-01 19:45:50 -04:00
Maya Warrier
091458d192
Add basic support for char32_t (unoptimized)
2023-04-30 02:23:33 -04:00
Daniel Lemire
8199baeb70
Slightly less ugly code.
2023-04-26 18:46:19 -04:00
Daniel Lemire
225df8c934
Merge branch 'fastfloat:main' into other_chars
2023-04-26 18:32:06 -04:00
Daniel Lemire
5223d7a460
address issues raised by @mayawarrier
2023-04-26 18:25:27 -04:00
Maya Warrier
65bd922e38
Merge remote-tracking branch 'upstream/main'
...
- Fix conflicts
2023-04-26 16:47:42 -04:00
Daniel Lemire
927eb9bcd2
Merge branch 'main' of https://github.com/Pharago/fast_float into other_chars
2023-04-26 16:40:09 -04:00
Maya Warrier
89fc24007a
Clean up
2023-04-26 16:25:41 -04:00
Maya Warrier
653790b5f3
fixes
2023-04-16 00:36:52 -04:00
Maya Warrier
c849b7a8ff
Option to forbid nan/inf, refactor
2023-04-15 23:16:01 -04:00
Daniel Lemire
11eeab5463
Removing dead code.
2023-04-11 14:29:30 -04:00
Pharago
ece3b3886b
Fix storage class errors on non msvc builds
...
Removed storage class declarations from explicit template specializations of string constants
2023-04-06 20:58:31 +02:00
Pharago
2bfbe4ca96
cosmetic changes
2023-04-06 00:58:34 +02:00
Pharago
593709f056
Merge branch 'main' into main
2023-04-05 03:31:35 +02:00
Aras Pranckevičius
21fefa5b44
Fix warnings with -Wundef
...
- FASTFLOAT_ALLOWS_LEADING_PLUS and FASTFLOAT_SKIP_WHITE_SPACE are not defined by default, and compiling with -Wundef is emitting warnigns like "FASTFLOAT_ALLOWS_LEADING_PLUS is not defined, evaluates to 0".
- Likewise for FASTFLOAT_VISUAL_STUDIO, change checks to use #ifdef for that like in other places.
- __cpp_lib_bit_cast and __cpp_lib_is_constant_evaluated are not defined pre-C++20, and are emitting a warning too.
2023-04-04 21:18:57 +03:00
Pharago
148606637c
Merge branch 'fastfloat:main' into main
2023-04-03 02:25:46 +02:00
Daniel Lemire
ca43e6722e
We need to update some of our exhaustive tests to the new API
2023-04-02 17:43:17 -04:00
Pharago
bc77f956e2
Initial Unicode release
...
Added support for the other char types
2023-04-02 22:58:01 +02:00
Maya Warrier
cda25408bc
Optimize char16_t parsing for digit_comparison.h
2023-04-02 00:33:52 -04:00
Maya Warrier
2d57c09530
Fixes
2023-04-01 23:29:00 -04:00
Maya Warrier
8a9a9d538a
SIMD optimization to parse 8 char16_t at a time
2023-04-01 22:43:00 -04:00
Maya Warrier
f59f73c4da
Disable simd-related warnings
2023-04-01 04:09:00 -04:00
Maya Warrier
20f3870361
Fixes
2023-03-30 04:58:22 -04:00
Maya Warrier
2b118c843a
Experimental support for char_t types
2023-03-30 04:48:18 -04:00
Maya Warrier
b6acf38a2e
Fix bugs
2023-03-29 18:42:24 -04:00
Adam Lugowski
bfee511d78
Set errc::result_out_of_range on over/underflow
...
Best-effort values are still returned, such as 0 for underflow and infinity for overflow, but now the returned ec is set to std::errc::result_out_of_range instead of std::errc().
2023-03-29 10:14:46 -07:00
Maya Warrier
3cafcca2ff
Add support for json parsing rules and integers
2023-03-29 02:14:12 -04:00
Maya Warrier
8f94758c78
Expose parsed string (before computation) so it can be reused
2023-03-27 22:50:21 -04:00
Daniel Lemire
b50a729d93
Merge pull request #182 from leni536/constexpr-from_chars
...
Constexpr from_chars
2023-03-25 17:30:55 -04:00
Lenard Szolnoki
5b8290433c
Fix clang workaround for parsing -0 on non-nearest rounding mode
2023-03-25 19:38:44 +00:00
Lenard Szolnoki
e464bd7785
Replace memmove with copy_backward
2023-03-24 17:18:58 +00:00
Lenard Szolnoki
d34d0d7405
Fix amalgamate.ph and add header for constexpr macros
2023-03-12 10:50:25 +00:00
filipecosta90
c8886eb31d
Added missing FASTFLOAT_ALLOWS_LEADING_PLUS ifdef check in parse_infnan
2023-03-07 00:31:14 +00:00
Lenard Szolnoki
e05858a0f8
Work around clang bug.
...
https://godbolt.org/z/zedh7rrhc
This is similar to https://github.com/llvm/llvm-project/issues/47746 ,
except I needed to use a different workaround.
2023-03-04 23:02:15 +00:00
Lenard Szolnoki
6732e397d8
Add constexpr testing
...
When enabled, modify `verify` macro to also verify at compile time,
when the arguments are constant expressions.
2023-03-04 22:36:58 +00:00
Lenard Szolnoki
e4d4e43b21
Constexpr from_chars
2023-03-04 20:53:43 +00:00
Lenard Szolnoki
82ee3b1b5f
Constexpr parse_number_string
2023-03-04 17:18:25 +00:00
Lenard Szolnoki
5243dd97fe
Constexpr bigint
2023-03-03 23:13:52 +00:00
Lenard Szolnoki
52618851fd
Make all float_common.h functions constexpr in C++20
2023-03-03 22:43:52 +00:00
Lenard Szolnoki
6d2fb68f5c
Simplify to_float
...
* Use right-sized uint type for bit fiddling
** This removes the need to special casing on endianness
* Replace ternary with just shifting the sign at the right place
** This seems to improve codegen (less instructions, no cmov)
2023-03-01 23:39:01 +00:00
Daniel Lemire
b1d27734c5
Merge pull request #173 from fastfloat/nofallbacknecessary
...
We do not need a fallback.
2023-02-28 17:19:57 -05:00
Lenard Szolnoki
e320512755
Fix power_of_five_128 to be usable in constexpr in MSVC, clang
2023-02-25 18:34:22 +00:00
Lenard Szolnoki
0e4b873d81
Fix space_lut so it's accepted by MSVC and clang
2023-02-25 18:27:10 +00:00
Lenard Szolnoki
a6991ea44f
Add comment to the FASTFLOAT_CONSTEXPR14 macro definition
2023-02-25 11:11:09 +00:00
Lenard Szolnoki
be6084863c
Low-risk C++14 constexpr functions
2023-02-25 10:50:45 +00:00
Daniel Lemire
252a1c9dce
Minor fix.
2023-02-06 17:22:11 -05:00
Daniel Lemire
39e04ea766
We do not need a fallback.
2023-01-27 20:59:56 -05:00
Daniel Lemire
3e2da540ef
Support rccpfastfloat.
2023-01-19 20:28:10 -05:00
Sergey Fedorov
ff7fba01d0
float_common.h: add support for ppc32
2023-01-18 14:15:14 +08:00
Daniel Lemire
c8aac4a63d
Guard endian
2023-01-07 13:28:12 -05:00
Joao Paulo Magalhaes
7f7838b36a
Fix compile warning: implicit double->float type conversion
...
With Intel 2021.1:
```
/home/runner/work/c4core/c4core/src/c4/ext/fast_float_all.h:319:49: error: implicit conversion between floating point types of different sizes [-Werror,-Wimplicit-float-size-conversion]
constexpr static float powers_of_ten_float[] = {1e0, 1e1, 1e2, 1e3,
1e4, 1e5,
```
2022-12-27 11:09:17 +00:00
Joao Paulo Magalhaes
ca13367ff7
Suppress warning when comparing floats
2022-12-27 01:39:41 +00:00
Daniel Lemire
102e74891f
Merge pull request #160 from huangqinjin/uint64-to-bool
...
Fix compile warning of unit64_t to bool
2022-12-23 10:39:33 -05:00
huangqinjin
293ca61c76
Fix compile warning of unit64_t to bool
2022-12-23 19:20:28 +08:00
huangqinjin
9c4c20dd7f
Replace utf8 chars.
2022-12-18 11:04:16 +08:00
Sutou Kouhei
ff5855813f
Add missing namespace end comments
...
Other files have it.
2022-12-02 11:42:38 +09:00
Daniel Lemire
76537e1695
Fixing issue 154.
2022-11-25 15:58:54 -05:00
Daniel Lemire
003a983188
Simplifying the justification.
2022-11-18 15:38:21 -05:00
Daniel Lemire
8b7a55a03c
Minor optimization.
2022-11-18 15:33:44 -05:00
Daniel Lemire
3d0e448940
Added a remark.
2022-11-18 12:27:38 -05:00
Daniel Lemire
39ea41b84a
Adopting proposal.
2022-11-18 11:28:34 -05:00
Daniel Lemire
bfc0478feb
More tweaks.
2022-11-16 16:45:01 -05:00
Daniel Lemire
29b1a03d5b
Make sure that macros have actual values when defined (makes debugging easier)
2022-11-16 15:49:09 -05:00
Daniel Lemire
8f27b7e921
More tuning.
2022-11-16 15:42:56 -05:00
Daniel Lemire
fd9d9effda
More tweaking around clangcl
2022-11-16 15:25:03 -05:00
Daniel Lemire
d225059873
Fix for Win32+ClangCL
2022-11-16 14:35:31 -05:00
Daniel Lemire
2c8e738950
Cleaning.
2022-11-16 12:06:33 -05:00
Daniel Lemire
6ceb29a7e4
We might reenable clinger.
2022-11-16 16:21:34 +00:00
Daniel Lemire
6484c73696
Trimming out one eight-digit optimization.
2022-11-15 11:38:06 -05:00
Daniel Lemire
a2cf502395
Typo.
2022-11-03 19:41:30 -04:00
Daniel Lemire
3e29bf78c7
Nicer constants.
2022-11-03 19:40:05 -04:00
Daniel Lemire
e958ff4269
Simplified clinger.
2022-11-03 18:51:37 -04:00
Sutou Kouhei
5a71e5bc40
Don't use __umulh() with MinGW on ARM64
2022-10-28 15:33:37 +09:00
Dirk Stolle
3fddb89508
Fix some typos
2022-08-30 22:55:34 +02:00
Daniel Lemire
6876616f0f
Update float_common.h
2022-08-04 15:05:22 -04:00
Daniel Lemire
ac81b01696
Added __EMSCRIPTEN__ patch
2022-08-04 13:58:48 -04:00
Daniel Lemire
32d21dcecb
Merge pull request #122 from jwakely/patch-1
...
Fix deduction failure for std::min call
2022-01-18 14:30:38 -05:00
Jonathan Wakely
61f4840188
Make endianness detection more portable
...
The current check for endianness fails on platforms using newlib as the
C library, because it provides <machine/endian.h> not <endian.h>. This
could be fixed by adding `|| defined(__NEWLIB__)` to the check for
targets that provide <machine/endian.h> (i.e. BSD-like targets).
A more portable solution is to just check if the compiler has already
defined the necessary macros (which is true for GCC and Clang and Intel,
at least). Then no header is needed, and it works for platforms that
aren't explicitly listed in the conditionals.
2022-01-18 10:17:01 +00:00
Jonathan Wakely
1ccabed64c
Fix deduction failure for std::min call
...
This assumes that the literal `64` of type `int` has the same type as
the `int32_t` typedef, which is never true for targets with 16-bit
`int`, and isn't guaranteed to be true even with 32-bit `int`.
2022-01-18 10:12:57 +00:00