#!/usr/bin/env lua -- file: npolynomials.lua -- Exercise 3.4: Can you write a function from the previous -- item so that it uses at most n additions and n multiplications -- (and no exponentiations)? -- coefficients are stored in a Lua array, -- with the first array member representing -- the first coefficient (which is multiplied -- by x^n) and the last array member representing -- the last coefficient (multiplied by x) -- calculates polynomials using 2n multiplications, -- n additions and no exponentiations or something -- along those lines function calculate(coefficients, x) p = 0 cur = 1 for i = #coefficients, 1, -1 do p = p + cur*coefficients[i] cur = cur * x end return p end -- read coefficients from user print("how many coefficients should be read?") size = io.read("*n") print("reading " .. size .. " coefficients") c = {} for i = 1, size do c[#c+1] = io.read("*n") end -- asks for x values to calculate the function print("please enter x values (ctrl-d to exit)") while true do x = io.read("*n") print("f(" .. x .. ") = " .. calculate(c, x)) end