示例#1
0
def transform_index(expr):
    return expression.linear_map(
        linear_map.kronecker_product(
            linear_map.index(expr.key[1], dim(only_arg(expr), 1)), linear_map.index(expr.key[0], dim(only_arg(expr), 0))
        ),
        transform_expr(only_arg(expr)),
    )
示例#2
0
def transform_hstack(expr):
    m = dim(expr, 0)
    n = dim(expr, 1)
    offset = 0
    add_args = []
    for arg in expr.arg:
        ni = dim(arg, 1)
        add_args.append(
            expression.linear_map(
                linear_map.right_matrix_product(linear_map.index(slice(offset, offset + ni), n), m), transform_expr(arg)
            )
        )
        offset += ni
    return expression.add(*add_args)
示例#3
0
文件: linear.py 项目: mfouda/epsilon
def transform_hstack(expr):
    m = dim(expr, 0)
    n = dim(expr, 1)
    offset = 0
    add_args = []
    for arg in expr.arg:
        ni = dim(arg, 1)
        add_args.append(
            expression.linear_map(
                linear_map.right_matrix_product(
                    linear_map.index(slice(offset, offset + ni), n), m),
                transform_expr(arg)))
        offset += ni
    return expression.add(*add_args)
示例#4
0
文件: linear.py 项目: mfouda/epsilon
def transform_vstack(expr):
    m = dim(expr, 0)
    n = dim(expr, 1)
    offset = 0
    add_args = []
    for arg in expr.arg:
        mi = dim(arg, 0)

        add_args.append(
            expression.linear_map(
                linear_map.left_matrix_product(
                    linear_map.transpose(
                        linear_map.index(slice(offset, offset + mi), m)), n),
                transform_expr(arg)))
        offset += mi
    return expression.add(*add_args)
示例#5
0
def transform_vstack(expr):
    m = dim(expr, 0)
    n = dim(expr, 1)
    offset = 0
    add_args = []
    for arg in expr.arg:
        mi = dim(arg, 0)

        add_args.append(
            expression.linear_map(
                linear_map.left_matrix_product(
                    linear_map.transpose(
                        linear_map.index(slice(offset, offset+mi), m)),
                    n),
                transform_expr(arg)))
        offset += mi
    return expression.add(*add_args)
示例#6
0
文件: linear.py 项目: mfouda/epsilon
def transform_index(expr):
    return expression.linear_map(
        linear_map.kronecker_product(
            linear_map.index(expr.key[1], dim(only_arg(expr), 1)),
            linear_map.index(expr.key[0], dim(only_arg(expr), 0))),
        transform_expr(only_arg(expr)))