--[[ Test Complex Number Rectangular Coordinates Module H. Conrad Cunningham, Professor Computer and Information Science University of Mississippi Developed for CSci 658, Software Language Engineering, Fall 2013 1234567890123456789012345678901234567890123456789012345678901234567890 2013-09-20: Translated SICP Scheme code to Lua draft 2013-09-21: Prototyped complex number modules 2013-09-22: Added require of utilities module --]] -- INITIALIZATION -- Load complex number utilities module local util = require "complexUtilities" -- local definitions for convenience local square = util.square local show_data = util.show_data -- Load complex number module local cn = require "complexRectangular" -- local definitions for convenience local make_from_real_imag = cn.make_from_real_imag local make_from_mag_ang = cn.make_from_mag_ang local real_part = cn.real_part local imag_part = cn.imag_part local magnitude = cn.magnitude local angle = cn.angle local add_complex = cn.add_complex local sub_complex = cn.sub_complex local mul_complex = cn.mul_complex local div_complex = cn.div_complex local to_string = cn.to_string -- TESTING print("\nTest error output function show_data") print("string -- " .. show_data("error string test")) print("number 13 -- " .. show_data(13)) print("nil -- " .. show_data(nil)) print("boolean -- " .. show_data(false)) print("function -- " .. show_data(function() return 1 end)) print("function -- " .. show_data({tag = "Triangular", stuff="stuff", contents = {"only in index 1"}} ) ) print("\nTest representation") local z = {real = 1, imag = 2} print("check raw of rep {real = 1, imag = 2}: " .. to_string({real = 1, imag = 2})) z = make_from_real_imag(1,2) print("check using make_from_real_imag(1,2): " .. to_string(z)) print("real_part(z) => " .. real_part(z)) print("imag_part(z) => " .. imag_part(z)) print("magnitude(z) => " .. magnitude(z)) print("angle(z) => " .. angle(z)) print("]nTest functions") print("\n0+0i") local zero = make_from_real_imag(0,0) print("make_from_real_imag(0,0) => " .. to_string(zero) .. " zero" ) local zerop = make_from_mag_ang(0,0) print("make_from_mag_ang(0,0) => " .. to_string(zerop) .. " zerop" ) print("\n1+0i") local one = make_from_real_imag(1,0) print("make_from_real_imag(1,0) => " .. to_string(one) .. " one" ) local onep = make_from_mag_ang(1,0) print("make_from_mag_ang(1,0) => " .. to_string(onep) .. " onep" ) print("\n0+1i") local ione = make_from_real_imag(0,1) print("make_from_real_imag(0,1) => " .. to_string(ione) .. " ione" ) local ionep = make_from_mag_ang(1,math.pi/2) print("make_from_mag_ang(1,math.pi/2) => " .. to_string(ionep) .. " ionep" ) print("\n1+1i") local oneone = make_from_real_imag(1,1) print("make_from_real_imag(1,1) => " .. to_string(oneone) .. " oneone" ) local oneonep = make_from_mag_ang(math.sqrt(2),math.pi/4) print("make_from__mag_ang(math.sqrt(2),math.pi/4) => " .. to_string(oneonep) .. " oneonep") print("\npi+0i") local rpi = make_from_real_imag(math.pi,0) print("make_from_real_imag(math.pi,0) => " .. to_string(rpi) .. " rpi") local rpip = make_from_mag_ang(math.pi,0) print("make_from_mag_ang(math.pi,0) => " .. to_string(rpip) .. " rpip") print("\n-1+0i") local neg1 = make_from_real_imag(-1,0) print("make_from_real_imag(-1,0) => " .. to_string(neg1) .. " neg1") local neg1p = make_from_mag_ang(1,math.pi) print("make_from_mag_ang(1,math.pi) => " .. to_string(neg1p) .. " neg1p") print("") print("magnitude(zero) => " .. tostring(magnitude(zero))) print("angle(zero) => " .. tostring(angle(zero))) print("magnitude(zerop) => " .. tostring(magnitude(zerop))) print("angle(zerop) => " .. tostring(angle(zerop))) print("magnitude(one) => " .. tostring(magnitude(one))) print("angle(one) => " .. tostring(angle(one))) print("magnitude(onep) => " .. tostring(magnitude(onep))) print("angle(onep) => " .. tostring(angle(onep))) print("magnitude(oneone) => " .. tostring(magnitude(oneone))) print("angle(oneone) => " .. tostring(angle(oneone))) print("magnitude(oneonep) => " ..tostring(magnitude(oneonep))) print("angle(oneonep) => " .. tostring(angle(oneonep))) print("magnitude(rpi) => " .. tostring(magnitude(rpi))) print("angle(rpi) => " .. tostring(angle(rpi))) print("magnitude(rpip) => " .. tostring(magnitude(rpip))) print("angle(rpip) => " .. tostring(angle(rpip))) print("magnitude(neg1) => " .. tostring(magnitude(neg1))) print("angle(neg1) => " .. tostring(angle(neg1))) print("magnitude(neg1p) => " .. tostring(magnitude(neg1p))) print("angle(neg1p) => " .. tostring(angle(neg1p))) local z1 = add_complex(one,ione) print("add_complex(one,ione) => " .. to_string(z1) .. " z1") local z2 = add_complex(oneone,rpi) print("add_complex(oneone,rpi) => " .. to_string(z2) .. " z2") local z3 = sub_complex(z1,ione) print("sub_complex(z1,ione) => " .. to_string(z3) .. " z3") local z4 = sub_complex(z2,oneone) print("sub_complex(z2,oneone) => " .. to_string(z4) .. " z4") local z5 = mul_complex(one,one) print("mul_complex(one,one) => " .. to_string(z5) .. " z5") local z6 = mul_complex(rpi,one) print("mul_complex(rpi,one) => " .. to_string(z6) .. " z6") local z7 = mul_complex(oneone,one) print("mul_complex(oneone,one) => " .. to_string(z7) .. " z7") local z8 = div_complex(one,one) print("div_complex(one,one) => " .. to_string(z8) .. " z8") local z9 = div_complex(one,ione) print("div_complex(one,ione) => " .. to_string(z9) .. " z9") local z10 = make_from_mag_ang(0,0) print("make_from_mag_ang(0,0) => " ..to_string(z10) .. " z10") local z11 = make_from_mag_ang(1,math.pi/2) print("make_from_mag_ang(1,PI/2) => " ..to_string(z11) .. " z11") local z12 = make_from_mag_ang(10,math.pi) print("make_from_mag_ang(10,PI) => " ..to_string(z12) .. " z12")