Example test-symbols.lua

require 'pl'

-- force us to look in the script's directory when requiring...

app.require_here()

require 'symbols'



local MT = getmetatable(_1)



add = MT.__add

mul = MT.__mul

pow = MT.__pow





function testeq (e1,e2)

    if not equals(e1,e2) then

        print ('Not equal',repr(e1),repr(e2))

    end

end



sin = register(math.sin,'sin')



f = register(function(x,y,z) end)



--[[

testeq (_1,_1)

testeq (_1+_2,_1+_2)

testeq (_1 + 3*_2,_1 + 3*_2)

testeq (_2+_1,_1+_2)

testeq (sin(_1),sin(_1))

testeq (1+f(10,20,'ok'),f(10,20,'ok')+1)

--]]





function testexpand (e)

    print(repr(fold(expand(e)))) --fold

end



--[[

testexpand (a*(a+1))



testexpand ((x+2)*(b+1))

]]--



function testfold (e)

    print(repr(fold(e)))

end



a,b,c,x,y = Var 'a,b,c,x,y'



--~ testfold(_1 + _2)

--~ testfold(add(10,20))

--~ testfold(add(mul(2,_1),mul(3,_2)))

--[[

testfold(sin(a))

e = a^(b+2)

testfold(e)

bindval(b,1)

testfold(e)

bindval(a,2)

testfold(e)



bindval(a)

bindval(b)

]]







function testdiff (e)

    balance(e)

    e = diff(e,x)

    balance(e)

    print('+ ',e)

    e = fold(e)

    print('- ',e)

end





testdiff(x^2+1)

testdiff(3*x^2)

testdiff(x^2 + 2*x^3)

testdiff(x^2 + 2*a*x^3 + x^4)

testdiff(2*a*x^3)

testdiff(x*x*x)



generated by LDoc 1.3.12