at.dms.kjc.sir.linear.transform
Class LinearTransformPipeline

java.lang.Object
  extended by at.dms.kjc.sir.linear.transform.LinearTransform
      extended by at.dms.kjc.sir.linear.transform.LinearTransformPipeline

public class LinearTransformPipeline
extends LinearTransform

Represents a pipeline combination transform. Combines two filter that come one after another in a pipeline into a single filter that does the same work. This combination might require each of the individual filters to be expanded by some factor, and then a matrix multiplication can be performed. See the pldi-03-linear paper or Andrew's thesis for more information.
$Id: LinearTransformPipeline.java,v 1.11 2006/09/25 13:54:42 dimock Exp $


Method Summary
static LinearTransform calculate(List<LinearFilterRepresentation> linearRepList)
          Sets up the calculation of the overall linear representation of a sequential list of linear representations.
If filter one computes y = xA1 + b1 and filter 2 computes y=xA2 + b2 then the overall filter filter1 --> filter 2 will compute y = (xA1 + b1)A2 + b2 = xA1A2 + (b1A2 + b2), which itself can be represented with the LFR: A = A1A2 and b = (b1A2 + b2).
There are a bunch of subtlties involved with computing the overall representation due to various size restrictions (eg the sizes of the matrices have to be compatible.
 LinearFilterRepresentation transform()
          Actually implements the specific transform.
 
Methods inherited from class at.dms.kjc.sir.linear.transform.LinearTransform
divCeiling, gcd, gcd, lcm, lcm
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

transform

public LinearFilterRepresentation transform()
                                     throws NoTransformPossibleException
Description copied from class: LinearTransform
Actually implements the specific transform. Returns a LinearFilterRepresentation that results from applying the appropriate transformation.

Specified by:
transform in class LinearTransform
Throws:
NoTransformPossibleException

calculate

public static LinearTransform calculate(List<LinearFilterRepresentation> linearRepList)
Sets up the calculation of the overall linear representation of a sequential list of linear representations.
If filter one computes y = xA1 + b1 and filter 2 computes y=xA2 + b2 then the overall filter filter1 --> filter 2 will compute y = (xA1 + b1)A2 + b2 = xA1A2 + (b1A2 + b2), which itself can be represented with the LFR: A = A1A2 and b = (b1A2 + b2).
There are a bunch of subtlties involved with computing the overall representation due to various size restrictions (eg the sizes of the matrices have to be compatible. See the pldi-03-linear paper for the gory details.