|
|
@@ -1,7 +1,9 @@
|
|
|
let eps = 1e-10
|
|
|
|
|
|
+fn _delta<X: Dim>(x: X) -> X = 1e-10 × unit_of(x)
|
|
|
+
|
|
|
fn diff<X: Dim, Y: Dim>(f: Fn[(X) -> Y], x: X) -> Y / X =
|
|
|
- (f(x + eps · unit_of(x)) - f(x)) / (eps · unit_of(x))
|
|
|
+ (f(x + _delta(x)) - f(x)) / _delta(x)
|
|
|
|
|
|
assert_eq(diff(log, 2.0), 0.5, 1e-5)
|
|
|
assert_eq(diff(sin, 0.0), 1.0, 1e-5)
|