Beispiel #1
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) == (
        set([(Catalan, p._print(Catalan.evalf(prec)))]),
        set([]),
        "      Catalan",
    )
    assert fcode(EulerGamma, human=False) == (
        set([(EulerGamma, p._print(EulerGamma.evalf(prec)))]),
        set([]),
        "      EulerGamma",
    )
    assert fcode(E, human=False) == (
        set([(E, p._print(E.evalf(prec)))]),
        set([]),
        "      E",
    )
    assert fcode(GoldenRatio, human=False) == (
        set([(GoldenRatio, p._print(GoldenRatio.evalf(prec)))]),
        set([]),
        "      GoldenRatio",
    )
    assert fcode(pi, human=False) == (
        set([(pi, p._print(pi.evalf(prec)))]),
        set([]),
        "      pi",
    )
    assert fcode(pi, precision=5, human=False) == (
        set([(pi, p._print(pi.evalf(5)))]),
        set([]),
        "      pi",
    )
Beispiel #2
0
def test_fcode_NumberSymbol():
    p = FCodePrinter()
    assert fcode(
        Catalan
    ) == '      parameter (Catalan = 0.915965594177219d0)\n      Catalan'
    assert fcode(
        EulerGamma
    ) == '      parameter (EulerGamma = 0.577215664901533d0)\n      EulerGamma'
    assert fcode(E) == '      parameter (E = 2.71828182845905d0)\n      E'
    assert fcode(
        GoldenRatio
    ) == '      parameter (GoldenRatio = 1.61803398874989d0)\n      GoldenRatio'
    assert fcode(pi) == '      parameter (pi = 3.14159265358979d0)\n      pi'
    assert fcode(pi,
                 precision=5) == '      parameter (pi = 3.1416d0)\n      pi'
    assert fcode(Catalan, human=False) == (set([
        (Catalan, p._print(Catalan.evalf(15)))
    ]), set([]), '      Catalan')
    assert fcode(EulerGamma, human=False) == (set([
        (EulerGamma, p._print(EulerGamma.evalf(15)))
    ]), set([]), '      EulerGamma')
    assert fcode(E, human=False) == (set([(E, p._print(E.evalf(15)))]),
                                     set([]), '      E')
    assert fcode(GoldenRatio, human=False) == (set([
        (GoldenRatio, p._print(GoldenRatio.evalf(15)))
    ]), set([]), '      GoldenRatio')
    assert fcode(pi, human=False) == (set([(pi, p._print(pi.evalf(15)))]),
                                      set([]), '      pi')
    assert fcode(pi, precision=5, human=False) == (set([
        (pi, p._print(pi.evalf(5)))
    ]), set([]), '      pi')
Beispiel #3
0
def test_fcode_NumberSymbol():
    assert fcode(
        Catalan
    ) == '      parameter (Catalan = 0.915965594177219)\n      Catalan'
    assert fcode(
        EulerGamma
    ) == '      parameter (EulerGamma = 0.577215664901533)\n      EulerGamma'
    assert fcode(E) == '      parameter (E = 2.71828182845905)\n      E'
    assert fcode(
        GoldenRatio
    ) == '      parameter (GoldenRatio = 1.61803398874989)\n      GoldenRatio'
    assert fcode(pi) == '      parameter (pi = 3.14159265358979)\n      pi'
    assert fcode(pi, precision=5) == '      parameter (pi = 3.1416)\n      pi'
    assert fcode(Catalan, human=False) == ([('Catalan', Catalan.evalf(15))],
                                           set([]), '      Catalan')
    assert fcode(EulerGamma,
                 human=False) == ([('EulerGamma', EulerGamma.evalf(15))],
                                  set([]), '      EulerGamma')
    assert fcode(E, human=False) == ([('E', E.evalf(15))], set([]), '      E')
    assert fcode(GoldenRatio,
                 human=False) == ([('GoldenRatio', GoldenRatio.evalf(15))],
                                  set([]), '      GoldenRatio')
    assert fcode(pi,
                 human=False) == ([('pi', pi.evalf(15))], set([]), '      pi')
    assert fcode(pi, precision=5,
                 human=False) == ([('pi', pi.evalf(5))], set([]), '      pi')
