Evaluate a univariate polynomial [FINALIZED]
+2
−0
Challenge
Given a list of n numbers and x, compute $a + bx^1 + cx^{2} + zx^{n-1}$, where a is the first value in the list, b is the second, etc. n is at most 256 and at least 0. The input value(s) can be any 32-bit float
Input can be in any format of choice, as long as it is a list of numbers and x. (And this'll likely stay this way, even if input rules change over time)
Test inputs
1.0
, 182
-> 1
1.0, 2.0
, 4
-> 9
2.5, 2.0
, 0.5
-> 3.5
1.0, 2.0, 3.0, 4.0
, 1.5
-> `24.25
Example ungolfed program (Rust)
// dbg! is a logging function, prints the expression and it's output.
// Good for seeing what's happening
// Test setup
pub fn main() {
let inp: &[f32] = &[1.0, 2.0, 3.0, 4.0];
let x: f32 = 1.5;
dbg!(evaluate_polynomial(inp, x)); // take inputs, print result
}
// Actual challenge answer function
pub fn evaluate_polynomial(inp: &[f32], x: f32) -> f32 {
let mut accum: f32 = 0.0;
for (idx, val) in inp.iter().enumerate() {
// x.pow(idx) * val
accum += dbg!(x.powf(idx as f32) * val);
}
return accum;
}
1 comment thread