Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > a47f0719970f9f829128f311a437816d > files > 189

ghc-ForSyDe-devel-3.1.1-4.fc14.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>ForSyDe.Shallow.CTLib</TITLE
><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
></SCRIPT
><SCRIPT TYPE="text/javascript"
>window.onload = function () {setSynopsis("mini_ForSyDe-Shallow-CTLib.html")};</SCRIPT
></HEAD
><BODY
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="topbar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
></TD
><TD CLASS="title"
>ForSyDe-3.1.1: ForSyDe's Haskell-embedded Domain Specific Language.</TD
><TD CLASS="topbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html"
>Source code</A
></TD
><TD CLASS="topbut"
><A HREF="index.html"
>Contents</A
></TD
><TD CLASS="topbut"
><A HREF="doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="modulebar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><FONT SIZE="6"
>ForSyDe.Shallow.CTLib</FONT
></TD
><TD ALIGN="right"
><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="infohead"
>Portability</TD
><TD CLASS="infoval"
>portable</TD
></TR
><TR
><TD CLASS="infohead"
>Stability</TD
><TD CLASS="infoval"
>experimental</TD
></TR
><TR
><TD CLASS="infohead"
>Maintainer</TD
><TD CLASS="infoval"
>forsyde-dev@ict.kth.se</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
><B
>Contents</B
></TD
></TR
><TR
><TD
><DL
><DT
><A HREF="#1"
>The signal data type
</A
></DT
><DT
><A HREF="#2"
>Primary process constructors
</A
></DT
><DT
><A HREF="#3"
>Derived process constructors
</A
></DT
><DT
><A HREF="#4"
>Convenient functions and processes
</A
></DT
><DT
><A HREF="#5"
>AD and DA converters
</A
></DT
><DT
><A HREF="#6"
>Some helper functions
</A
></DT
><DT
><A HREF="#7"
>Sampling, printing and plotting
</A
></DT
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Description</TD
></TR
><TR
><TD CLASS="doc"
><P
>This is the ForSyDe library for continuous time MoC (CT-MoC).
 Revision: $Revision: 1.7 $
 Id: $Id: CTLib.hs,v 1.7 2007<EM
>07</EM
>11 08:38:34 axel Exp $
 It is still experimental.
 Right now there are only constructors <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AcombCT"
>combCT</A
></TT
>, <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AcombCT2"
>combCT2</A
></TT
>, <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AdelayCT"
>delayCT</A
></TT
>, 
 <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AshiftCT"
>shiftCT</A
></TT
>, <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AmealyCT"
>mealyCT</A
></TT
>, <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AmooreCT"
>mooreCT</A
></TT
>, <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AscaleCT"
>scaleCT</A
></TT
>, <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AaddCT"
>addCT</A
></TT
>, <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AmultCT"
>multCT</A
></TT
> and <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AabsCT"
>absCT</A
></TT
>.
</P
><P
>The main idea is to represent continuous time signals as functions
 <TT
>Real --&gt; a</TT
> with <TT
>a</TT
> being a numerical type. This allows us to represent a 
 continuous time signal without loss of information because no sampling or 
 ADC is required. The sampling occurs only when a signal is evaluated, 
 for instance when it is plotted. 
</P
><P
>Thus, a <EM
>signal</EM
> is represented as a sequence of functions and intervals. For
 instance a signal 
</P
><PRE
>s = &lt;(sin,[0,100])&gt;</PRE
><P
>represents a sinus signal in the interval between 0 and 100. The signal 
</P
><PRE
>s2 = &lt;(f1(x)=2x, [0,2]), (f2(x)=3+x,[2,4])&gt;</PRE
><P
>defines a signal that is defined by function <TT
>f1</TT
> in the interval <TT
>[0,2]</TT
> 
 and by function <TT
>f2</TT
> in the interval <TT
>[2,4]</TT
>. 
</P
><P
>A <EM
>process</EM
> transforms the incoming functions into outgoing functions. 
 The approach is described in more detail in the ANDRES deliverable D1.1a.
 Here we only briefly comment the main functions and constructors.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Synopsis</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="#t%3ASubsigCT"
