def test_mix_number_mult_symbols(): assert mcode(3 * x) == "3*x" assert mcode(pi * x) == "pi*x" assert mcode(3 / x) == "3./x" assert mcode(pi / x) == "pi./x" assert mcode(x / 3) == "x/3" assert mcode(x / pi) == "x/pi" assert mcode(x * y) == "x.*y" assert mcode(3 * x * y) == "3*x.*y" assert mcode(3 * pi * x * y) == "3*pi*x.*y" assert mcode(x / y) == "x./y" assert mcode(3 * x / y) == "3*x./y" assert mcode(x * y / z) == "x.*y./z" assert mcode(x / y * z) == "x.*z./y" assert mcode(1 / x / y) == "1./(x.*y)" assert mcode(2 * pi * x / y / z) == "2*pi*x./(y.*z)" assert mcode(3 * pi / x) == "3*pi./x" assert mcode(S(3) / 5) == "3/5" assert mcode(S(3) / 5 * x) == "3*x/5" assert mcode(x / y / z) == "x./(y.*z)" assert mcode((x + y) / z) == "(x + y)./z" assert mcode((x + y) / (z + x)) == "(x + y)./(x + z)" assert mcode((x + y) / EulerGamma) == "(x + y)/%s" % EulerGamma.evalf(17) assert mcode(x / 3 / pi) == "x/(3*pi)" assert mcode(S(3) / 5 * x * y / pi) == "3*x.*y/(5*pi)"
def test_mix_number_mult_symbols(): assert mcode(3*x) == "3*x" assert mcode(pi*x) == "pi*x" assert mcode(3/x) == "3./x" assert mcode(pi/x) == "pi./x" assert mcode(x/3) == "x/3" assert mcode(x/pi) == "x/pi" assert mcode(x*y) == "x.*y" assert mcode(3*x*y) == "3*x.*y" assert mcode(3*pi*x*y) == "3*pi*x.*y" assert mcode(x/y) == "x./y" assert mcode(3*x/y) == "3*x./y" assert mcode(x*y/z) == "x.*y./z" assert mcode(x/y*z) == "x.*z./y" assert mcode(1/x/y) == "1./(x.*y)" assert mcode(2*pi*x/y/z) == "2*pi*x./(y.*z)" assert mcode(3*pi/x) == "3*pi./x" assert mcode(S(3)/5) == "3/5" assert mcode(S(3)/5*x) == "3*x/5" assert mcode(x/y/z) == "x./(y.*z)" assert mcode((x+y)/z) == "(x + y)./z" assert mcode((x+y)/(z+x)) == "(x + y)./(x + z)" assert mcode((x+y)/EulerGamma) == "(x + y)/%s" % EulerGamma.evalf(17) assert mcode(x/3/pi) == "x/(3*pi)" assert mcode(S(3)/5*x*y/pi) == "3*x.*y/(5*pi)"
def test_jscode_constants_other(): assert jscode( 2 * GoldenRatio ) == "var GoldenRatio = %s;\n2*GoldenRatio" % GoldenRatio.evalf(17) assert jscode( 2 * Catalan) == "var Catalan = %s;\n2*Catalan" % Catalan.evalf(17) assert jscode( 2 * EulerGamma ) == "var EulerGamma = %s;\n2*EulerGamma" % EulerGamma.evalf(17)
def test_ccode_constants_other(): assert ccode( 2 * GoldenRatio ) == "const double GoldenRatio = %s;\n2*GoldenRatio" % GoldenRatio.evalf(17) assert ccode( 2 * Catalan ) == "const double Catalan = %s;\n2*Catalan" % Catalan.evalf(17) assert ccode( 2 * EulerGamma ) == "const double EulerGamma = %s;\n2*EulerGamma" % EulerGamma.evalf(17)
def test_constants_other(): assert rust_code( 2 * GoldenRatio ) == "const GoldenRatio: f64 = %s;\n2*GoldenRatio" % GoldenRatio.evalf(17) assert rust_code( 2 * Catalan) == "const Catalan: f64 = %s;\n2*Catalan" % Catalan.evalf(17) assert rust_code( 2 * EulerGamma ) == "const EulerGamma: f64 = %s;\n2*EulerGamma" % EulerGamma.evalf(17)
def test_fcode_NumberSymbol(): prec = 17 p = FCodePrinter() assert fcode( Catalan ) == ' parameter (Catalan = %sd0)\n Catalan' % Catalan.evalf( prec) assert fcode( EulerGamma ) == ' parameter (EulerGamma = %sd0)\n EulerGamma' % EulerGamma.evalf( prec) assert fcode(E) == ' parameter (E = %sd0)\n E' % E.evalf(prec) assert fcode( GoldenRatio ) == ' parameter (GoldenRatio = %sd0)\n GoldenRatio' % GoldenRatio.evalf( prec) assert fcode( pi) == ' parameter (pi = %sd0)\n pi' % pi.evalf(prec) assert fcode( pi, precision=5) == ' parameter (pi = %sd0)\n pi' % pi.evalf(5) assert fcode(Catalan, human=False) == ({(Catalan, p._print(Catalan.evalf(prec)))}, set(), ' Catalan') assert fcode(EulerGamma, human=False) == ({ (EulerGamma, p._print(EulerGamma.evalf(prec))) }, set(), ' EulerGamma') assert fcode(E, human=False) == ({(E, p._print(E.evalf(prec)))}, set(), ' E') assert fcode(GoldenRatio, human=False) == ({ (GoldenRatio, p._print(GoldenRatio.evalf(prec))) }, set(), ' GoldenRatio') assert fcode(pi, human=False) == ({(pi, p._print(pi.evalf(prec)))}, set(), ' pi') assert fcode(pi, precision=5, human=False) == ({(pi, p._print(pi.evalf(5)))}, set(), ' pi')
def test_numbersymbol_inline(): # FIXME: how to pass inline to the RustCodePrinter? name_expr = ("test", [pi**Catalan, EulerGamma]) result, = codegen(name_expr, "Rust", header=False, empty=False, inline=True) source = result[1] expected = ( "fn test() -> (f64, f64) {\n" " const Catalan: f64 = %s;\n" " const EulerGamma: f64 = %s;\n" " let out1 = PI.powf(Catalan);\n" " let out2 = EulerGamma);\n" " (out1, out2)\n" "}\n" ) % (Catalan.evalf(17), EulerGamma.evalf(17)) assert source == expected
def test_constants_other(): assert mcode(2 * GoldenRatio) == "2*(1+sqrt(5))/2" assert mcode(2 * Catalan) == "2*%s" % Catalan.evalf(17) assert mcode(2 * EulerGamma) == "2*%s" % EulerGamma.evalf(17)
def test_ccode_constants_other(): assert ccode(2*GoldenRatio) == "const double GoldenRatio = %s;\n2*GoldenRatio" % GoldenRatio.evalf(17) assert ccode( 2*Catalan) == "const double Catalan = %s;\n2*Catalan" % Catalan.evalf(17) assert ccode(2*EulerGamma) == "const double EulerGamma = %s;\n2*EulerGamma" % EulerGamma.evalf(17)
def test_constants_other(): assert mcode(2*GoldenRatio) == "2*(1+sqrt(5))/2" assert mcode(2*Catalan) == "2*%s" % Catalan.evalf(17) assert mcode(2*EulerGamma) == "2*%s" % EulerGamma.evalf(17)
def test_jscode_constants_other(): assert jscode( 2*GoldenRatio) == "var GoldenRatio = %s;\n2*GoldenRatio" % GoldenRatio.evalf(17) assert jscode(2*Catalan) == "var Catalan = %s;\n2*Catalan" % Catalan.evalf(17) assert jscode( 2*EulerGamma) == "var EulerGamma = %s;\n2*EulerGamma" % EulerGamma.evalf(17)
def test_constants_other(): assert rust_code(2*GoldenRatio) == "const GoldenRatio: f64 = %s;\n2*GoldenRatio" % GoldenRatio.evalf(17) assert rust_code( 2*Catalan) == "const Catalan: f64 = %s;\n2*Catalan" % Catalan.evalf(17) assert rust_code(2*EulerGamma) == "const EulerGamma: f64 = %s;\n2*EulerGamma" % EulerGamma.evalf(17)