@@ -8,6 +8,135 @@ 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-02-12
12
+
13
+ ### Other
14
+
15
+ - Make ` fma ` a trait method on ` Float `
16
+ - fma refactor 3/3: combine ` fma ` public API with its implementation
17
+ - fma refactor 2/3: move math/generic/fma.rs to math/fma.rs
18
+ - Rename ` Float::exp ` to ` Float::ex `
19
+ - Add ` roundeven{,f,f16,f128} `
20
+ - Add ` fminimum ` , ` fmaximum ` , ` fminimum_num ` , and ` fmaximum_num `
21
+ - Combine ` fmin{,f,f16,f128} ` and ` fmax{,f,f16,128} ` into a single file
22
+ - Small refactor of bigint tests
23
+ - Eliminate the use of ` force_eval! ` in ` ceil ` , ` floor ` , and ` trunc `
24
+ - Migrate away from nonfunctional ` fenv ` stubs
25
+ - Introduce a trait constant for the minimum positive normal value
26
+ - Implement ` u256 ` with two ` u128 ` s rather than ` u64 `
27
+ - Replace an ` assert! ` with ` debug_assert! ` in ` u256::shr `
28
+ - Add simple icount benchmarks for ` u256 ` operations
29
+ - Port the CORE-MATH version of ` cbrt `
30
+ - Add an enum representation of rounding mode
31
+ - Uncomment some hex float tests that should work now
32
+ - Convert ` fmaf ` to a generic implementation
33
+ - Remove or reduce the scope of ` allow(unused) ` where possible
34
+ - fix exponent calculation for subnormals
35
+ - Add better edge case testing for ` scalbn `
36
+ - Add ` fmaf128 `
37
+ - Make it possible to use ` hf32! ` and similar macros outside of ` libm `
38
+ - Improve tidy output
39
+ - Ensure zero has the correct sign
40
+ - Start converting ` fma ` to a generic function
41
+ - Add checks via annotation that lists are sorted or exhaustive
42
+ - Do not add ` libm_helper.rs ` to the sources list
43
+ - Add ` scalbnf16 ` , ` scalbnf128 ` , ` ldexpf16 ` , and ` ldexpf128 `
44
+ - Fix hex float trait recursion problem
45
+ - Rename ` EXP_MAX ` to ` EXP_SAT `
46
+ - Specify license as just MIT
47
+ - Introduce a wrapper type for IEEE hex float formatting
48
+ - Support parsing NaN and infinities from the ` hf* ` functions
49
+ - Switch musl from a script download to a submodule
50
+ - Ignore specific ` atan2 ` and ` sin ` tests on i586
51
+ - Rework the available Cargo profiles
52
+ - Remove remnants of the ` checked ` feature
53
+ - Upgrade all dependencies to the latest version
54
+ - Add ` fmodf128 `
55
+ - Add ` fmodf16 ` using the generic implementation
56
+ - Add a generic version of ` fmod `
57
+ - Add ` fminf16 ` , ` fmaxf16 ` , ` fminf128 ` , and ` fmaxf128 `
58
+ - Add a generic version of ` fmin ` and ` fmax `
59
+ - Add ` roundf16 ` and ` roundf128 `
60
+ - Add a generic version of ` round `
61
+ - Add a generic version of ` scalbn `
62
+ - Change ` from_parts ` to take a ` u32 ` exponent rather than ` i32 `
63
+ - Add ` hf16! ` and ` hf128! `
64
+ - Add ` rintf16 ` and ` rintf128 `
65
+ - Add a generic version of ` rint `
66
+ - Adjust ` ceil ` style to be more similar to ` floor `
67
+ - Add ` floorf16 ` and ` floorf128 `
68
+ - Add a generic version of ` floor `
69
+ - Add ` ceilf16 ` and ` ceilf128 `
70
+ - Add a generic version of ` ceil `
71
+ - Make ` Float::exp ` return an unsigned integer
72
+ - Shift then mask, rather than mask then shift
73
+ - Add ` sqrtf16 ` and ` sqrtf128 `
74
+ - Copy the u256 implementation from compiler_builtins
75
+ - Port the most recent version of Musl's ` sqrt ` as a generic algorithm
76
+ - Ignore files relevant to benchmarking
77
+ - Add benchmarks using iai-callgrind
78
+ - Adjust precision and add xfails based on new tests
79
+ - Simplify and optimize ` fdim ` ([ #442 ] ( https://github.com/rust-lang/libm/pull/442 ) )
80
+ - Don't set ` codegen-units=1 ` by default in CI
81
+ - Add ` fdimf16 ` and ` fdimf128 `
82
+ - Add a generic version of ` fdim `
83
+ - Add ` truncf16 ` and ` truncf128 `
84
+ - Add a generic version of ` trunc `
85
+ - Add a utility crate for quick evaluation
86
+ - Enable ` build-mpfr ` and ` build-musl ` by default
87
+ - Rename the ` test-multiprecision ` feature to ` build-mpfr `
88
+ - Introduce arch::aarch64 and use it for rint{,f}
89
+ - Use wasm32 arch intrinsics for rint{,f}
90
+ - Expose C versions of ` libm ` functions in the ` cb ` crate
91
+ - Add ` biteq ` and ` exp_unbiased ` to ` Float `
92
+ - Add a ` release-checked ` profile with debug and overflow assertions
93
+ - Remove ` ExpInt ` from ` Float ` , always use ` i32 ` instead
94
+ - Split ` cast ` into ` cast ` and ` cast_lossy `
95
+ - Use ` core::arch::wasm ` functions rather than intrinsics
96
+ - Account for optimization levels other than numbers
97
+ - Replace "intrinsic" config with "arch" config
98
+ - Don't use intrinsics abs for ` f16 ` and ` f128 ` on wasm32
99
+ - Remove an unused ` feature = "force-soft-floats" ` gate
100
+ - Switch from using ` unstable-intrinsics ` to ` intrinsics_enabled `
101
+ - Add test infrastructure for ` f16 ` and ` f128 `
102
+ - Add ` fabsf16 ` , ` fabsf128 ` , ` copysignf16 ` , and ` copysignf128 `
103
+ - Enable ` f16 ` and ` f128 ` when creating the API change list
104
+ - Add more detailed definition output for ` update-api-list.py `
105
+ - Rename ` unstable-test-support ` to ` unstable-public-internals `
106
+ - Add a way for tests to log to a file
107
+ - Use intrinsics for ` abs ` and ` copysign ` when available
108
+ - Rename generic ` abs ` to ` fabs `
109
+ - Use ` rustdoc ` output to create a list of public API
110
+ - Remove an ` is_nan ` workaround that is no longer needed
111
+ - Update and slightly refactor some of the ` Float ` trait
112
+ - Add ` f16 ` and ` f128 ` configuration from ` compiler-builtins `
113
+ - Introduce generic ` abs ` and ` copysign `
114
+ - Fix new ` clippy::precedence ` lints
115
+ - Introduce helper types for accessing trait items
116
+ - Fix a bug in ` abs_diff `
117
+ - Remove tests against system musl
118
+ - Use ` https: ` links in ` README.md `
119
+ - Move some numeric trait logic to default implementations
120
+ - Resolve clippy errors in ` libm ` tests and check this in CI
121
+ - Add some more basic docstrings ([ #352 ] ( https://github.com/rust-lang/libm/pull/352 ) )
122
+ - Introduce ` hf32! ` and ` hf64! ` macros for hex float support
123
+ - Fix errors reported by Clippy in ` libm `
124
+ - Expose the ` support ` module publicly with a test feature
125
+ - Update libm ` Float ` and ` Int ` with functions from the test traits
126
+ - Change prefixes used by the ` Float ` trait
127
+ - Remove ` libm-bench `
128
+ - Rename ` canonical_name ` to ` base_name `
129
+ - Add float and integer traits from compiler-builtins
130
+ - Move architecture-specific code to ` src/math/arch `
131
+ - Update ` select_implementation ` to accept arch configuration
132
+ - Add an "arch" Cargo feature that is on by default
133
+ - Vendor ` cfg_if::cfg_if! `
134
+ - Make use of ` select_implementation `
135
+ - Introduce a ` select_implementation ` macro
136
+ - Introduce ` math::arch::intrinsics `
137
+ - Replace ` feature = "unstable-intrinsics" ` with ` intrinsics_enabled `
138
+ - Move the existing "unstable" feature to "unstable-intrinsics"
139
+
11
140
## [ 0.2.11] ( https://github.com/rust-lang/libm/compare/libm-v0.2.10...libm-v0.2.11 ) - 2024-10-28
12
141
13
142
### Fixed
0 commit comments