using Symata x1 = Range(10.0^3) y1 = Range(10.0^3); g(x_, y_) := Module([s=0], begin For(i=1, i<=Length(x), i += 1, s += x[i]^2 / y[i]^(-3)), s end) g(x1,y1) resultS1 = Timing(g(x1,y1)) Apply(Plus, x1^2 / y1^3) resultS2 = Timing(Apply(Plus, x1^2 / y1^3)) resultS1[1]/resultS2[1] jfunc = J((x,y) -> sum(u -> u[1]^2 / u[2]^(3), zip(x,y))); jfunc(x1,y1) Timing(jfunc(x1,y1)) resultJ = Timing(jfunc(x1,y1)) [resultS1[1], resultS2[1] ] / resultJ[1] jfunc([a+b, c+d],[u+v,y+z]) ClearAll(x,a) Julia(); expr = @sym a + b Expand(expr^2) isymata() Julia(); fj(x,y) = sum(u -> u[1]^2 / u[2]^(3), zip(x,y)); isymata(); fj = J( Main.fj ); Timing(fj(x1,y1)) J(time)() y2 = J(range(1, stop=1000.0, length=1000)) jfunc(x1,y2) resultJ2 = Timing(jfunc(x1,y2)) resultJ[1]/resultJ2[1] jfunc(y2,y2) resultJ3 = Timing(jfunc(y2,y2)) resultJ2[1]/resultJ3[1] g = Compile([x], x^2); g(3) g = SymataCall(x, x^2 ); g(3) ex1 = Together(PolyLog(-1,z),(1-z)) ex1 ./ ( z => 3) Julia() ? @symExpr f1(z) = @symExpr Together(PolyLog(-1,z),(1-z)) f1(3) isymata(); # return to Symata mode y2 y3 = Unpack(y2); [Head(y3), Length(y3), y3[1], y3[-1]] y3 == y1 == Range(10.0^3) y3[1] = "cat" y3[1:10] y4 = J(collect)(y2); [Head(y4), y4[1]] y5 = J(mxpr(:List, Any[collect(range(1.0, stop=1000, length=1000))...])); [Head(y5), y5[-1]] [Head(y1), Head(y3)] y6 = Pack(y1) y7 = Pack(y3); [Head(y6), Head(y7)] Julia(); ? @sym ? symparsestring ? symeval ? symtranseval ? symparseeval ? getsymata ? setsymata a = 1 # set a to 1 in Julia @sym a = 3 # set a to 3 in Symata println("a in Julia is $a") # print a in Julia @sym Println("a in Symata is $a") # print a in Symata @sym z = "cat" @sym z getsymata(:z) setsymata(:z, "dog") getsymata(:z) unpacktoList(range(1, stop=4, length=3)) scode = Meta.parse("Sqrt(a)") res = symtranseval(scode) symprintln(res) function squareroots() a = 1:9 setsymata(:a, unpacktoList(a)) symprintln(symparseeval("Sqrt(a)")) nothing end squareroots() isymata() # return to Symata mode ToJuliaString(3 * x^2 * y^3 + Cos(1)) s2 = ToJuliaString( 3*x^2*y^3 + Cos(1), NoSymata => False) ExportJ(s2); J(x = 3, y = 2); J(eval(Meta.parse(Main.s2))) Julia() a = getsymata(:a) typeof(a) mhead(a) margs(a) ex = mxpr(:Cos, mxpr(:Times, :Pi, 2)) symeval(ex) a = newargs(5); copyto!(a, 1:5) mxpra(:List,a) mxpra(:Plus,a) symeval(mxpra(:Plus,a)) println(mmul(3,2), ", " , mmul(:b, :a)) import InteractiveUtils InteractiveUtils.code_native(mmul,(Int,Int)) InteractiveUtils.code_native(*, (Int,Int)) Cos(mmul(2,Pi)) symatamath() Cos(2Pi) isymata() VersionInfo() InputForm(Now())