Beispiel #4
0
def test_issue1512():
    assert abs(pi._evalf(50) - 3.14159265358979) < 1e-10
    assert abs(E._evalf(50) - 2.71828182845905) < 1e-10
    assert abs(Catalan._evalf(50) - 0.915965594177219) < 1e-10
    assert abs(EulerGamma._evalf(50) - 0.577215664901533) < 1e-10
    assert abs(GoldenRatio._evalf(50) - 1.61803398874989) < 1e-10
    x = Symbol("x")
    assert (pi+x).evalf() == pi.evalf()+x
    assert (E+x).evalf() == E.evalf()+x
    assert (Catalan+x).evalf() == Catalan.evalf()+x
    assert (EulerGamma+x).evalf() == EulerGamma.evalf()+x
    assert (GoldenRatio+x).evalf() == GoldenRatio.evalf()+x
Beispiel #5
0
def test_issue_4611():
    assert abs(pi._evalf(50) - 3.14159265358979) < 1e-10
    assert abs(E._evalf(50) - 2.71828182845905) < 1e-10
    assert abs(Catalan._evalf(50) - 0.915965594177219) < 1e-10
    assert abs(EulerGamma._evalf(50) - 0.577215664901533) < 1e-10
    assert abs(GoldenRatio._evalf(50) - 1.61803398874989) < 1e-10
    x = Symbol("x")
    assert (pi + x).evalf() == pi.evalf() + x
    assert (E + x).evalf() == E.evalf() + x
    assert (Catalan + x).evalf() == Catalan.evalf() + x
    assert (EulerGamma + x).evalf() == EulerGamma.evalf() + x
    assert (GoldenRatio + x).evalf() == GoldenRatio.evalf() + x
Beispiel #6
0
def test_fcode_NumberSymbol():
    assert fcode(Catalan) == '      parameter (Catalan = 0.915965594177219)\n      Catalan'
    assert fcode(EulerGamma) == '      parameter (EulerGamma = 0.577215664901533)\n      EulerGamma'
    assert fcode(E) == '      parameter (E = 2.71828182845905)\n      E'
    assert fcode(GoldenRatio) == '      parameter (GoldenRatio = 1.61803398874989)\n      GoldenRatio'
    assert fcode(pi) == '      parameter (pi = 3.14159265358979)\n      pi'
    assert fcode(pi,precision=5) == '      parameter (pi = 3.1416)\n      pi'
    assert fcode(Catalan,human=False) == ([('Catalan', Catalan.evalf(15))], set([]), '      Catalan')
    assert fcode(EulerGamma,human=False) == ([('EulerGamma', EulerGamma.evalf(15))], set([]), '      EulerGamma')
    assert fcode(E,human=False) == ([('E', E.evalf(15))], set([]), '      E')
    assert fcode(GoldenRatio,human=False) == ([('GoldenRatio', GoldenRatio.evalf(15))], set([]), '      GoldenRatio')
    assert fcode(pi,human=False) == ([('pi', pi.evalf(15))], set([]), '      pi')
    assert fcode(pi,precision=5,human=False) == ([('pi', pi.evalf(5))], set([]), '      pi')
Beispiel #7
0
def test_fcode_NumberSymbol():
    p = FCodePrinter()
    assert fcode(Catalan) == '      parameter (Catalan = 0.915965594177219d0)\n      Catalan'
    assert fcode(EulerGamma) == '      parameter (EulerGamma = 0.577215664901533d0)\n      EulerGamma'
    assert fcode(E) == '      parameter (E = 2.71828182845905d0)\n      E'
    assert fcode(GoldenRatio) == '      parameter (GoldenRatio = 1.61803398874989d0)\n      GoldenRatio'
    assert fcode(pi) == '      parameter (pi = 3.14159265358979d0)\n      pi'
    assert fcode(pi,precision=5) == '      parameter (pi = 3.1416d0)\n      pi'
    assert fcode(Catalan,human=False) == (set([(Catalan, p._print(Catalan.evalf(15)))]), set([]), '      Catalan')
    assert fcode(EulerGamma,human=False) == (set([(EulerGamma, p._print(EulerGamma.evalf(15)))]), set([]), '      EulerGamma')
    assert fcode(E,human=False) == (set([(E, p._print(E.evalf(15)))]), set([]), '      E')
    assert fcode(GoldenRatio,human=False) == (set([(GoldenRatio, p._print(GoldenRatio.evalf(15)))]), set([]), '      GoldenRatio')
    assert fcode(pi,human=False) == (set([(pi, p._print(pi.evalf(15)))]), set([]), '      pi')
    assert fcode(pi,precision=5,human=False) == (set([(pi, p._print(pi.evalf(5)))]), set([]), '      pi')
