Skip to content

Commit b63b4ec

Browse files
committed
Add lints for indeterministic operations
1 parent f70148d commit b63b4ec

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

clippy.toml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
disallowed-methods = [
2+
{ path = "f32::powi", reason = "use ops::FloatPow::squared, ops::FloatPow::cubed, or ops::powf instead for libm determinism" },
3+
{ path = "f32::log", reason = "use ops::ln, ops::log2, or ops::log10 instead for libm determinism" },
4+
{ path = "f32::abs_sub", reason = "deprecated and deeply confusing method" },
5+
{ path = "f32::powf", reason = "use ops::powf instead for libm determinism" },
6+
{ path = "f32::exp", reason = "use ops::exp instead for libm determinism" },
7+
{ path = "f32::exp2", reason = "use ops::exp2 instead for libm determinism" },
8+
{ path = "f32::ln", reason = "use ops::ln instead for libm determinism" },
9+
{ path = "f32::log2", reason = "use ops::log2 instead for libm determinism" },
10+
{ path = "f32::log10", reason = "use ops::log10 instead for libm determinism" },
11+
{ path = "f32::cbrt", reason = "use ops::cbrt instead for libm determinism" },
12+
{ path = "f32::hypot", reason = "use ops::hypot instead for libm determinism" },
13+
{ path = "f32::sin", reason = "use ops::sin instead for libm determinism" },
14+
{ path = "f32::cos", reason = "use ops::cos instead for libm determinism" },
15+
{ path = "f32::tan", reason = "use ops::tan instead for libm determinism" },
16+
{ path = "f32::asin", reason = "use ops::asin instead for libm determinism" },
17+
{ path = "f32::acos", reason = "use ops::acos instead for libm determinism" },
18+
{ path = "f32::atan", reason = "use ops::atan instead for libm determinism" },
19+
{ path = "f32::atan2", reason = "use ops::atan2 instead for libm determinism" },
20+
{ path = "f32::sin_cos", reason = "use ops::sin_cos instead for libm determinism" },
21+
{ path = "f32::exp_m1", reason = "use ops::exp_m1 instead for libm determinism" },
22+
{ path = "f32::ln_1p", reason = "use ops::ln_1p instead for libm determinism" },
23+
{ path = "f32::sinh", reason = "use ops::sinh instead for libm determinism" },
24+
{ path = "f32::cosh", reason = "use ops::cosh instead for libm determinism" },
25+
{ path = "f32::tanh", reason = "use ops::tanh instead for libm determinism" },
26+
{ path = "f32::asinh", reason = "use ops::asinh instead for libm determinism" },
27+
{ path = "f32::acosh", reason = "use ops::acosh instead for libm determinism" },
28+
{ path = "f32::atanh", reason = "use ops::atanh instead for libm determinism" },
29+
]

src/hermite.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
use std::{f32::consts::TAU, marker::PhantomData};
44

55
use bevy::prelude::*;
6+
use ops::FloatPow;
67

78
use crate::{
89
NoRotationEasing, NoTranslationEasing, NonlinearRotationEasing, NonlinearTranslationEasing,
@@ -353,7 +354,7 @@ pub fn hermite_quat(qa: Quat, qb: Quat, w0: Vec3, w1: Vec3, t: f32, unwrap: bool
353354
let t3 = t * t2;
354355

355356
// Cumulative Bernstein basis polynomials
356-
let b1 = 1.0 - (1.0 - t).powi(3);
357+
let b1 = 1.0 - (1.0 - t).cubed();
357358
let b2 = 3.0 * t2 - 2.0 * t3;
358359
let b3 = t3;
359360

0 commit comments

Comments
 (0)