ptolemy.actor.lib.conversions
Class Round
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.actor.lib.Transformer
ptolemy.actor.lib.conversions.Round
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
public class Round
- extends Transformer
Produce an output token on each firing with a value that is
equal to the specified rounded value of the input.
The input type is DoubleToken. The output type is IntToken.
The functions are a subset of those in the java.lang.Math class.
They are:
- ceil: Round towards positive infinity.
- floor: Round towards negative infinity.
- round: Round towards nearest integer. This is the
default behavior.
- truncate: Round towards zero.
If the input is NaN, then an exception is thrown.
The reason for this is that there is no way to represent a NaN
as an integer. Thus, even though java.lang.Math.round(Double.NaN)
returns 0, ceil(Double.NaN), floor(Double.NaN) and truncate(DoubleNaN) all
return a Double.NaN. However, this actor has an integer output,
so there is no way to represent the Double.NaN as an integer, so
we throw an exception.
- Since:
- Ptolemy II 1.0
- Version:
- $Id: Round.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- C. Fong, Contributor: Christopher Brooks
- See Also:
- Serialized Form
- Accepted Rating:
- Proposed Rating:
Fields inherited from class ptolemy.kernel.util.NamedObj |
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS |
Constructor Summary |
Round(CompositeEntity container,
java.lang.String name)
Construct an actor with the given container and name. |
Method Summary |
private int |
_doFunction(double in)
Calculate the function on the given argument. |
void |
attributeChanged(Attribute attribute)
Override the base class to determine which function is being
specified. |
java.lang.Object |
clone(Workspace workspace)
Clone the actor into the specified workspace. |
void |
fire()
This computes the specified rounded value of the input. |
int |
iterate(int count)
Invoke a specified number of iterations of this actor. |
boolean |
prefire()
Return false if there is no available input token, and otherwise
return whatever the superclass returns (presumably true). |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, isStrict, newReceiver, outputPortList, postfire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup |
Methods inherited from class ptolemy.kernel.ComponentEntity |
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName |
Methods inherited from class ptolemy.kernel.Entity |
_description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName |
Methods inherited from class ptolemy.kernel.util.NamedObj |
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace |
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
function
public StringAttribute function
- The rounding strategy to use. This is a string-valued parameter
that defaults to "round".
_resultArray
private IntToken[] _resultArray
_function
private int _function
_CEIL
private static final int _CEIL
- See Also:
- Constant Field Values
_FLOOR
private static final int _FLOOR
- See Also:
- Constant Field Values
_ROUND
private static final int _ROUND
- See Also:
- Constant Field Values
_TRUNCATE
private static final int _TRUNCATE
- See Also:
- Constant Field Values
Round
public Round(CompositeEntity container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Construct an actor with the given container and name.
- Parameters:
container
- The container.name
- The name of this actor.
- Throws:
NameDuplicationException
- If the container already has an
actor with this name.
IllegalActionException
- If the actor cannot be contained
by the proposed container.
attributeChanged
public void attributeChanged(Attribute attribute)
throws IllegalActionException
- Override the base class to determine which function is being
specified.
- Overrides:
attributeChanged
in class NamedObj
- Parameters:
attribute
- The attribute that changed.
- Throws:
IllegalActionException
- If the function is not recognized.
clone
public java.lang.Object clone(Workspace workspace)
throws java.lang.CloneNotSupportedException
- Clone the actor into the specified workspace.
- Overrides:
clone
in class AtomicActor
- Parameters:
workspace
- The workspace for the new object.
- Returns:
- A new actor.
- Throws:
java.lang.CloneNotSupportedException
- If a derived class contains
an attribute that cannot be cloned.- See Also:
NamedObj.exportMoML(Writer, int, String)
,
NamedObj.setDeferringChangeRequests(boolean)
fire
public void fire()
throws IllegalActionException
- This computes the specified rounded value of the input.
This consumes and produces at most one token for each firing.
If there is no input, then produce no output.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
- Throws:
IllegalActionException
- If there is no director,
or if the input is NaN.
iterate
public int iterate(int count)
throws IllegalActionException
- Invoke a specified number of iterations of this actor. Each
iteration computes the rounding function specified by the
function attribute on a single token. An invocation
of this method therefore applies the function to count
successive input tokens.
This method should be called instead of the usual prefire(),
fire(), postfire() methods when this actor is used in a
domain that supports vectorized actors. This leads to more
efficient execution.
- Specified by:
iterate
in interface Executable
- Overrides:
iterate
in class AtomicActor
- Parameters:
count
- The number of iterations to perform.
- Returns:
- COMPLETED if the actor was successfully iterated the
specified number of times. Otherwise, return NOT_READY, and do
not consume any input tokens.
- Throws:
IllegalActionException
- Not thrown in this base class.
prefire
public boolean prefire()
throws IllegalActionException
- Return false if there is no available input token, and otherwise
return whatever the superclass returns (presumably true).
- Specified by:
prefire
in interface Executable
- Overrides:
prefire
in class AtomicActor
- Returns:
- True if this actor is ready for firing, false otherwise.
- Throws:
IllegalActionException
- If there is no director.
_doFunction
private int _doFunction(double in)
- Calculate the function on the given argument.
- Parameters:
in
- The input value.
- Returns:
- The result of applying the function.