[package] [Java implementation] [Execution output]


DerivativeTest


import church.util.Entry;
import church.util.HashMap;

import Expression;
import Derivative;

test(funNameToFunction, funNameToDerivative, fn, x0, expectedFp0) = {
    varName = "x";
    varNameToValue = name −> if name == varName then x0 else error("Undefined variable");
    x = var(varName);
    // evaluate the function
    f = fn(x);
    output << "f(x)  = " << f << "\n";
    f0 = evaluate(funNameToFunction, f, varNameToValue);
    output << "f(1)  = " << f0 << "\n";
    // evaluate the derivative
    fp = derivative(funNameToDerivative, f, x);
    output << "f'(x) = " << fp << "\n";
    fp0 = evaluate(funNameToFunction, fp, varNameToValue);
    output << "f'(1) = " << fp0 << "\n";
    // check the derivative
    assert expectedFp0 == fp0;
    output << "\n";
}

test0(fn, x0, fp0) = test(name −> {}.get(name), name −> {}.get(name), fn, x0, fp0);