364 Commits

Author SHA1 Message Date
Trevor Gross
5fc3068762 Add a script for downloading musl 2024-10-28 12:59:38 -05:00
Trevor Gross
36b52c7d1b Introduce musl-math-sys for bindings to musl math symbols
This crate builds math symbols from a musl checkout and provides a Rust
interface. The intent is that we will be able to compare our
implementations against musl on more than just linux (which are the only
currently the only targets we run `*-musl` targets against for
comparison).

Musl libc can't compile on anything other than Linux; however, the
routines in `src/math` are cross platform enough to build on MacOS and
windows-gnu with only minor adjustments. We take advantage of this and
build only needed files using `cc`.

The build script also performs remapping (via defines) so that e.g.
`cos` gets defined as `musl_cos`. This gives us more certainty that we
are actually testing against the intended symbol; without it, it is easy
to unknowingly link to system libraries or even Rust's `libm` itself and
wind up with an ineffective test. There is also a small procedure to
verify remapping worked correctly by checking symbols in object files.
2024-10-28 12:59:38 -05:00
quaternic
750027cbbe fix type of constants in ported sincosf (#331)
* fix type of constants in ported sincosf
2024-10-28 12:59:21 -05:00
Johanna Sörngård
db55857a73 Add basic docstrings to some functions (#337)
* Add docstring to Bessel functions
* Add docstrings to logarithm functions
* Add docstrings to pow functions
* Specify argument bit-size of the Bessel functions
* Specify argument bit-size for pow functions
* Specify argument bit-size for logarithms
* Add docstrings to sin, cos, sincos and sinh functions
* Add docstrings to sqrt
* Add docstrings to tan and tanh functions
* Add an inline link to https://en.wikipedia.org/wiki/Bessel_function to the docstrings of all Bessel functions.
2024-10-28 12:12:45 -05:00
Trevor Gross
a3fd7732f0 ci: rustup --no-self-update and reuqire MSRV checks
Pass `--no-self-update` to `rustup`, which is typical for CI. Also add
the MSRV job to `success` so GitHub won't merge without it passing.
2024-10-27 23:41:29 -05:00
Trevor Gross
b49ef8c510 Don't deny warnings when checking MSRV
1.63 reports some false positive lints that we don't need to worry
about. Make sure we don't fail CI for this.
2024-10-27 23:28:24 -05:00
github-actions[bot]
476585d6a0 chore: release v0.2.10 2024-10-27 22:51:02 -05:00
Trevor Gross
3541e834df Set the MSRV to 1.63 and document it as such
Fixes: https://github.com/rust-lang/libm/issues/330
2024-10-27 22:47:06 -05:00
Trevor Gross
3180b04aa3 Change build.rs to use the older : rather than ::
This allows supporting Rust < 1.77.
2024-10-27 22:46:17 -05:00
Trevor Gross
4d6aeca6b3 Add a CI test that the crate builds on stable
Currently everything we have runs with nightly Rust. Add a stable test
to make sure we don't accidentally make use of behavior that isn't yet
stable without gating it.
2024-10-27 01:10:26 -05:00
Trevor Gross
79f065ab24 Add a .git-blame-ignore-revs file
Include the recent formatting commit.
2024-10-26 20:30:41 -05:00
Trevor Gross
ab0c8e84fb Run cargo fmt with new settings
Apply the changes from the `.rustfmt.toml` file added in the previous
commit.
2024-10-26 20:28:28 -05:00
Trevor Gross
710ca6e38e Add a rustfmt.toml file matching rust-lang/rust
Duplicate the settings from rust-lang/rust to this repository. This is
mostly for consistency, but `use_small_heuristics = "Max"` does make a
large difference with lookup tables.

Also apply the needed CI changes to run nightly rustfmt.
2024-10-26 20:28:28 -05:00
github-actions[bot]
4f3418a4d7 chore: release v0.2.9 2024-10-26 18:10:21 -05:00
Trevor Gross
0433caa0ba Fix release-plz workflow configuration 2024-10-26 18:01:56 -05:00
Trevor Gross
47961340db Add release-plz for automated releases 2024-10-26 17:58:38 -05:00
Trevor Gross
bd82e67afc Update licensing to MIT AND (MIT OR Apache-2.0)
Currently both Cargo.toml and the license files indicate that this
library may be used under either MIT or Apache-2.0. However, this is not
accurate; since portions of this library were derived from musl libc,
which is available under the MIT license, this terms of use for this
library must also include use under the MIT license. That is, it is not
correct that this library may be used under only the Apache-2.0 license.

Update the SPDX license identifier to `MIT OR (MIT AND Apache-2.0)` to
indicate that use must include the MIT license, but to clarify that
contributions are made under `MIT OR Apache-2.0`. This is compatible
with the current state of this repository since it has always contained
both license files, and the `Cargo.toml` license field has indicated
`MIT OR Apache-2.0` since it was added.

In accordance with the above, replace the two license files with a
combined LICENSE.txt that makes these terms clear and gives attribution
to works from which this library is derived.

Fixes: https://github.com/rust-lang/libm/issues/215
Link: https://rust-lang.zulipchat.com/#narrow/channel/335408-foundation/topic/Request.20for.20legal.20team.20input.20on.20crate.20licensing
Link: https://git.musl-libc.org/cgit/musl/tree/COPYRIGHT
2024-10-26 17:09:57 -05:00
Trevor Gross
79bf4fe1f2 Don't deny warnings in lib.rs
Having `#![deny(warnings)]` for the entire crate is a bit of a
development annoyance. We already run CI with `RUSTFLAGS=-Dwarnings` so
there isn't much of a reason to check this locally. Thus, remove the
attribute.

Additionally, sort the clippy allows.
2024-10-26 00:54:26 -05:00
Trevor Gross
a68516ed6a Rename the musl-bitwise-tests feature to test-musl-serialized
We will have more test features in the near future, and it would be nice
for them all to have a common `test-` prefix. Reverse the existing
feature so this is the case.
2024-10-25 20:57:19 -04:00
Trevor Gross
d3943b1863 Set edition to 2021 for all crates 2024-10-07 00:22:14 -05:00
Trevor Gross
d82eb88722 Fix shellcheck warnings in scripts 2024-10-06 13:44:25 -05:00
Trevor Gross
d0f1dd6010 Set target-specific AR and CC arguments
The Rust `cc` crate reads these, so make sure they are set for when we
start making use of `cc`.
2024-10-06 00:18:00 -05:00
Trevor Gross
0be441d5ad Update Ubuntu images to 24.04
We don't have any specific reason to stay on 18.04, so upgrade to the
latest LTS version.
2024-10-06 00:10:12 -05:00
Trevor Gross
d8c234b959 Do library updates necessary with dependency upgrades 2024-10-05 22:28:38 -05:00
Trevor Gross
cb305df194 Upgrade all dependencies
None of these affect the distributed library.
2024-10-05 22:24:14 -05:00
Trevor Gross
c236051681 Rename the musl-reference-tests feature to musl-bitwise-tests
The plan is to add more test related features that could be considered
"reference tests". Rename the feature here to avoid future confusion.
2024-10-05 21:42:28 -05:00
Trevor Gross
f59dd82cca Move musl-reference-tests to a new libm-test crate
There isn't any reason for this feature to be exposed or part of the
build script. Move it to a separate crate.

We will also want more tests that require some support functions; this
will create a place for them.
2024-10-05 15:54:39 -05:00
Trevor Gross
a1ba7445d4 Add a success job to CI
This will allow us to enable auto merge once CI completes.
2024-08-22 03:43:13 -05:00
Guillaume Gomez
7bc2291ac5 Rename only-soft-floats feature into force-soft-floats 2024-08-07 11:29:47 +02:00
Guillaume Gomez
c1a498db17 Add only-soft-floats feature to prevent using any intrinsics or arch-specific code 2024-08-06 21:23:34 +02:00
Trevor Gross
c7eadedd5f Deny warnings in CI
The main crate already has `#![deny(warnings)]`. Set RUSTFLAGS in CI to
enforce this for other crates in the workspace.
2024-05-06 04:51:41 -05:00
Amjad Alsharafi
1b15dd5eb2 Fix clippy::deprecated_cfg_attr on compiler_builtins 2024-04-30 12:14:55 +08:00
Jeff Thuong
9c0ab26d3b Corrected English typos 2024-04-02 11:35:08 +08:00
Amjad Alsharafi
d752cbfb0e Remove unneeded extern core in tgamma 2024-02-21 00:59:37 +00:00
Amanieu d'Antras
cdf7ac490c Allow internal_features lint when building with "unstable" 2024-02-21 00:58:14 +00:00
Mark S. Baranowski
7a32a99352 This updates the exponent calculations done in the nextafter functions related
to detecting underflow/overflow. The functions now match the behavior of the
MUSL implementations these were based on.

Fixes rust-lang/libm#286
2023-10-31 16:03:51 -06:00
Amanieu d'Antras
c2a2f92647 Merge pull request rust-lang/libm#285 from Amanieu/release-0.2.8 2023-10-06 10:31:47 +01:00
Amanieu d'Antras
5531828bfc Release 0.2.8 2023-10-06 11:25:38 +02:00
Peter Michael Green
36e334dfb0 Fix rint and rintf on x87. 2023-10-05 17:38:44 +00:00
klensy
ceffc1c25f fix ci, disable mips, mirrors https://github.com/rust-lang/compiler-builtins/pull/537 2023-08-07 21:51:34 +03:00
mulhern
54577e0039 Exclude GitHub Workflows files from packaged crate 2023-08-03 15:05:28 -04:00
mulhern
c52ae9d597 Exclude ci directory from packaged crate
I do not think there is compelling reason to release the ci support as
part of a Rust source code package. In addition, the crate, as it is
released now, gets flagged in some security scans due to the presence of
Dockerfiles which are considered to be following some unsafe practices.
Most Linux distros package using the vendored appraoch and provide a
vendor tarfile of an application's dependencies. Scanners will tend to
expect that the contents of the vendor tarfile will be source code.
These Dockerfiles are already being flagged by some scanners; other
contents of the ci directory may be flagged in future.
2023-08-03 09:31:56 -04:00
Yuki Okushi
eac491efc3 Prepare 0.2.7 release
Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2023-05-13 15:16:59 +09:00
Tobias Decking
8753da27ae Small tweak to mul in fma.rs. 2023-02-16 18:22:17 +01:00
Amanieu d'Antras
576368ea57 Merge pull request rust-lang/libm#275 from moritz-meier/feature/add-generic-helper 2023-02-11 16:54:11 +01:00
James D. Turner
929b5841db Fix descriptions of erfc and erfcf
As described in the second paragraph of the docs for these functions, they are
the complementary error function, not the error function.
2023-01-20 13:40:55 -05:00
Moritz Meier
7777c60a0b add generic libm helper
Add editorconfig + docs


refactor
2023-01-17 20:41:24 +01:00
Luc
b90b2f8547 Fix formatting
Forgot to run cargo fmt last time...
2022-11-16 15:44:43 +01:00
Luc
294eab9520 Remove negative numbers from test 2022-11-16 15:39:13 +01:00
Luc
95c860d1bf Add Small Conformance tests to Sqrt(f) 2022-11-14 16:49:43 +01:00