Skip to content
Snippets Groups Projects
Select Git revision
  • 01ab38e8f64cb4f79ce38da531570d34b6248888
  • master default protected
  • v2.0-dev protected
  • zikeliml/Task-96-dotExporterForAST
  • zikeliml/124-rework-tutorials
  • fma
  • fhennig/v2.0-deprecations
  • holzer-master-patch-46757
  • 66-absolute-access-is-probably-not-copied-correctly-after-_eval_subs
  • gpu_bufferfield_fix
  • hyteg
  • vectorization_sqrt_fix
  • target_dh_refactoring
  • const_fix
  • improved_comm
  • gpu_liveness_opts
  • release/1.3.7 protected
  • release/1.3.6 protected
  • release/2.0.dev0 protected
  • release/1.3.5 protected
  • release/1.3.4 protected
  • release/1.3.3 protected
  • release/1.3.2 protected
  • release/1.3.1 protected
  • release/1.3 protected
  • release/1.2 protected
  • release/1.1.1 protected
  • release/1.1 protected
  • release/1.0.1 protected
  • release/1.0 protected
  • release/0.4.4 protected
  • last/Kerncraft
  • last/OpenCL
  • last/LLVM
  • release/0.4.3 protected
  • release/0.4.2 protected
36 results

assignment.py

Blame
  • assignment.py 1.61 KiB
    # -*- coding: utf-8 -*-
    import sympy as sp
    from sympy.printing.latex import LatexPrinter
    
    try:
        from sympy.codegen.ast import Assignment
    except ImportError:
        Assignment = None
    
    __all__ = ['Assignment']
    
    
    def print_assignment_latex(printer, expr):
        """sympy cannot print Assignments as Latex. Thus, this function is added to the sympy Latex printer"""
        printed_lhs = printer.doprint(expr.lhs)
        printed_rhs = printer.doprint(expr.rhs)
        return "{printed_lhs} \leftarrow {printed_rhs}".format(printed_lhs=printed_lhs, printed_rhs=printed_rhs)
    
    
    def assignment_str(assignment):
        return "{lhs} ← {rhs}".format(lhs=assignment.lhs, rhs=assignment.rhs)
    
    
    if Assignment:
    
        Assignment.__str__ = assignment_str
        LatexPrinter._print_Assignment = print_assignment_latex
    
    else:
        # back port for older sympy versions that don't have Assignment  yet
    
        class Assignment(sp.Rel):
    
            rel_op = ':='
            __slots__ = []
    
            def __new__(cls, lhs, rhs=0, **assumptions):
                from sympy.matrices.expressions.matexpr import (
                    MatrixElement, MatrixSymbol)
                from sympy.tensor.indexed import Indexed
                lhs = sp.sympify(lhs)
                rhs = sp.sympify(rhs)
                # Tuple of things that can be on the lhs of an assignment
                assignable = (sp.Symbol, MatrixSymbol, MatrixElement, Indexed)
                if not isinstance(lhs, assignable):
                    raise TypeError("Cannot assign to lhs of type %s." % type(lhs))
                return sp.Rel.__new__(cls, lhs, rhs, **assumptions)
    
            __str__ = assignment_str
            _print_Assignment = print_assignment_latex