diff --git a/sample-code/sqrt.cl b/sample-code/sqrt.cl index 7e9672f..d4d5a5a 100755 --- a/sample-code/sqrt.cl +++ b/sample-code/sqrt.cl @@ -2,30 +2,27 @@ //! Square root approximation, and example applications /// A really small nonzero number -const EPSILON: f64 // = 8.854... * 10^-12 - = 88541878188 as f64 - / 10000000000 as f64 - / 1000000000000 as f64; +const EPSILON: f64 = 8.8541878188 / 1000000000000.0; /// Calcuates the absolute value of a number fn f64_abs(n: f64) -> f64 { let n = n as f64 - if n < (0 as f64) { -n } else { n } + if n < (0.0) { -n } else { n } } /// Square root approximation using Newton's method fn sqrt(n: f64) -> f64 { let n = n as f64 - if n < 0 as f64 { - return 0 as f64 / 0 as f64 // TODO: NaN constant + if n < 0.0 { + return 0.0 / 0.0 // TODO: NaN constant } - if n == 0 as f64 { - return 0 as f64 + if n == 0.0 { + return 0.0 } let z = n loop { - let adj = (z * z - n) / (2 as f64 * z) + let adj = (z * z - n) / (2.0 * z) z -= adj if adj.f64_abs() < EPSILON { break z; @@ -42,18 +39,18 @@ fn pythag(a: f64, b: f64) -> f64 { fn quadratic(a: f64, b: f64, c: f64) -> (f64, f64) { let a = a as f64; let b = b as f64; let c = c as f64; ( - (-b + sqrt(b * b - 4 as f64 * a * c)) / 2 as f64 * a, - (-b - sqrt(b * b - 4 as f64 * a * c)) / 2 as f64 * a, + (-b + sqrt(b * b - 4.0 * a * c)) / 2.0 * a, + (-b - sqrt(b * b - 4.0 * a * c)) / 2.0 * a, ) } fn main() { for i in 0..10 { - println("sqrt(",i,") ≅ ",sqrt(i)) + println("sqrt(",i,") ≅ ",sqrt(i as f64)) } println("\nPythagorean Theorem") - println("Hypotenuse of ⊿(5, 12): ", pythag(5, 12)) + println("Hypotenuse of ⊿(5, 12): ", pythag(5.0, 12.0)) println("\nQuadratic formula") - println("Roots of 10x² + 4x - 1: ", quadratic(10, 44, -1)) + println("Roots of 10x² + 4x - 1: ", quadratic(10.0, 44.0, -1.0)) }