RosettaCodeData/Task/First-class-functions-Use-numbers-analogously/Groovy/first-class-functions-use-numbers-analogously.groovy
2023-07-01 13:44:08 -04:00

11 lines
445 B
Groovy

def multiplier = { n1, n2 -> { m -> n1 * n2 * m } }
def ε = 0.00000001 // tolerance(epsilon): acceptable level of "wrongness" to account for rounding error
[(2.0):0.5, (4.0):0.25, (6.0):(1/6.0)].each { num, inv ->
def new_function = multiplier(num, inv)
(1.0..5.0).each { trial ->
assert (new_function(trial) - trial).abs() < ε
printf('%5.3f * %5.3f * %5.3f == %5.3f\n', num, inv, trial, trial)
}
println()
}