>SubsigCT</A
> a = <A HREF="#v%3ASubsigCT"
>SubsigCT</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a, (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
>, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
>))</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AtimeStep"
>timeStep</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AcombCT"
>combCT</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; ((<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AcombCT2"
>combCT2</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; ((<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a) -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmooreCT"
>mooreCT</A
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> b, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> c) =&gt; (a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
>) -&gt; (a -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; b) -&gt; a) -&gt; (a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; c) -&gt; a -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> b) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> c)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmealyCT"
>mealyCT</A
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> b, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> c) =&gt; (a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
>) -&gt; (a -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; b) -&gt; a) -&gt; (a -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; b) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; c) -&gt; a -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> b) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> c)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AdelayCT"
>delayCT</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AshiftCT"
>shiftCT</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AinitCT"
>initCT</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AscaleCT"
>scaleCT</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; a -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AaddCT"
>addCT</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmultCT"
>multCT</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AabsCT"
>absCT</A
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd"
>Ord</A
> a) =&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AtakeCT"
>takeCT</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AdropCT"
>dropCT</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aduration"
>duration</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AstartTime"
>startTime</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AsineWave"
>sineWave</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AFloating"
>Floating</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
>, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
>) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AconstCT"
>constCT</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AzeroCT"
>zeroCT</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>data</SPAN
>  <A HREF="#t%3ADACMode"
>DACMode</A
>  </TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
>= <A HREF="#v%3ADAlinear"
>DAlinear</A
></TD
></TR
><TR
><TD CLASS="decl"
>| <A HREF="#v%3ADAhold"
>DAhold</A
></TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aa2dConverter"
>a2dConverter</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Ad2aConverter"
>d2aConverter</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AFractional"
>Fractional</A
> a =&gt; <A HREF="ForSyDe-Shallow-CTLib.html#t%3ADACMode"
>DACMode</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> a -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AapplyF1"
>applyF1</A
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> b) =&gt; ((<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; b) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> b)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AapplyF2"
>applyF2</A
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> b, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> c) =&gt; ((<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a) -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; b) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; c) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> b) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> c)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AapplyG1"
>applyG1</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> b =&gt; (a -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; b) -&gt; a) -&gt; a -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> b) -&gt; a</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AcutEq"
>cutEq</A
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> b) =&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> b) -&gt; (<A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a), <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> b))</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Aplot"
>plot</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AplotCT"
>plotCT</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; [<A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)] -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AplotCT%27"
>plotCT'</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; [(<A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a), <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>)] -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AshowParts"
>showParts</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; [(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ADouble"
>Double</A
>, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ADouble"
>Double</A
>)]</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AvcdGen"
>vcdGen</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; [(<A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a), <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>)] -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="1"
><A NAME="1"
>The signal data type
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>data</SPAN
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A NAME="t:SubsigCT"
><A NAME="t%3ASubsigCT"
></A
></A
><B
>SubsigCT</B
> a </TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#SubsigCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>The type of a sub-signal of a continuous signal. It consisits of the 
  function and the interval on which the function is defined.
 The continuous time signal is then defined as a sequence of SubsigCT 
 elements: Signal SubsigCT
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:SubsigCT"
><A NAME="v%3ASubsigCT"
></A
></A
><B
>SubsigCT</B
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a, (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
>, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
>))</TD
><TD CLASS="rdoc"
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:SubsigCT')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:SubsigCT" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow"
>Show</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:timeStep"
><A NAME="v%3AtimeStep"
></A
></A
><B
>timeStep</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#timeStep"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>This constant gives the default time step for sampling and plotting.
 Its value is 10ns.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="2"
><A NAME="2"
>Primary process constructors
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:combCT"
><A NAME="v%3AcombCT"
></A
></A
><B
>combCT</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#combCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="rdoc"
>The partitioning of the input signal. In other words
 this gives the time period which is consumed by the
 process during each evaluation cycle.
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a</TD
><TD CLASS="rdoc"
>The function that 
 defines the process 
 behaviour
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The input signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The output signal of the process.
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AcombCT"
>combCT</A
></TT
> is a process constructor with one input and one output signal.
 It instantiates a combinatorial, stateless process.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:combCT2"
><A NAME="v%3AcombCT2"
></A
></A
><B
>combCT2</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#combCT2"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="rdoc"
>The partitioning of both input signals
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a) -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a</TD
><TD CLASS="rdoc"
>The function defining the process behaviour.
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The first input signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The second input signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The output signal of the process
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AcombCT2"
>combCT2</A
></TT
> is a process constructor just like <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AcombCT"
>combCT</A
></TT
> but operates on
 two input signals.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:mooreCT"
