function dd = divided_difference(f, xs) ## Compute divided difference of `f` at points `xs`. The argument `xs` ## is assumed to be a vector containing at least one element. If it ## contains n elements, the (n-1)st divided difference will be ## calculated. ## ## INPUTS: ## ## * ``f`` - The function whose divided differences we want. ## ## * ``xs`` - A vector containing x-coordinates. The length of `xs` ## determines the order of the divided difference. ## ## ## OUTPUTS: ## ## * ``dd`` - The divided difference f[xs(1), xs(2),...] ## if (exist('../homework1/src', 'dir')) addpath('../homework1/src'); end order = length(xs) - 1; if (order < 0) ## Can't do anything here. Return nothing. dd = NA; elseif (order == 0) ## Our base case. dd = f(xs(1)); else ## Order >= 1. cs = divided_difference_coefficients(xs); dd = dot(cs, f(xs)); end end