Skip to content
Snippets Groups Projects
Select Git revision
  • const_fix
  • master default protected
  • develop
  • UpSympy
  • struct
  • FixMod
  • testing
  • VecSparse
  • dev
  • FixDoc
  • SmallFixes
  • UpgradeSympy
  • Revision3
  • TypeSystem
  • BenchMarkCUDA
  • SmallPolish
  • Testing
  • testConda
  • int64
  • assembly
  • warnings
  • release/1.3.6
  • release/2.0.dev0
  • release/1.3.5
  • release/1.3.4
  • release/1.3.3
  • release/1.3.2
  • release/1.3.1
  • release/1.3
  • release/1.2
  • release/1.1.1
  • release/1.1
  • release/1.0.1
  • release/1.0
  • release/0.4.4
  • last/Kerncraft
  • last/OpenCL
  • last/LLVM
  • release/0.4.3
  • release/0.4.2
  • release/0.4.1
41 results

README.md

Blame
  • Forked from pycodegen / pystencils
    Source project has a limited visibility.
    test_match_subs_for_assignment_collection.py 2.41 KiB
    # -*- coding: utf-8 -*-
    #
    # Copyright © 2019 Stephan Seitz <stephan.seitz@fau.de>
    #
    # Distributed under terms of the GPLv3 license.
    
    """
    
    """
    
    import sympy as sp
    
    import pystencils
    from pystencils.data_types import create_type
    
    
    def test_wild_typed_symbol():
        x = pystencils.fields('x:  float32[3d]')
        typed_symbol = pystencils.data_types.TypedSymbol('a', create_type('float64'))
    
        assert x.center().match(sp.Wild('w1'))
        assert typed_symbol.match(sp.Wild('w1'))
    
        wild_ceiling = sp.ceiling(sp.Wild('w1'))
        assert sp.ceiling(x.center()).match(wild_ceiling)
        assert sp.ceiling(typed_symbol).match(wild_ceiling)
    
    
    def test_replace_and_subs_for_assignment_collection():
    
        x, y = pystencils.fields('x, y:  float32[3d]')
        a, b, c, d = sp.symbols('a, b, c, d')
    
        assignments = pystencils.AssignmentCollection({
            a: sp.floor(1),
            b: 2,
            c: a + c,
            y.center(): sp.ceiling(x.center()) + sp.floor(x.center())
        })
    
        expected_assignments = pystencils.AssignmentCollection({
            a: sp.floor(3),
            b: 2,
            c: a + c,
            y.center(): sp.ceiling(x.center()) + sp.floor(x.center())
        })
    
        assert expected_assignments == assignments.replace(1, 3)
        assert expected_assignments == assignments.subs({1: 3})
    
        expected_assignments = pystencils.AssignmentCollection({
            d: sp.floor(1),
            b: 2,
            c: d + c,
            y.center(): sp.ceiling(x.center()) + sp.floor(x.center())
        })
    
        print(expected_assignments)
        print(assignments.subs(a, d))
        assert expected_assignments == assignments.subs(a, d)
    
    
    def test_match_for_assignment_collection():
    
        x, y = pystencils.fields('x, y:  float32[3d]')
        a, b, c, d = sp.symbols('a, b, c, d')
    
        assignments = pystencils.AssignmentCollection({
            a: sp.floor(1),
            b: 2,
            c: a + c,
            y.center(): sp.ceiling(x.center()) + sp.floor(x.center())
        })
    
        w1 = sp.Wild('w1')
        w2 = sp.Wild('w2')
        w3 = sp.Wild('w3')
    
        wild_ceiling = sp.ceiling(w1)
        wild_addition = w1 + w2
    
        assert assignments.match(pystencils.Assignment(w3, wild_ceiling + w2))[w1] == x.center()
        assert assignments.match(pystencils.Assignment(w3, wild_ceiling + w2)) == {
            w3: y.center(),
            w2: sp.floor(x.center()),
            w1: x.center()
        }
        assert assignments.find(wild_ceiling) == {sp.ceiling(x.center())}
        assert len([a for a in assignments.find(wild_addition) if isinstance(a, sp.Add)]) == 2