@@ -8,6 +8,286 @@ and this project adheres to
8
8
9
9
## [ Unreleased]
10
10
11
+ ## [ 0.2.12] ( https://github.com/rust-lang/libm/compare/libm-v0.2.11...libm-v0.2.12 ) - 2025-04-18
12
+
13
+ ### Other
14
+
15
+ - Mark generic functions ` #[inline] `
16
+ - Combine the source files for ` fmod `
17
+ - Ensure all public functions are marked ` no_panic `
18
+ - Account for ` PR_NUMBER ` being set to an empty string
19
+ - Ensure configure.rs changes trigger rebuilds
20
+ - Increase the timeout for extensive tests
21
+ - Require ` ci: allow-many-extensive ` if a threshold is exceeded
22
+ - Allow skipping extensive tests with ` ci: skip-extensive `
23
+ - Cancel jobs when a new push happens
24
+ - Combine the source files for more generic implementations
25
+ - Make ` assert_biteq! ` not rely on having ` Int ` in scope
26
+ - Add ` NEG_NAN ` to ` Float `
27
+ - Correct the normalization of subnormals
28
+ - Add regression tests for subnormal issue
29
+ - Implement rounding for the hex float parsing and prepare to improve error handling
30
+ - Add assembly version of simple operations on aarch64
31
+ - Resolve small errors identified by recent clippy
32
+ - Replace calls to ` core::arch ` intrinsics with assembly
33
+ - Upgrade all dependencies to the latest
34
+ - Gate another assertion behind ` compiler-builtins `
35
+ - Configure out remaining formatting when ` compiler-builtins ` is set
36
+ - Ignore unused variables when ` compiler-builtins ` is set
37
+ - Resolve monomorphization errors in ` compiler-builtins `
38
+ - Make the compiler-builtins test more accurately mirror compiler-builtins
39
+ - Pin the nightly toolchain for aarch64 jobs
40
+ - Use ` git ls-files ` rather than manually globbing for tidy
41
+ - Make ` fma ` a trait method on ` Float `
42
+ - fma refactor 3/3: combine ` fma ` public API with its implementation
43
+ - fma refactor 2/3: move math/generic/fma.rs to math/fma.rs
44
+ - fma refactor 1/3: remove math/fma.rs
45
+ - Scale test iteration count at a later point
46
+ - Add a way to print inputs on failure
47
+ - Rename ` Float::exp ` to ` Float::ex `
48
+ - Check exact values for specified cases
49
+ - Add ` roundeven{,f,f16,f128} `
50
+ - Fix parsing of negative hex float literals in util
51
+ - Increase allowed offset from infinity for ynf
52
+ - Add ` fminimum ` , ` fmaximum ` , ` fminimum_num ` , and ` fmaximum_num `
53
+ - Combine ` fmin{,f,f16,f128} ` and ` fmax{,f,f16,128} ` into a single file
54
+ - Small refactor of bigint tests
55
+ - Eliminate the use of ` force_eval! ` in ` ceil ` , ` floor ` , and ` trunc `
56
+ - Migrate away from nonfunctional ` fenv ` stubs
57
+ - Introduce a trait constant for the minimum positive normal value
58
+ - Implement ` u256 ` with two ` u128 ` s rather than ` u64 `
59
+ - Pin the nightly toolchain for i686-pc-windows-gnu
60
+ - Increase the tolerance for ` jn ` and ` yn `
61
+ - Replace an ` assert! ` with ` debug_assert! ` in ` u256::shr `
62
+ - Change how operators are ` black_box ` ed
63
+ - Add simple icount benchmarks for ` u256 ` operations
64
+ - Decrease the allowed error for ` cbrt `
65
+ - Port the CORE-MATH version of ` cbrt `
66
+ - Add an enum representation of rounding mode
67
+ - Work arouind iai-callgrind apt failures
68
+ - Uncomment some hex float tests that should work now
69
+ - Convert ` fmaf ` to a generic implementation
70
+ - Remove or reduce the scope of ` allow(unused) ` where possible
71
+ - fix exponent calculation for subnormals
72
+ - Check more subnormal values during edge cases tests
73
+ - Run standard tests before running integration tests
74
+ - Add better edge case testing for ` scalbn `
75
+ - Add ` fmaf128 `
76
+ - Make it possible to use ` hf32! ` and similar macros outside of ` libm `
77
+ - Improve tidy output
78
+ - Add an integration test that verifies a list of cases
79
+ - Switch ` musl ` to track ` master `
80
+ - Ensure zero has the correct sign
81
+ - Print the hex float format upon failure
82
+ - Commonize the signature for all instances of ` get_test_cases `
83
+ - Start converting ` fma ` to a generic function
84
+ - Add checks via annotation that lists are sorted or exhaustive
85
+ - Do not add ` libm_helper.rs ` to the sources list
86
+ - Add a check in the ` shared.rs ` that the function list is sorted
87
+ - Add ` scalbnf16 ` , ` scalbnf128 ` , ` ldexpf16 ` , and ` ldexpf128 `
88
+ - Fix hex float trait recursion problem
89
+ - Rename ` EXP_MAX ` to ` EXP_SAT `
90
+ - Specify license as just MIT
91
+ - also print the hex float format for outputs
92
+ - Introduce a wrapper type for IEEE hex float formatting
93
+ - Support parsing NaN and infinities from the ` hf* ` functions
94
+ - Revert "Temporarily pin ` indicatif ` to 0.17.9"
95
+ - Temporarily pin ` indicatif ` to 0.17.9
96
+ - Switch musl from a script download to a submodule
97
+ - Ignore specific ` atan2 ` and ` sin ` tests on i586
98
+ - Rework the available Cargo profiles
99
+ - Remove remnants of the ` checked ` feature
100
+ - Use ` remquo ` from Rug
101
+ - Use ` frexp ` from Rug
102
+ - Use ` az ` exported from Rug
103
+ - Upgrade all dependencies to the latest version
104
+ - Enable missing icount benchmarks
105
+ - Add ` fmodf128 `
106
+ - Add way to override the number of iterations for specific tests
107
+ - Increase or set CI timeouts
108
+ - Add ` fmodf16 ` using the generic implementation
109
+ - Add a generic version of ` fmod `
110
+ - Add ` fminf16 ` , ` fmaxf16 ` , ` fminf128 ` , and ` fmaxf128 `
111
+ - Add a generic version of ` fmin ` and ` fmax `
112
+ - Remove an outdated note about precision
113
+ - Add ` roundf16 ` and ` roundf128 `
114
+ - Add a generic version of ` round `
115
+ - Add a generic version of ` scalbn `
116
+ - Change ` from_parts ` to take a ` u32 ` exponent rather than ` i32 `
117
+ - Introduce XFAILs that assert failure
118
+ - Add ` hf16! ` and ` hf128! `
119
+ - Fix the parsing of three-item tuples in ` util `
120
+ - Add the ability to parse hex, binary, and float hex with util
121
+ - Add ` rintf16 ` and ` rintf128 `
122
+ - Add a generic version of ` rint `
123
+ - Adjust ` ceil ` style to be more similar to ` floor `
124
+ - Add ` floorf16 ` and ` floorf128 `
125
+ - Add a generic version of ` floor `
126
+ - Add ` ceilf16 ` and ` ceilf128 `
127
+ - Add a generic version of ` ceil `
128
+ - Make ` Float::exp ` return an unsigned integer
129
+ - Shift then mask, rather than mask then shift
130
+ - Add ` sqrtf16 ` and ` sqrtf128 `
131
+ - Copy the u256 implementation from compiler_builtins
132
+ - Port the most recent version of Musl's ` sqrt ` as a generic algorithm
133
+ - Enable ` force-soft-floats ` for extensive tests
134
+ - Don't set ` opt_level ` in the musl build script
135
+ - Add a retry to the musl download
136
+ - Remove trailing whitespace in scripts, run JuliaFormatter
137
+ - Ignore files relevant to benchmarking
138
+ - Add a way to ignore benchmark regression checks
139
+ - Run wall time benchmarks with ` --features force-soft-floats `
140
+ - Run icount benchmarks once with softfloat and once with hardfloat
141
+ - Switch to the arm-linux runner and enable MPFR
142
+ - Remove the limit for querying a baseline
143
+ - Add an xfail for recent ynf failures
144
+ - Reduce the warm up and measurement time for ` short-benchmarks `
145
+ - Run iai-callgrind benchmarks in CI
146
+ - Add benchmarks using iai-callgrind
147
+ - Provide a way to override iteration count
148
+ - Increase the CI timeout
149
+ - Adjust precision and add xfails based on new tests
150
+ - Replace ` HasDomain ` to enable multi-argument edge case and domain tests
151
+ - Add an override for a recent failure
152
+ - Pass --max-fail to nextest so it doesn't fail fast
153
+ - Slightly restructure ` ci/calculate-exhaustive-matrix.py `
154
+ - Change ` .yml ` files to the canonical extension ` .yaml `
155
+ - Use cargo-nextest for running tests in CI
156
+ - Simplify and optimize ` fdim ` ([ #442 ] ( https://github.com/rust-lang/libm/pull/442 ) )
157
+ - Reduce indentation in ` run.sh ` using early return
158
+ - Don't set ` codegen-units=1 ` by default in CI
159
+ - Add ` fdimf16 ` and ` fdimf128 `
160
+ - Add a generic version of ` fdim `
161
+ - Format the MPFR manual implementation list
162
+ - Disable ` util ` and ` libm-macros ` for optimized tests
163
+ - Add ` truncf16 ` and ` truncf128 `
164
+ - Add a generic version of ` trunc `
165
+ - Add a utility crate for quick evaluation
166
+ - Enable ` build-mpfr ` and ` build-musl ` by default
167
+ - Rename the ` test-multiprecision ` feature to ` build-mpfr `
168
+ - Introduce arch::aarch64 and use it for rint{,f}
169
+ - Use wasm32 arch intrinsics for rint{,f}
170
+ - Add a new precision adjustment for i586 ` exp2f `
171
+ - Add a new precision adjustment for i586 ` rint `
172
+ - Expose C versions of ` libm ` functions in the ` cb ` crate
173
+ - Always use the same seed for benchmarking
174
+ - Add ` biteq ` and ` exp_unbiased ` to ` Float `
175
+ - Add a ` release-checked ` profile with debug and overflow assertions
176
+ - Remove ` ExpInt ` from ` Float ` , always use ` i32 ` instead
177
+ - Reorder tests in ` run.sh `
178
+ - Split ` cast ` into ` cast ` and ` cast_lossy `
179
+ - Use ` core::arch::wasm ` functions rather than intrinsics
180
+ - Add tests against MPFR for ` remquo ` and ` remquof `
181
+ - Account for optimization levels other than numbers
182
+ - Make extensive tests exhaustive if there are enough iterations available
183
+ - Increase the allowed ULP for ` tgammaf `
184
+ - Replace "intrinsic" config with "arch" config
185
+ - Don't use intrinsics abs for ` f16 ` and ` f128 ` on wasm32
186
+ - Remove an unused ` feature = "force-soft-floats" ` gate
187
+ - Switch from using ` unstable-intrinsics ` to ` intrinsics_enabled `
188
+ - Increase the allowed precision for failing tests on i586
189
+ - Enable MPFR tests on i586
190
+ - Only update the github ref for pull requests
191
+ - Loosen precision on i586 based on new tests
192
+ - Add an override for failing ceil/floor tests on i586
193
+ - Add domain and edge case tests to musl
194
+ - Add test infrastructure for ` f16 ` and ` f128 `
195
+ - Add ` fabsf16 ` , ` fabsf128 ` , ` copysignf16 ` , and ` copysignf128 `
196
+ - Enable ` f16 ` and ` f128 ` when creating the API change list
197
+ - Run extensive tests in CI when relevant files change
198
+ - Update precision based on failures from extensive tests
199
+ - Add extensive and exhaustive tests
200
+ - Add more detailed definition output for ` update-api-list.py `
201
+ - Add tests against MPFR for ` ilogb ` and ` ilogbf `
202
+ - Increase the precision for ` jn ` and ` jnf `
203
+ - Rename ` unstable-test-support ` to ` unstable-public-internals `
204
+ - Update precision based on new test results
205
+ - Rewrite the random test generator
206
+ - Add an iterator that ensures known size
207
+ - Streamline the way that test iteration count is determined
208
+ - Add a way for tests to log to a file
209
+ - Add tests against MPFR for ` scalbn{f} ` and ` ldexp{f} `
210
+ - Add tests against MPFR for ` frexp ` and ` frexpf `
211
+ - Add tests against MPFR for ` modf ` and ` modff `
212
+ - Clean up integers stored in ` MpTy `
213
+ - Sort ` ilogb ` with other precise operations
214
+ - Change to exhaustive matching for ` default_ulp `
215
+ - Use intrinsics for ` abs ` and ` copysign ` when available
216
+ - Rename generic ` abs ` to ` fabs `
217
+ - Always emit ` f16_enabled ` and ` f128_enabled ` attributes
218
+ - Add missing functions to the macro list
219
+ - Use ` rustdoc ` output to create a list of public API
220
+ - Forward the ` CI ` environment variable when running in Docker
221
+ - Remove lossy casting in ` logspace `
222
+ - Set the allowed FMA ULP to 0
223
+ - Don't run ` push ` CI on anything other than ` master `
224
+ - Use ` CheckCtx ` in more places
225
+ - Move ` CheckBasis ` and ` CheckCtx ` to a new ` run_cfg ` module
226
+ - Add ` ALL ` , ` from_str ` and ` math_op ` to ` Identifier `
227
+ - Add new trait implementations for ` Identifier ` and ` BaseName `
228
+ - Include ` shared.rs ` in ` libm_test::op `
229
+ - Move the macro's input function list to a new module ` shared `
230
+ - Add a way to plot the output from generators
231
+ - Update allowed precision to account for new tests
232
+ - Add tests for edge cases
233
+ - Add interfaces and tests based on function domains
234
+ - Introduce a float extension trait and some numerical routines
235
+ - Add an 8-bit float type for testing purposes
236
+ - Remove an ` is_nan ` workaround that is no longer needed
237
+ - Update and slightly refactor some of the ` Float ` trait
238
+ - Always enable ` unstable-float ` in CI
239
+ - Add ` f16 ` and ` f128 ` configuration from ` compiler-builtins `
240
+ - Introduce generic ` abs ` and ` copysign `
241
+ - Change from ` -latest ` to named CI images
242
+ - Allow Clippy lints in ` compiler-builtins-smoke-test `
243
+ - Fix new ` clippy::precedence ` lints
244
+ - Replace string function name matching with enums where possible
245
+ - Rename associated type helpers, add ` OpITy `
246
+ - Introduce helper types for accessing trait items
247
+ - Fix a bug in ` abs_diff `
248
+ - Remove tests against system musl
249
+ - Use ` https: ` links in ` README.md `
250
+ - Move some numeric trait logic to default implementations
251
+ - Change the ` multiprec_ ` prefix to ` mp_ `
252
+ - Change default ULP to use enum matching
253
+ - Rename ` Name ` to ` Identifier ` to avoid some ambiguity of "name"
254
+ - Change the ` CheckCtx ` constructor to take a ` Name ` enum
255
+ - Correct the proc macro to emit ` pub ` functions
256
+ - Rework tests to make use of the new ` MathOp ` trait
257
+ - Introduce a ` op ` module with struct representations of each routine
258
+ - Adjust how the proc macro emits types and add an enum
259
+ - Fix clippy lints in ` crates/ ` and enable this on CI
260
+ - Resolve clippy errors in ` libm ` tests and check this in CI
261
+ - Add some more basic docstrings ([ #352 ] ( https://github.com/rust-lang/libm/pull/352 ) )
262
+ - Introduce ` hf32! ` and ` hf64! ` macros for hex float support
263
+ - Enable clippy for ` libm ` in CI
264
+ - Fix errors reported by Clippy in ` libm `
265
+ - Replace ` libm_test::{Float, Int} ` with ` libm::{Float, Int} `
266
+ - Expose the ` support ` module publicly with a test feature
267
+ - Update libm ` Float ` and ` Int ` with functions from the test traits
268
+ - Change prefixes used by the ` Float ` trait
269
+ - Check benchmarks in CI
270
+ - Remove ` libm-bench `
271
+ - Add benchmarks against musl libm
272
+ - add support for loongarch64-unknown-linux-gnu
273
+ - Rename ` canonical_name ` to ` base_name `
274
+ - Add float and integer traits from compiler-builtins
275
+ - Move architecture-specific code to ` src/math/arch `
276
+ - Update ` select_implementation ` to accept arch configuration
277
+ - Add an "arch" Cargo feature that is on by default
278
+ - Vendor ` cfg_if::cfg_if! `
279
+ - Update ` libm-test/build.rs ` to skip directories
280
+ - Rename the ` special_case ` module to ` precision ` and move default ULP
281
+ - Run tests against MPFR on CI where possible
282
+ - Add a test against MPFR using random inputs
283
+ - Create interfaces for testing against MPFR
284
+ - Combine the WASM CI job with the others
285
+ - Make use of ` select_implementation `
286
+ - Introduce a ` select_implementation ` macro
287
+ - Introduce ` math::arch::intrinsics `
288
+ - Replace ` feature = "unstable-intrinsics" ` with ` intrinsics_enabled `
289
+ - Move the existing "unstable" feature to "unstable-intrinsics"
290
+
11
291
## [ 0.2.11] ( https://github.com/rust-lang/libm/compare/libm-v0.2.10...libm-v0.2.11 ) - 2024-10-28
12
292
13
293
### Fixed
0 commit comments