Example #1
0
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)"
Example #2
0
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)"
Example #3
0
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)
Example #4
0
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)
Example #5
0
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)
Example #6
0
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
Example #8
0
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
Example #9
0
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)
Example #10
0
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)
Example #11
0
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)
Example #12
0
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)
Example #13
0
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)