><A NAME="v%3AmooreCT"
></A
></A
><B
>mooreCT</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#mooreCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> b, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> c)</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="rdoc"
>The gamma function which defines
 the partitioning of the input
 signal. 
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; a -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; b) -&gt; a</TD
><TD CLASS="rdoc"
>The next state function g
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; c</TD
><TD CLASS="rdoc"
>The output encoding function f 
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; a</TD
><TD CLASS="rdoc"
>The initial state
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> b)</TD
><TD CLASS="rdoc"
>The input signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> c)</TD
><TD CLASS="rdoc"
>The output signal
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>The state-full constructor <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AmooreCT"
>mooreCT</A
></TT
> resembles a Moore machine.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:mealyCT"
><A NAME="v%3AmealyCT"
></A
></A
><B
>mealyCT</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#mealyCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> b, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> c)</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; a -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="rdoc"
>The gamma function which defines
 the partitioning of the input
 signal. 
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; a -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; b) -&gt; a</TD
><TD CLASS="rdoc"
>The next state function g
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; a -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; b) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; c</TD
><TD CLASS="rdoc"
>The output encoding function f 
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; a</TD
><TD CLASS="rdoc"
>The initial state
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> b)</TD
><TD CLASS="rdoc"
>The input signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> c)</TD
><TD CLASS="rdoc"
>The output signal
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>The state-full constructor <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AmealyCT"
>mealyCT</A
></TT
> resembles a Mealy machine.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:delayCT"
><A NAME="v%3AdelayCT"
></A
></A
><B
>delayCT</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#delayCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="rdoc"
>The delay
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The input signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The output signal
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AdelayCT"
>delayCT</A
></TT
> is a delay process which simply delays the
 output but does not buffer it. The value at each time t is the same as 
 for the input signal, after the initial delay.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:shiftCT"
><A NAME="v%3AshiftCT"
></A
></A
><B
>shiftCT</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#shiftCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="rdoc"
>The delay
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The input signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The output signal
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AshiftCT"
>shiftCT</A
></TT
>  shifts the shape of the input signal by delay 
 to the right.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:initCT"
><A NAME="v%3AinitCT"
></A
></A
><B
>initCT</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#initCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The initial signal output first.
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>Then this signal is output, but delayed.
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The concatation of the two inputs.
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>initCT takes an initial signal, outputs it and then copies its second 
 input signal, which is delayed by the duration of the initial signal.
 The delay is realized by <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AdelayCT"
>delayCT</A
></TT
> 
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="3"
><A NAME="3"
>Derived process constructors
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="doc"
>These constructors instantiate very useful processes.
 They could be defined in terms of the basic constructors
 but are typically defined in a more direct way for 
 the sake of efficieny.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:scaleCT"
><A NAME="v%3AscaleCT"
></A
></A
><B
>scaleCT</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#scaleCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; a</TD
><TD CLASS="rdoc"
>The scaling factor
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The input signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The output signal of the process
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AscaleCT"
>scaleCT</A
></TT
> amplifies an input by a constant factor:
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:addCT"
><A NAME="v%3AaddCT"
></A
></A
><B
>addCT</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#addCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The first input signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The second input signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The output signal
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AaddCT"
>addCT</A
></TT
> adds two input signals together.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:multCT"
><A NAME="v%3AmultCT"
></A
></A
><B
>multCT</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#multCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The first input signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The second input signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The output signal
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AmultCT"
>multCT</A
></TT
> multiplies two input signals together.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:absCT"
><A NAME="v%3AabsCT"
></A
></A
><B
>absCT</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#absCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Ord.html#t%3AOrd"
>Ord</A
> a)</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The input signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The output signal
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AabsCT"
>absCT</A
></TT
> takes the absolute value of a signal.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="4"
><A NAME="4"
>Convenient functions and processes
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="doc"
>Several helper functions are available to obtain parts
 of a signal, the duration, the start time of a signal, and
 to generate a sine wave and constant signals.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:takeCT"
