]> git.lizzy.rs Git - rust.git/commitdiff
Auto merge of #4897 - krishna-veerareddy:issue-2040-accurate-float-functions, r=flip1995
authorbors <bors@rust-lang.org>
Mon, 24 Feb 2020 08:33:03 +0000 (08:33 +0000)
committerbors <bors@rust-lang.org>
Mon, 24 Feb 2020 08:33:03 +0000 (08:33 +0000)
Add lint to improve floating-point expressions

Looks for floating-point expressions that can be expressed using built-in methods to improve accuracy, performance and/or succinctness.

changelog: Add lint `floating_point_improvements`.

Fixes #4726
Partly addresses [#2040](https://github.com/rust-lang/rust-clippy/issues/2040)

Currently linted expressions:

| Expression | Suggestion |
|---------------------------------|------------|
| x.log(2.0) | x.log2() |
| x.log(10.0) | x.log10() |
| x.log(std::f32::consts::E) | x.ln() |
| (1 + x).ln() | x.ln_1p() |
| (2.0).powf(x) | x.exp2() |
| (std::f32::consts::E).powf(x) | x.exp() |
| x.powf(1/2) | x.sqrt() |
| x.powf(1/3) | x.cbrt() |
| x.powf(y), where y is whole | x.powi(y) |
| x.exp() - 1 | x.exp_m1() |
|x * y + z|x.mul_add(y, z)|


Trivial merge