Merge pull request #175 from fastfloat/dlemire/broader_alpine

Trying to extend alpine CI to more systems and fixing legacy issue (x86)
This commit is contained in:
Daniel Lemire 2023-02-06 17:39:27 -05:00 committed by GitHub
commit f4efe3ccb0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 44 additions and 18 deletions

View File

@ -1,27 +1,47 @@
name: Alpine Linux
'on':
on:
- push
- pull_request
jobs:
ubuntu-build:
build:
name: Build on Alpine ${{ matrix.arch }}
runs-on: ubuntu-latest
strategy:
matrix:
arch:
- x86_64
- x86
- aarch64
- armv7
- ppc64le
- riscv64
steps:
- uses: actions/checkout@v3
- name: start docker
- name: Checkout repository
uses: actions/checkout@v1
- name: Install latest Alpine Linux for ${{ matrix.arch }}
uses: jirutka/setup-alpine@v1
with:
arch: ${{ matrix.arch }}
branch: ${{ matrix.arch == 'riscv64' && 'edge' || 'latest-stable' }}
packages: >
build-base
cmake
g++
linux-headers
git
bash
build-base
- name: Prepare
run: |
docker run -w /src -dit --name alpine -v $PWD:/src alpine:latest
echo 'docker exec alpine "$@";' > ./alpine.sh
chmod +x ./alpine.sh
- name: install packages
cmake -DFASTFLOAT_TEST=ON -B build
shell: alpine.sh {0}
- name: Build
run: |
./alpine.sh apk update
./alpine.sh apk add build-base cmake g++ linux-headers git bash
- name: cmake
cmake --build build
shell: alpine.sh {0}
- name: Test
run: |
./alpine.sh cmake -DFASTFLOAT_TEST=ON -B build_for_alpine
- name: build
run: |
./alpine.sh cmake --build build_for_alpine
- name: test
run: |
./alpine.sh bash -c "cd build_for_alpine && ctest -R basictest"
ctest --test-dir build -R basictest
shell: alpine.sh {0}

View File

@ -66,6 +66,10 @@ from_chars_result parse_infnan(const char *first, const char *last, T &value) n
* Credit : @mwalcott3
*/
fastfloat_really_inline bool rounds_to_nearest() noexcept {
// https://lemire.me/blog/2020/06/26/gcc-not-nearest/
#if (FLT_EVAL_METHOD != 1) && (FLT_EVAL_METHOD != 0)
return false;
#endif
// See
// A fast function to check your floating-point rounding mode
// https://lemire.me/blog/2022/11/16/a-fast-function-to-check-your-floating-point-rounding-mode/

View File

@ -132,7 +132,9 @@ TEST_CASE("rounds_to_nearest") {
fesetround(FE_TONEAREST);
std::cout << "FE_TONEAREST: fmin + 1.0f = " << iHexAndDec(fmin + 1.0f) << " 1.0f - fmin = " << iHexAndDec(1.0f - fmin) << std::endl;
CHECK(fegetround() == FE_TONEAREST);
#if (FLT_EVAL_METHOD == 1) || (FLT_EVAL_METHOD == 0)
CHECK(fast_float::detail::rounds_to_nearest() == true);
#endif
}
TEST_CASE("parse_zero") {