From 74163cb1a16fea413fc4210cdfe0ca13495a7350 Mon Sep 17 00:00:00 2001 From: Alan Hu Date: Sat, 24 Feb 2018 22:33:32 -0600 Subject: [PATCH 1/5] Added Latex functions --- symengine/__init__.py | 2 +- symengine/lib/symengine.pxd | 3 +++ symengine/lib/symengine_wrapper.pyx | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/symengine/__init__.py b/symengine/__init__.py index 2e66f867b..108ad41a8 100644 --- a/symengine/__init__.py +++ b/symengine/__init__.py @@ -11,7 +11,7 @@ LessThan, StrictGreaterThan, StrictLessThan, Eq, Ne, Ge, Le, Gt, Lt, golden_ratio as GoldenRatio, catalan as Catalan, eulergamma as EulerGamma, Dummy, perfect_power, integer_nthroot, - isprime, sqrt_mod, Expr, cse) + isprime, sqrt_mod, Expr, cse, latex) from .utilities import var, symbols from .functions import * diff --git a/symengine/lib/symengine.pxd b/symengine/lib/symengine.pxd index c9918752a..833e5e9a8 100644 --- a/symengine/lib/symengine.pxd +++ b/symengine/lib/symengine.pxd @@ -1037,3 +1037,6 @@ cdef extern from "" namespace "SymEngine": cdef extern from "" namespace "SymEngine": cdef RCP[const Set] solve(rcp_const_basic &f, RCP[const Symbol] &sym) nogil except + cdef RCP[const Set] solve(rcp_const_basic &f, RCP[const Symbol] &sym, RCP[const Set] &domain) nogil except + + +cdef extern from "" namespace "SymEngine": + string latex(const Basic &x) nogil except + diff --git a/symengine/lib/symengine_wrapper.pyx b/symengine/lib/symengine_wrapper.pyx index 9a93e5eed..2ea95aa30 100644 --- a/symengine/lib/symengine_wrapper.pyx +++ b/symengine/lib/symengine_wrapper.pyx @@ -4875,6 +4875,9 @@ def cse(exprs): symengine.cse(replacements, reduced_exprs, vec) return (vec_pair_to_list(replacements), vec_basic_to_list(reduced_exprs)) +def latex(expr): + cdef Basic expr_ = sympify(expr) + return symengine.latex(deref(expr_.thisptr)).decode("utf-8") # Turn on nice stacktraces: symengine.print_stack_on_segfault() From 30332c42c1840fd9223aea12c3bbeff27a5be246 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Sat, 24 Feb 2018 23:40:56 -0600 Subject: [PATCH 2/5] Rendering for jupyter --- symengine/lib/symengine_wrapper.pyx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/symengine/lib/symengine_wrapper.pyx b/symengine/lib/symengine_wrapper.pyx index 2ea95aa30..bb6cabd38 100644 --- a/symengine/lib/symengine_wrapper.pyx +++ b/symengine/lib/symengine_wrapper.pyx @@ -782,6 +782,12 @@ cdef class Basic(object): def __repr__(self): return self.__str__() + def _repr_latex_(self): + try: + return "${}$".format(latex(self)) + except: + return None + def __hash__(self): return deref(self.thisptr).hash() From 085a2cbaecf421485c40e9cf27a8db73e64bf358 Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Mon, 24 Dec 2018 17:58:00 -0600 Subject: [PATCH 3/5] Add init_printing --- symengine/__init__.py | 1 + symengine/lib/symengine_wrapper.pyx | 6 ++++-- symengine/printing.py | 10 ++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/symengine/__init__.py b/symengine/__init__.py index b8921dad8..dae8a6050 100644 --- a/symengine/__init__.py +++ b/symengine/__init__.py @@ -19,6 +19,7 @@ ) from .utilities import var, symbols from .functions import * +from .printing import init_printing if have_mpfr: from .lib.symengine_wrapper import RealMPFR diff --git a/symengine/lib/symengine_wrapper.pyx b/symengine/lib/symengine_wrapper.pyx index bdfef1969..041a850b1 100644 --- a/symengine/lib/symengine_wrapper.pyx +++ b/symengine/lib/symengine_wrapper.pyx @@ -774,6 +774,8 @@ cdef list vec_pair_to_list(symengine.vec_pair& vec): return result +repr_latex=[False] + cdef class Basic(object): def __str__(self): @@ -783,9 +785,9 @@ cdef class Basic(object): return self.__str__() def _repr_latex_(self): - try: + if repr_latex[0]: return "${}$".format(latex(self)) - except: + else: return None def __hash__(self): diff --git a/symengine/printing.py b/symengine/printing.py index a78ed5b92..c6a06ef91 100644 --- a/symengine/printing.py +++ b/symengine/printing.py @@ -1,4 +1,5 @@ from symengine.lib.symengine_wrapper import ccode, sympify, Basic +import symengine.lib.symengine_wrapper class CCodePrinter: @@ -22,3 +23,12 @@ def doprint(self, expr, assign_to=None): code_line = '{}[{}] = {};'.format(assign_to, i, element) code_lines.append(code_line) return '\n'.join(code_lines) + + +def init_printing(pretty_print=True, use_latex=True): + if pretty_print: + if not use_latex: + raise RuntimeError("Only latex is supported for pretty printing") + symengine.lib.symengine_wrapper.repr_latex[0] = True + else: + symengine.lib.symengine_wrapper.repr_latex[0] = False From 85f2afbe6eb183d00bba43d3f1c2cac5447554ce Mon Sep 17 00:00:00 2001 From: Isuru Fernando Date: Mon, 24 Dec 2018 17:58:45 -0600 Subject: [PATCH 4/5] Update symengine version --- symengine_version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symengine_version.txt b/symengine_version.txt index cd77c1028..bce143fc5 100644 --- a/symengine_version.txt +++ b/symengine_version.txt @@ -1 +1 @@ -9b604b2757aa09ae9d2286510eaf4b75d9b2b796 +9ef48f32501bc66c5111672b4a1964d98a9fd253 From ab19dbb98234c69f4f568fa6f71ce565cd7fb456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Dahlgren?= Date: Tue, 25 Dec 2018 11:25:55 +0100 Subject: [PATCH 5/5] Update symengine hash --- symengine_version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symengine_version.txt b/symengine_version.txt index bce143fc5..659e06c55 100644 --- a/symengine_version.txt +++ b/symengine_version.txt @@ -1 +1 @@ -9ef48f32501bc66c5111672b4a1964d98a9fd253 +85c78dafe7829408f69c3bc0df7408d78ef96298