><A NAME="v%3AtakeCT"
></A
></A
><B
>takeCT</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#takeCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:dropCT"
><A NAME="v%3AdropCT"
></A
></A
><B
>dropCT</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#dropCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:duration"
><A NAME="v%3Aduration"
></A
></A
><B
>duration</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#duration"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:startTime"
><A NAME="v%3AstartTime"
></A
></A
><B
>startTime</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a =&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#startTime"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:sineWave"
><A NAME="v%3AsineWave"
></A
></A
><B
>sineWave</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#sineWave"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AFloating"
>Floating</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="rdoc"
>The frequency
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
>, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
>)</TD
><TD CLASS="rdoc"
>The interval of the signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The generated signal
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AsineWave"
>sineWave</A
></TT
> generates a sinus signal with the given frequency defined
 over  a given period. The function is defined as <TT
>f(x)=sin(2*pi*freq*x)</TT
>.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:constCT"
><A NAME="v%3AconstCT"
></A
></A
><B
>constCT</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#constCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="rdoc"
>The time duration of the generated signal.
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; a</TD
><TD CLASS="rdoc"
>The constant value of the signal.
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The resulting signal.
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>constCT generates a constant signal for a given time duration.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:zeroCT"
><A NAME="v%3AzeroCT"
></A
></A
><B
>zeroCT</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#zeroCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="rdoc"
>The time duration
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The generated signal.
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>zeroCT generates a constant 0 signal for the given time duration.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="5"
><A NAME="5"
>AD and DA converters
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>data</SPAN
>  <A NAME="t:DACMode"
><A NAME="t%3ADACMode"
></A
></A
><B
>DACMode</B
>  </TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#DACMode"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="ndoc"
>For the digital-analog conversion we have two different possibilities
 which is determined by this data type <TT
><A HREF="ForSyDe-Shallow-CTLib.html#t%3ADACMode"
>DACMode</A
></TT
>.
</TD
></TR
><TR
><TD CLASS="section4"
>Constructors</TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="arg"
><A NAME="v:DAlinear"
><A NAME="v%3ADAlinear"
></A
></A
><B
>DAlinear</B
></TD
><TD CLASS="rdoc"
>linear interpolation
</TD
></TR
><TR
><TD CLASS="arg"
><A NAME="v:DAhold"
><A NAME="v%3ADAhold"
></A
></A
><B
>DAhold</B
></TD
><TD CLASS="rdoc"
>the last digital value is frozen
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="section4"
><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:DACMode')" ALT="show/hide"
> Instances</TD
></TR
><TR
><TD CLASS="body"
><DIV ID="i:DACMode" STYLE="display:block;"
><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0"
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Eq.html#t%3AEq"
>Eq</A
> <A HREF="ForSyDe-Shallow-CTLib.html#t%3ADACMode"
>DACMode</A
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Text-Show.html#t%3AShow"
>Show</A
> <A HREF="ForSyDe-Shallow-CTLib.html#t%3ADACMode"
>DACMode</A
></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:a2dConverter"
><A NAME="v%3Aa2dConverter"
></A
></A
><B
>a2dConverter</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#a2dConverter"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="rdoc"
>Sampling Period
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>Input signal (continuous time)
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> a</TD
><TD CLASS="rdoc"
>Output signal (untimed)
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><P
>The process <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3Aa2dConverter"
>a2dConverter</A
></TT
> converts a continuous time signal to
   an untimed or synchronous signal. The first parameter gives the
   sampling period of the converter.
</P
><P
>Note, that the process <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3Aa2dConverter"
>a2dConverter</A
></TT
> is an ideal component,
   i.e. there are no losses due to a limited resolution due to a fixed
   number of bits.  
</P
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:d2aConverter"
><A NAME="v%3Ad2aConverter"
></A
></A
><B
>d2aConverter</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#d2aConverter"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3AFractional"
>Fractional</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="ForSyDe-Shallow-CTLib.html#t%3ADACMode"
>DACMode</A
></TD
><TD CLASS="rdoc"
>Mode of conversion
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="rdoc"
>Duration of input signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> a</TD
><TD CLASS="rdoc"
>Input signal (untimed MoC)
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>Output signal (continuous time MoC)
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><P
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3Ad2aConverter"
>d2aConverter</A
></TT
> converts an untimes or synchronous signal into a 
 continuous time signal.
 The process <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3Ad2aConverter"
>d2aConverter</A
></TT
> converts a signal of the digital domain
 into a continuous time signal. There are two modes, <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3ADAlinear"
>DAlinear</A
></TT
>,
 which makes a smooth transition between adjacent digital values and
 <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3ADAhold"
>DAhold</A
></TT
>, where the analog value directly follows the digital
 value. This means that in <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3ADAhold"
