require 'symengine' SymEngine.ascii_art basic = SymEngine::Basic.new puts x = SymEngine::Symbol.new("x") puts y = SymEngine::Symbol.new("y") puts z = SymEngine::Symbol.new("z") e = (x-y)*(x**y/z) e.to_s x.class x.is_a? SymEngine::Basic f = e.expand() f.to_s f == - (x**y*y/z) + (x**y*x/z) e == f f.free_symbols f.free_symbols.map { |x| x.to_s } f.args.map { |x| x.to_s } f.args[0].args.map { |k| k.to_s } a = SymEngine::Integer.new(12) b = SymEngine::Integer.new(64) a**b (a**x).to_s c = Rational('2/3') d = SymEngine::Rational.new(c) (a-d).to_s k = (1 / (x * y) - x * y + 2) * (c + x * y) # c is a Rational object, not SymEngine::Rational k.to_s k.expand.to_s