Beispiel #8
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) == (set([
        (Catalan, p._print(Catalan.evalf(prec)))
    ]), set([]), '      Catalan')
    assert fcode(EulerGamma, human=False) == (set([
        (EulerGamma, p._print(EulerGamma.evalf(prec)))
    ]), set([]), '      EulerGamma')
    assert fcode(E, human=False) == (set([(E, p._print(E.evalf(prec)))]),
                                     set([]), '      E')
    assert fcode(GoldenRatio, human=False) == (set([
        (GoldenRatio, p._print(GoldenRatio.evalf(prec)))
    ]), set([]), '      GoldenRatio')
    assert fcode(pi, human=False) == (set([(pi, p._print(pi.evalf(prec)))]),
                                      set([]), '      pi')
    assert fcode(pi, precision=5, human=False) == (set([
        (pi, p._print(pi.evalf(5)))
    ]), set([]), '      pi')
Beispiel #9
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) == (set(
        [(Catalan, p._print(Catalan.evalf(prec)))]), set([]), '      Catalan')
    assert fcode(EulerGamma, human=False) == (set([(EulerGamma, p._print(
        EulerGamma.evalf(prec)))]), set([]), '      EulerGamma')
    assert fcode(E, human=False) == (
        set([(E, p._print(E.evalf(prec)))]), set([]), '      E')
    assert fcode(GoldenRatio, human=False) == (set([(GoldenRatio, p._print(
        GoldenRatio.evalf(prec)))]), set([]), '      GoldenRatio')
    assert fcode(pi, human=False) == (
        set([(pi, p._print(pi.evalf(prec)))]), set([]), '      pi')
    assert fcode(pi, precision=5, human=False) == (
        set([(pi, p._print(pi.evalf(5)))]), set([]), '      pi')
Beispiel #10
0
def main():
    setup_matplotlib_rc()

    expr = get_CRAM_from_cache(degree, prec)

    c = 1 / GoldenRatio.evalf() * degree

    # Get the translated approximation on [-1, 1]. This is similar logic from CRAM_exp().
    n, d = map(Poly, fraction(expr))
    inv = -c * (t + 1) / (t - 1)
    p, q = map(lambda i: Poly(i, t), fraction(inv))
    n, d = n.transform(p, q), d.transform(p, q)
    rat_func = n / d.TC() / (d / d.TC())
    rat_func = rat_func.evalf(prec)

    plt.clf()
    fig, (ax1, ax2) = plt.subplots(1, 2, sharey=False)
    fig.set_size_inches(1.5 * 6.4, 1.5 / 2 * 4.8)

    plot_in_terminal(rat_func - exp(-inv), (-1, 1.01),
                     prec=prec,
                     points=points,
                     axes=ax1)
    ax1.set_xlabel(r'$t$')
    ax1.set_ylabel(
        r'$\hat{r}_{14, 14}\left (c\frac{t+1}{t-1}\right ) - e^{-c\frac{t+1}{t-1}}$'
    )

    plot_in_terminal(expr - exp(-t), (0, 100),
                     prec=prec,
                     points=points,
                     axes=ax2)
    ax2.set_xlabel(r'$t$')
    ax2.set_ylabel(r'$\hat{r}_{14, 14}(t) - e^{-t}$')

    plt.tight_layout()
    plt.savefig('cram-plot.pgf')