>DAhold</A
></TT
>-mode a staircase function
 remains a staircase function, while in <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3ADAlinear"
>DAlinear</A
></TT
> the staircase
 function would resemble at least partially a <EM
>saw tooth</EM
>-curve. 
</P
><P
>The resolution of the converter is given by the parameter
 <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AtimeStep"
>timeStep</A
></TT
>.
</P
><P
>Note, that the process <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3Ad2aConverter"
>d2aConverter</A
></TT
> is an ideal component, i.e. there
 are no losses due to a limited resolution due to a fixed number of bits. 
</P
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="6"
><A NAME="6"
>Some helper functions
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:applyF1"
><A NAME="v%3AapplyF1"
></A
></A
><B
>applyF1</B
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> b) =&gt; ((<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; b) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> b)</TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#applyF1"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>applyF1 applies a function on a sub-signal, which means the function of 
 the subsignal is transformed to another function:
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:applyF2"
><A NAME="v%3AapplyF2"
></A
></A
><B
>applyF2</B
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> b, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> c) =&gt; ((<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; a) -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; b) -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; c) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> b) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> c)</TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#applyF2"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>applyF2 works just like applyF1 but operates on two incoming signals.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:applyG1"
><A NAME="v%3AapplyG1"
></A
></A
><B
>applyG1</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> b =&gt; (a -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
> -&gt; b) -&gt; a) -&gt; a -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> b) -&gt; a</TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#applyG1"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>applyG1 is used to apply a next-state function. A very interesting
 question is, what should be an argument to the next-state function: 
 the incoming function, defining the value of the input signal?
 or the incoming function and the incoming interval?
 or the value of the incoming signal at a particular point, e.g. at the 
 left most point of the interval?
 To give the next-state function the interval itself as argument, would mean
 that the process becomes time variant process, i.e. its behaviour is 
 dependent on the absolute time values. This is not a good thing to have!
 Another possibility may be to give a sub-signal that is relative to the 
 current evaluation, i.e. the left most point is always 0. Would that make
 sense?
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:cutEq"
><A NAME="v%3AcutEq"
></A
></A
><B
>cutEq</B
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> b) =&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a) -&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> b) -&gt; (<A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a), <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> b))</TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#cutEq"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>cutEq partitions the two signals such that the partitioning are identical
 in both result signals, but only up to the duration of the shorter of the 
 two signals:
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="7"
><A NAME="7"
>Sampling, printing and plotting
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Several functions are available to display a signal in textual or 
   graphics form. All displaying of signals is based on sampling and 
   evaluation the signal at regular sampling points. 
</P
><P
>The function <TT
>sample</TT
> evaluates the signal and returns a list of 
   (time,value) pairs, which can be displayed as text or used in any other way.
</P
><P
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AshowParts"
>showParts</A
></TT
> does not evaluate the signal; it only shows how it is 
   partitioned. Hence, it returns a sequence of intervals.
</P
><P
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3Aplot"
>plot</A
></TT
>, <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AplotCT"
>plotCT</A
></TT
> and <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AplotCT%27"
>plotCT'</A
></TT
> can plot a signal or a list of signals 
   in a graph. They use <TT
>gnuplot</TT
> for doing the actual work.
   They are in the IO monad because they write to the file system.
</P
><P
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3Aplot"
>plot</A
></TT
> is defined in terms of <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AplotCT"
>plotCT</A
></TT
> but it uses the default sampling 
   period <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AtimeStep"
>timeStep</A
></TT
> and it can plot only one signal in a plot.
</P
><P
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AplotCT"
>plotCT</A
></TT
> can plot a list of signals in the same plot.
   <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AplotCT"
>plotCT</A
></TT
> is defined in terms of <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AplotCT%27"
>plotCT'</A
></TT
> but uses 
   default label names for the plot.
</P
><P
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AvcdGen"
>vcdGen</A
></TT
> writes the values of signals in Value Change Dump (VCD) format to 
   a file. There are public domain wave viewers which understand this format 
   and can display the signals.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:plot"
><A NAME="v%3Aplot"
></A
></A
><B
>plot</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#plot"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The signal to be plotted.
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>A reporting message.
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3Aplot"
>plot</A
></TT
> plots one signal in a graph with the default sampling period 
 of 1/200 of the duration of the signal.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:plotCT"
><A NAME="v%3AplotCT"
></A
></A
><B
>plotCT</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#plotCT"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="rdoc"
>The sampling period
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; [<A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)]</TD
><TD CLASS="rdoc"
>The list of signals to be ploted 
 in the same graph
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>A messeage reporting what has been done.
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AplotCT"
>plotCT</A
></TT
> plots a list of signals in the same graph. The sampling period 
 has to be given as argument. In the graph default label names are used
 to identify the signals.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:plotCT'"
><A NAME="v%3AplotCT%27"
></A
></A
><B
>plotCT'</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#plotCT%27"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="rdoc"
>Sampling period
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; [(<A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a), <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>)]</TD
><TD CLASS="rdoc"
>A list of (signal,label) pairs. The signals are plotted and
 denoted by the corresponding labels in the plot.
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>A simple message to report completion
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><P
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AplotCT%27"
>plotCT'</A
></TT
> is the work horse for plotting and the functions <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3Aplot"
>plot</A
></TT
> and 
   <TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AplotCT"
>plotCT</A
></TT
> use it with specialising arguments.
</P
><P
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AplotCT%27"
>plotCT'</A
></TT
> plots all the signals in the list in one graph. If a label is
   given for a signal, this label appears in the graph. If the label string is 
   &quot;&quot;, a default label like &quot;sig-1&quot;  is used.
</P
><P
>In addition to displaying the graph on the screen, the following files
   are created in directory ./fig:
</P
><DL
><DT
>ct-moc-graph.eps</DT
><DD
>          an eps file of the complete graph
</DD
><DT
>ct-moc-graph.pdf</DT
><DD
>          A pdf file of the complete graph
</DD
><DT
>ct-moc-graph-latex.eps</DT
><DD
>    included by ct-moc-graph-latex.tex
</DD
><DT
>ct-moc-graph-latex.tex</DT
><DD
>    This is the tex file that should be included
                               by your latex document. It in turn includes
 			       the file ct-moc-graph-latex.eps.
			       These two files have to be used together;
 			       the .eps file contains only the graphics,
			       while the .tex file contains the labels and 
                               text.
</DD
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:showParts"
><A NAME="v%3AshowParts"
></A
></A
><B
>showParts</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#showParts"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a)</TD
><TD CLASS="rdoc"
>The partitioned signal
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; [(<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ADouble"
>Double</A
>, <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ADouble"
>Double</A
>)]</TD
><TD CLASS="rdoc"
>The sequence of intervals
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><TT
><A HREF="ForSyDe-Shallow-CTLib.html#v%3AshowParts"
>showParts</A
></TT
> allows to see how a signal is partitioned into sub-signals.
 It returns the sequence of intervals.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:vcdGen"
><A NAME="v%3AvcdGen"
></A
></A
><B
>vcdGen</B
></TD
><TD CLASS="declbut"
><A HREF="src/ForSyDe-Shallow-CTLib.html#vcdGen"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ANum"
>Num</A
> a</TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>=&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Prelude.html#t%3ARational"
>Rational</A
></TD
><TD CLASS="rdoc"
>Sampling period; defines for what
 time stamps the values are written.
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; [(<A HREF="ForSyDe-Shallow-Signal.html#t%3ASignal"
>Signal</A
> (<A HREF="ForSyDe-Shallow-CTLib.html#t%3ASubsigCT"
>SubsigCT</A
> a), <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>)]</TD
><TD CLASS="rdoc"
>A list of (signal,label) pairs. The signal values written and
 denoted by the corresponding labels.
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AIO"
>IO</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>A simple message to report completion
</TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><P
>vcdGen dumps the values of a list of signal in VCD (Value Change Dump) format 
(IEEE Std 1364-2001), which is part of the Verilog standard 
(<A HREF="http://en.wikipedia.org/wiki/Value_change_dump"
>http://en.wikipedia.org/wiki/Value_change_dump</A
>).
There are public domain tools to view VCD files. For instance, 
GTKWave (<A HREF="http://home.nc.rr.com/gtkwave/"
>http://home.nc.rr.com/gtkwave/</A
>) is a popular viewer available for
Windows and Linux.
</P
><P
>The values are written to the file .<EM
>fig</EM
>ct-moc.vcd. If the file exists, it
is overwritten. If the directory does not exist, it is created.
</P
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 2.6.1</TD
></TR
></TABLE
></BODY
></HTML
>