diff --git a/changelog b/changelog
index 83869ab..943ab4b 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20120205 tpd src/axiom-website/patches.html 20120205.01.tpd.patch
+20120205 tpd src/input/pasta.input fix add new tests
 20120131 tpd src/axiom-website/patches.html 20120131.01.tpd.patch
 20120131 tpd src/axiom-website/download.html
 20120131 tpd Makefile support for centos 
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index a1805e2..c5ebba7 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3788,5 +3788,7 @@ src/input/pasta.input fix graphics title <br/>
 src/input/pasta.input fix add new tests<br/>
 <a href="patches/20120131.01.tpd.patch">20120131.01.tpd.patch</a>
 Makefile support for centos<br/>
+<a href="patches/20120205.01.tpd.patch">20120205.01.tpd.patch</a>
+src/input/pasta.input fix add new tests<br/>
  </body>
 </html>
diff --git a/src/input/pasta.input.pamphlet b/src/input/pasta.input.pamphlet
index b09d1f6..63b54e3 100644
--- a/src/input/pasta.input.pamphlet
+++ b/src/input/pasta.input.pamphlet
@@ -34,24 +34,24 @@ in the Italian-American ``wedding soup'', a broth of vegetables and meat.
 \begin{chunk}{*}
 )clear all
 
---S 1 of 74
+--S 1 of 601
 X(i,j) == 15*cos(i/60*%pi)
 --R                                                                   Type: Void
 --E 1
 
---S 2 of 74
+--S 2 of 601
 Y(i,j) == 15*sin(i/60*%pi)
 --R                                                                   Type: Void
 --E 2
 
---S 3 of 74
+--S 3 of 601
 Z(i,y) == j
 --R                                                                   Type: Void
 --E 3
 
---S 4 of 74
-draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..120,j=0..30,_
-     style=="smooth",title=="Acini Di Pepe")
+--S 4 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..120,j=0..30,_
+          style=="smooth",title=="Acini Di Pepe")
 --R   Compiling function X with type (Variable i,Variable j) -> Expression
 --R      Integer 
 --R   Compiling function Y with type (Variable i,Variable j) -> Expression
@@ -70,6 +70,10 @@ draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..120,j=0..30,_
 --R                                               Type: ThreeDimensionalViewport
 --E 4
 
+--S 5 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 5
 
 \end{chunk}
 
@@ -83,32 +87,32 @@ pasta wheel. Recommended with melted butter and sage
 \begin{chunk}{*}
 )clear all
 
---S 5 of 74
+--S 6 of 601
 X(i,j) == (10*sin((i/120)*%pi)^(0.5) + _
            (1/400)*sin(((3*j)/10)*%pi)) * _
           cos(((19*j)/2000)*%pi+0.03*%pi)
 --R 
 --R                                                                   Type: Void
---E 5
+--E 6
 
---S 6 of 74
+--S 7 of 601
 Y(i,j) == (10*sin((i/120)*%pi) + _
            (1/400)*cos(((30*j)/10)*%pi)) * _
           sin(((19*j)/2000)*%pi+0.03*%pi)
 --R 
 --R                                                                   Type: Void
---E 6
+--E 7
 
---S 7 of 74
+--S 8 of 601
 Z(i,j) == 5*cos((i/120)*%pi)^5 * sin((j/100)*%pi) - _
           5*sin((j/100)*%pi) * cos((i/120)*%pi)^200
 --R 
 --R                                                                   Type: Void
---E 7
+--E 8
 
---S 8 of 74
-draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..60,j=0..100,_
-     style=="smooth",title=="Agnolotti")
+--S 9 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..60,j=0..100,_
+          style=="smooth",title=="Agnolotti")
 --R 
 --R   Compiling function X with type (Variable i,Variable j) -> Expression
 --R      Float 
@@ -126,7 +130,12 @@ draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..60,j=0..100,_
 --R
 --R   (4)  ThreeDimensionalViewport: "Agnolotti"
 --R                                               Type: ThreeDimensionalViewport
---E 8
+--E 9
+
+--S 10 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 10
 
 \end{chunk}
 
@@ -141,29 +150,29 @@ may also be found served in a {\sl timballo} (baked pasta dish).
 \begin{chunk}{*}
 )clear all
 
---S 9 of 74
+--S 11 of 601
 X(i,j) == cos(0.01*i*%pi)
 --R                                                                   Type: Void
---E 9
+--E 11
 
---S 10 of 74
+--S 12 of 601
 Y(i,j) == 1.1*sin(0.01*i*%pi)
 --R                                                                   Type: Void
---E 10
+--E 12
 
---S 11 of 74
+--S 13 of 601
 Z(i,j) == 0.05*j
 --R                                                                   Type: Void
---E 11
+--E 13
 
---S 12 of 74
+--S 14 of 601
 canvas := createThreeSpace()
 --R
 --R   (4)  3-Space with 0 components
 --R                                                 Type: ThreeSpace DoubleFloat
---E 12
+--E 14
 
---S 13 of 74
+--S 15 of 601
 makeObject(surface(X(i,j),Y(i,j),Z(i,j)),i=0..200,j=0..8,space==canvas)
 --R   Compiling function X with type (Variable i,Variable j) -> Expression
 --R      Float 
@@ -180,9 +189,9 @@ makeObject(surface(X(i,j),Y(i,j),Z(i,j)),i=0..200,j=0..8,space==canvas)
 --R
 --R   (5)  3-Space with 1 component
 --R                                                 Type: ThreeSpace DoubleFloat
---E 13
+--E 15
 
---S 14 of 74
+--S 16 of 601
 makeObject(surface(X(i,j)/1.4,Y(i,j)/1.4,Z(i,j)),i=0..200,j=0..8,space==canvas)
 --I   Compiling function %Z with type (DoubleFloat,DoubleFloat) -> 
 --R      DoubleFloat 
@@ -193,15 +202,20 @@ makeObject(surface(X(i,j)/1.4,Y(i,j)/1.4,Z(i,j)),i=0..200,j=0..8,space==canvas)
 --R
 --R   (6)  3-Space with 2 components
 --R                                                 Type: ThreeSpace DoubleFloat
---E 14
+--E 16
 
---S 15 of 74
-makeViewport3D(canvas,"Anellini")
+--S 17 of 601
+vp:=makeViewport3D(canvas,"Anellini")
 --R   Transmitting data...
 --R
 --R   (7)  ThreeDimensionalViewport: "Anellini"
 --R                                               Type: ThreeDimensionalViewport
---E 15
+--E 17
+
+--S 18 of 601
+close(vp)
+--R                                                                   Type: Void
+--E 18
 
 \end{chunk}
 
@@ -216,29 +230,29 @@ Amatrice in central Italy.
 \begin{chunk}{*}
 )clear all
 
---S 16 of 74
+--S 19 of 601
 X(i,j) == 0.3*cos(i/30*%pi)
 --R                                                                   Type: Void
---E 16
+--E 19
 
---S 17 of 74
+--S 20 of 601
 Y(i,j) == 0.3*sin(i/30*%pi)
 --R                                                                   Type: Void
---E 17
+--E 20
 
---S 18 of 74
+--S 21 of 601
 Z(i,j) == j/45
 --R                                                                   Type: Void
---E 18
+--E 21
 
---S 19 of 74
+--S 22 of 601
 canvas := createThreeSpace()
 --R
 --R   (4)  3-Space with 0 components
 --R                                                 Type: ThreeSpace DoubleFloat
---E 19
+--E 22
 
---S 20 of 74
+--S 23 of 601
 makeObject(surface(X(i,j),Y(i,j),Z(i,j)),i=0..60,j=0..90,space==canvas)
 --R   Compiling function X with type (Variable i,Variable j) -> Expression
 --R      Float 
@@ -255,9 +269,9 @@ makeObject(surface(X(i,j),Y(i,j),Z(i,j)),i=0..60,j=0..90,space==canvas)
 --R
 --R   (5)  3-Space with 1 component
 --R                                                 Type: ThreeSpace DoubleFloat
---E 20
+--E 23
 
---S 21 of 74
+--S 24 of 601
 makeObject(surface(X(i,j)/2,Y(i,j)/2,Z(i,j)),i=0..60,j=0..90,space==canvas)
 --I   Compiling function %BP with type (DoubleFloat,DoubleFloat) -> 
 --R      DoubleFloat 
@@ -268,15 +282,20 @@ makeObject(surface(X(i,j)/2,Y(i,j)/2,Z(i,j)),i=0..60,j=0..90,space==canvas)
 --R
 --R   (6)  3-Space with 2 components
 --R                                                 Type: ThreeSpace DoubleFloat
---E 21
+--E 24
 
---S 22 of 74
-makeViewport3D(canvas,"Bucatini")
+--S 25 of 601
+vp:=makeViewport3D(canvas,"Bucatini")
 --R   Transmitting data...
 --R
 --R   (7)  ThreeDimensionalViewport: "Bucatini"
 --R                                               Type: ThreeDimensionalViewport
---E 22
+--E 25
+
+--S 26 of 601
+close(vp)
+--R                                                                   Type: Void
+--E 26
 
 \end{chunk}
 
@@ -289,24 +308,24 @@ aubergine, pesto, and ricotta salad.
 \begin{chunk}{*}
 )clear all
 
---S 23 of 74
+--S 27 of 601
 X(i,j) == (0.7 + 0.2*sin(21*j/250 * %pi))*cos(i/20*%pi)
 --R                                                                   Type: Void
---E 23
+--E 27
 
---S 24 of 74
+--S 28 of 601
 Y(i,j) == (0.7 + 0.2*sin(21*j/250 * %pi))*sin(i/20*%pi)
 --R                                                                   Type: Void
---E 24
+--E 28
 
---S 25 of 74
+--S 29 of 601
 Z(i,j) == 39.0*i/1000. + 1.5*sin(j/50*%pi)
 --R                                                                   Type: Void
---E 25
+--E 29
 
---S 26 of 74
-draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..200,j=0..25,_
-     style=="smooth",title=="Buccoli")
+--S 30 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..200,j=0..25,_
+          style=="smooth",title=="Buccoli")
 --R   Compiling function X with type (Variable i,Variable j) -> Expression
 --R      Float 
 --R   Compiling function Y with type (Variable i,Variable j) -> Expression
@@ -323,7 +342,12 @@ draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..200,j=0..25,_
 --R
 --R   (4)  ThreeDimensionalViewport: "Buccoli"
 --R                                               Type: ThreeDimensionalViewport
---E 26
+--E 30
+
+--S 31 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 31
 
 \end{chunk}
 
@@ -337,24 +361,24 @@ well. Fittingly, they are often served with seafood.
 \begin{chunk}{*}
 )clear all
 
---S 27 of 74
+--S 32 of 601
 X(i,j) == cos(i/75*%pi) + 0.1*cos(j/40*%pi) + 0.1*cos(i/75*%pi + j/40*%pi)
 --R                                                                   Type: Void
---E 27
+--E 32
 
---S 28 of 74
+--S 33 of 601
 Y(i,j) == 1.2*sin(i/75*%pi) + 0.2*sin(j/40*%pi)
 --R                                                                   Type: Void
---E 28
+--E 33
 
---S 29 of 74
+--S 34 of 601
 Z(i,j) == j/10
 --R                                                                   Type: Void
---E 29
+--E 34
 
---S 30 of 74
-draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..20,_
-     style=="smooth",title=="Calamaretti")
+--S 35 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..20,_
+          style=="smooth",title=="Calamaretti")
 --R   Compiling function X with type (Variable i,Variable j) -> Expression
 --R      Float 
 --R   Compiling function Y with type (Variable i,Variable j) -> Expression
@@ -371,7 +395,12 @@ draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..20,_
 --R
 --R   (4)  ThreeDimensionalViewport: "Calamaretti"
 --R                                               Type: ThreeDimensionalViewport
---E 30
+--E 35
+
+--S 36 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 36
 
 \end{chunk}
 
@@ -384,26 +413,26 @@ sprinkling of Parmigiano-Reggiano cheese and then oven-baked.
 \begin{chunk}{*}
 )clear all
 
---S 31 of 74
+--S 37 of 601
 X(i,j) == (1+j/100)*cos(i*%pi/55) + 0.5*cos(j*%pi/100) + _
           0.1*cos(i*%pi/55+j*%pi/125)
 --R 
 --R                                                                   Type: Void
---E 31
+--E 37
 
---S 32 of 74
+--S 38 of 601
 Y(i,j) == 1.3*sin(i*%pi/55) + 0.3*sin(j*%pi/100)
 --R 
 --R                                                                   Type: Void
---E 32
+--E 38
 
---S 33 of 74
+--S 39 of 601
 Z(i,j) == 7.*j/50.
 --R 
 --R                                                                   Type: Void
---E 33
+--E 39
 
---S 34 of 74
+--S 40 of 601
 v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..110,j=0..50,_
           style=="smooth",title=="Cannelloni")
 --R 
@@ -423,13 +452,18 @@ v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..110,j=0..50,_
 --R
 --R   (4)  ThreeDimensionalViewport: "Cannelloni"
 --R                                               Type: ThreeDimensionalViewport
---E 34
+--E 40
 
---S 35 of 74
+--S 41 of 601
 zoom(v3d,2.0,2.0,2.0)
 --R 
 --R                                                                   Type: Void
---E 35
+--E 41
+
+--S 42 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 42
 
 \end{chunk}
 
@@ -441,25 +475,25 @@ served with seafood. {\sl Cannolicchi} hail from Campania in southern Italy.
 \begin{chunk}{*}
 )clear all
 
---S 36 of 74
+--S 43 of 601
 X(i,j) == 8*cos(i*%pi/70) + 0.2*cos(2*i*%pi/7) + 5*cos(j*%pi/100)
 --R 
 --R                                                                   Type: Void
---E 36
+--E 43
 
---S 37 of 74
+--S 44 of 601
 Y(i,j) == 8*sin(i*%pi/70) + 0.2*sin(2*i*%pi/7) + 4*sin(j*%pi/100)
 --R 
 --R                                                                   Type: Void
---E 37
+--E 44
 
---S 38 of 74
+--S 45 of 601
 Z(i,j) == 6.0*j/5.0
 --R 
 --R                                                                   Type: Void
---E 38
+--E 45
 
---S 39 of 74
+--S 46 of 601
 v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..140,j=0..50,_
           style=="smooth",title=="Cannolicchi Rigati")
 --R 
@@ -479,18 +513,21 @@ v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..140,j=0..50,_
 --R
 --R   (4)  ThreeDimensionalViewport: "Cannolicchi Rigati"
 --R                                               Type: ThreeDimensionalViewport
---E 39
+--E 46
 
---S 40 of 74
+--S 47 of 601
 zoom(v3d,3.0,3.0,3.0)
 --R 
 --R                                                                   Type: Void
---E 40
+--E 47
 
-\end{chunk}
+--S 48 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 48
 
+\end{chunk}
 
-\newpage
 \section{Capellini}
 An extra-fine rod-like pasta {\sl capellini} (thin hair) may be served
 in a light broth, but also combine perfectly with butter, nutmeg, or
@@ -502,25 +539,25 @@ torta ricciolina}.
 \begin{chunk}{*}
 )clear all
 
---S 41 of 74
+--S 49 of 601
 X(i,j) == 0.05*cos(2*i*%pi/15) + 0.6*cos(j*%pi/100)
 --R 
 --R                                                                   Type: Void
---E 41
+--E 49
 
---S 42 of 74
+--S 50 of 601
 Y(i,j) == 0.05*sin(2*i*%pi/15) + 0.5*sin(j*%pi/100)
 --R 
 --R                                                                   Type: Void
---E 42
+--E 50
 
---S 43 of 74
+--S 51 of 601
 Z(i,j) == 7.0*j/100.0
 --R 
 --R                                                                   Type: Void
---E 43
+--E 51
 
---S 44 of 74
+--S 52 of 601
 v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..15,j=0..100,_
           style=="smooth",title=="Capellini")
 --R 
@@ -540,16 +577,20 @@ v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..15,j=0..100,_
 --R
 --R   (4)  ThreeDimensionalViewport: "Capellini"
 --R                                               Type: ThreeDimensionalViewport
---E 44
+--E 52
 
---S 45 of 74
+--S 53 of 601
 zoom(v3d,3.0,3.0,3.0)
 --R 
 --R                                                                   Type: Void
---E 45
+--E 53
 
-\end{chunk}
+--S 54 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 54
 
+\end{chunk}
 
 \section{Cappelletti}
 This pasta is customarily served as the first course of a traditional
@@ -561,27 +602,27 @@ cheeses, such as ricotta.
 \begin{chunk}{*}
 )clear all
 
---S 46 of 74
+--S 55 of 601
 X(i,j) == (0.1 + sin(((3*i)/160)*%pi)) * cos(((2.3*j)/120)*%pi)
 --R 
 --R                                                                   Type: Void
---E 46
+--E 55
 
---S 47 of 74
+--S 56 of 601
 Y(i,j) == (0.1 + sin(((3*i)/160)*%pi)) * sin(((2.3*j)/120)*%pi)
 --R 
 --R                                                                   Type: Void
---E 47
+--E 56
 
---S 48 of 74
+--S 57 of 601
 Z(i,j) == 0.1 + (1/400.)*j + (0.3 - 0.231*(i/40.)) * cos((i/20.)*%pi)
 --R 
 --R                                                                   Type: Void
---E 48
+--E 57
 
---S 49 of 74
-draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..40,j=0..120,_
-     style=="smooth",title=="Cappelletti")
+--S 58 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..40,j=0..120,_
+          style=="smooth",title=="Cappelletti")
 --R 
 --R   Compiling function X with type (Variable i,Variable j) -> Expression
 --R      Float 
@@ -599,342 +640,5228 @@ draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..40,j=0..120,_
 --R
 --R   (4)  ThreeDimensionalViewport: "Cappelletti"
 --R                                               Type: ThreeDimensionalViewport
---E 49
+--E 58
+
+--S 59 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 59
 
 \end{chunk}
 
-\section{Fagottini}
-A notable member of the pasta ripiena (filled pasta) family, fagottini
-(little purses) are made from circles of durum wheat dough. A spoonful
-of ricotta, steamed vegetables or even stewed fruit is placed on the
-dough, and the corners are then pinched together to form a bundle. 
-These packed dumplings are similar to ravioli, only larger.
+\section{Corallini Lisci}
+Members of the {\sl postine minute} (tiny pasta) group, {\sl corallini
+lisci} (small smooth coral) are so called because their pierced
+appearance resembles the coral beads worn as jewelry in Italy. Their
+small size (no larger than 3.5 mm in diameter) means that {\sl
+corallini} are best cooked in broths, such as Tuscan white bean soup.
 \begin{chunk}{*}
 )clear all
 
---S 50 of 74
-A(i,j) == (0.8 + sin(i/100*%pi)^8 - 0.8 * cos(i/25*%pi))^1.5 + _
-           0.2 + 0.2 * sin(1/100*%pi)
---R 
---R                                                                   Type: Void
---E 50
-
---S 51 of 74
-B(i,j) == (0.9 + cos(i/100*%pi)^8 - 0.9 * cos(i/25*%pi + 0.03*%pi))^1.5 + _
-           0.3 * cos(i/100*%pi)
---R 
---R                                                                   Type: Void
---E 51
-
---S 52 of 74
-C(i,j) == 4 - ((4*j)/500)*(1+cos(i/100*%pi)^8 - 0.8*cos(i/25*%pi))^1.5
---R 
+--S 60 of 601
+X(i,j) == 0.8*cos(i*%pi/50)
 --R                                                                   Type: Void
---E 52
+--E 60
 
---S 53 of 74
-X(i,j) == cos(i/100*%pi) * _
-          (A(i,j) * sin(j/100*%pi)^8 + _
-           0.6 * (2 + sin(i/100*%pi)^2) * sin(j/50*%pi)^2)
---R 
+--S 61 of 601
+Y(i,j) == 0.8*sin(i*%pi/50)
 --R                                                                   Type: Void
---E 53
+--E 61
 
---S 54 of 74
-Y(i,j) == sin(i/100*%pi) * _
-          (B(i,j) * sin(j/100*%pi)^8 + _
-           0.6 * (2 + cos(i/100*%pi)^2) * sin(j/50*%pi)^2)
---R 
+--S 62 of 601
+Z(i,j) == 3.0*j/50.0
 --R                                                                   Type: Void
---E 54
+--E 62
 
---S 55 of 74
-Z(i,j) == (1 + sin(j/100*%pi - 0.5*%pi)) * _
-           (C(i,j) * ((4*j)/500) * _
-            (1 + sin(i/100*%pi)^8 - 0.8 * cos(i/25*%pi))^1.5)
---R 
---R                                                                   Type: Void
---E 55
+--S 63 of 601
+vsp:=createThreeSpace()
+--R
+--R   (4)  3-Space with 0 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 63
 
---S 56 of 74
-draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..200,j=0..50,_
-     style=="smooth",title=="Fagottini")
---R 
---R   Compiling function A with type (Variable i,Variable j) -> Expression
---R      Float 
+--S 64 of 601
+makeObject(surface(X(i,j),Y(i,j),Z(i,j)),i=0..140,j=0..70,space==vsp)
 --R   Compiling function X with type (Variable i,Variable j) -> Expression
 --R      Float 
---R   Compiling function B with type (Variable i,Variable j) -> Expression
---R      Float 
 --R   Compiling function Y with type (Variable i,Variable j) -> Expression
 --R      Float 
---R   Compiling function C with type (Variable i,Variable j) -> Expression
---R      Float 
---R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
 --R      Float 
---I   Compiling function %EV with type (DoubleFloat,DoubleFloat) -> 
+--I   Compiling function %F with type (DoubleFloat,DoubleFloat) -> 
 --R      DoubleFloat 
---I   Compiling function %EX with type (DoubleFloat,DoubleFloat) -> 
+--I   Compiling function %H with type (DoubleFloat,DoubleFloat) -> 
 --R      DoubleFloat 
---I   Compiling function %EZ with type (DoubleFloat,DoubleFloat) -> 
+--I   Compiling function %J with type (DoubleFloat,DoubleFloat) -> 
 --R      DoubleFloat 
---R   Transmitting data...
 --R
---R   (7)  ThreeDimensionalViewport: "Fagottini"
---R                                               Type: ThreeDimensionalViewport
---E 56
+--R   (5)  3-Space with 1 component
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 64
 
-\end{chunk}
+--S 65 of 601
+makeObject(surface(X(i,j)/2,Y(i,j)/2,Z(i,j)),i=0..140,j=0..70,space==vsp)
+--I   Compiling function %L with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %N with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %P with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (6)  3-Space with 2 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 65
 
-\section{Fusilli Lunghi Bucati}
-A distinctive member of the extended fusilli clan, fusilli lunghi
-bucati (long pierced fusilli) originated in Campania, southern Italy,
-and have a spring-like profile. Like all fusilli they are traditionally 
-consumed with a meat-based ragu, but may also be combined with thick 
-vegetable sauces and baked in the oven.
-\begin{chunk}{*}
-)clear all
+--S 66 of 601
+vp:=makeViewport3D(vsp,style=="smooth",title=="Corallini Lisci")
+--R   Transmitting data...
+--R
+--R   (7)  ThreeDimensionalViewport: "Corallini Lisci"
+--R                                               Type: ThreeDimensionalViewport
+--E 66
 
---S 57 of 74
-A(i,j) == 10 + cos(i/10*%pi) + 2*cos((j+10)/10*%pi) + 10*cos((j+140)/160*%pi)
---R 
+--S 67 of 601
+zoom(vp,2.0,2.0,2.0)
 --R                                                                   Type: Void
---E 57
+--E 67
 
---S 58 of 74
-B(i,j) == 20 + cos(i/10*%pi) + 2*cos((j+10)/10*%pi)
---R 
+--S 68 of 601
+close(vp)
 --R                                                                   Type: Void
---E 58
+--E 68
 
---S 59 of 74
-C(i,j) == (j+10)/10*%pi
---R 
---R                                                                   Type: Void
---E 59
+\end{chunk}
 
---S 60 of 74
-D(i,j) == i/10*%pi
---R 
+\section{Creste Di Galli}
+Part of the {\sl pasta ripiena} (filled pasta) family, {\sl creste di
+galli} (coxcombs) are identical to {\sl galletti} except for the
+crest, which is smooth rather than crimped. They may be stuffed,
+cooked and served in a simple {\sl marinara} (mariner's) sauce, which
+contains tomato, garlic, and basil.
+\begin{chunk}{*}
+)clear all
+
+--S 69 of 601
+A(i)   == ((1+sin((1.5+i)*%pi))/2)^5
 --R                                                                   Type: Void
---E 60
+--E 69
 
---S 61 of 74
-E(i,j) == C(i,j) + 20*sin((j-20)/160*%pi)
---R 
+--S 70 of 601
+B(i,j) == 0.3*sin(A(i/140.)*%pi+0.5*%pi)^1000*cos(j*%pi/70.0)
 --R                                                                   Type: Void
---E 61
+--E 70
 
---S 62 of 74
-F(i,j) == 70. * (0.1 - (j-180.)/200.)
---R 
+--S 71 of 601
+C(i,j) == 0.3*cos(A(i/140.)*%pi)^1000*sin(j*%pi/70.0)
 --R                                                                   Type: Void
---E 62
+--E 71
 
---S 63 of 74
-X(i,j) == if ((20 <= j) and (j <= 180)) _
-           then A(i,j) _
-            else if (j <= 20) _ 
-                  then (cos(D(i,j)) + 2*cos(C(i,j))) _
-                   else B(i,j)
---R 
+--S 72 of 601
+X(i,j) == (0.5+0.3*cos(A(i/140.)*2*%pi))*cos(j*%pi/70.0) + _
+          0.15*(j/70.0)^10*cos(A(i/140.0)*2*%pi)^3 + B(i,j)
 --R                                                                   Type: Void
---E 63
+--E 72
 
---S 64 of 74
-Y(i,j) == if ((20 <= j) and (j <= 180)) _
-           then (sin(D(i,j)) + 2*sin(C(i,j))) _
-            else (sin(D(i,j)) + 2*sin(C(i,j)))
---R 
+--S 73 of 601
+Y(i,j) == 0.35*sin(A(i/140.0)*2*%pi) + 0.15*j/70.0*sin(A(i/140.0)*2*%pi)
 --R                                                                   Type: Void
---E 64
+--E 73
 
---S 65 of 74
-Z(i,j) == if ((20 <= j) and (j <= 180)) _
-           then E(i,j) _
-            else if (j <= 20) _
-                  then (C(i,j)*j)/20 _
-                   else F(i,j)
---R 
+--S 74 of 601
+Z(i,j) == (0.4+0.3*cos(A(i/140.0)*2*%pi))*sin(j*%pi/70.0) + C(i,j)
 --R                                                                   Type: Void
---E 65
+--E 74
 
---S 66 of 74
-draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..20,j=0..200,_
-     style=="wire",title=="Fusilli Lunghi Bucati")
---R 
---R   Compiling function A with type (Variable i,Variable j) -> Expression
---R      Integer 
---R   Compiling function D with type (Variable i,Variable j) -> Expression
---R      Integer 
---R   Compiling function C with type (Variable i,Variable j) -> Expression
---R      Integer 
+--S 75 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..140,j=0..70,_
+          style=="smooth",title=="Creste Di Galli")
+--R   Compiling function A with type Polynomial Float -> Expression Float 
 --R   Compiling function B with type (Variable i,Variable j) -> Expression
---R      Integer 
+--R      Float 
 --R   Compiling function X with type (Variable i,Variable j) -> Expression
---R      Integer 
+--R      Float 
 --R   Compiling function Y with type (Variable i,Variable j) -> Expression
---R      Integer 
---R   Compiling function E with type (Variable i,Variable j) -> Expression
---R      Integer 
---R   Compiling function F with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
 --R      Float 
 --R   Compiling function Z with type (Variable i,Variable j) -> Expression
 --R      Float 
---I   Compiling function %FB with type (DoubleFloat,DoubleFloat) -> 
+--I   Compiling function %R with type (DoubleFloat,DoubleFloat) -> 
 --R      DoubleFloat 
---I   Compiling function %FD with type (DoubleFloat,DoubleFloat) -> 
+--I   Compiling function %T with type (DoubleFloat,DoubleFloat) -> 
 --R      DoubleFloat 
---I   Compiling function %FF with type (DoubleFloat,DoubleFloat) -> 
+--I   Compiling function %V with type (DoubleFloat,DoubleFloat) -> 
 --R      DoubleFloat 
 --R   Transmitting data...
 --R
---R   (10)  ThreeDimensionalViewport: "Fusilli Lunghi Bucati"
+--R   (7)  ThreeDimensionalViewport: "Creste Di Galli"
 --R                                               Type: ThreeDimensionalViewport
---E 66
+--E 75
+
+--S 76 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 76
 
 \end{chunk}
 
-\section{Quadrefiore}
-An uncommon variety of pasta corta (short pasta), quadrefiori (square
-flowers) are sturdy, with rippled edges running down their
-lengths. Francis Ford Coppola, the maker and distributor, uses antique
-bronze moulds and wooden drying racks to achieve an authentic form
-and consistency.
+\section{Couretti}
+A romantically shaped scion of the {\sl postine minute} (tiny pasta)
+clan, {\sl cuoretti} (tiny hearts) are minuscule. In fact, along with
+{\sl acini di pepe}, they are one of the smallest forms of pasta. Like
+all {\sl postine} they may be served in soup, such as cream of chicken.
 \begin{chunk}{*}
 )clear all
 
---S 67 of 74
-X(i,j) == 2*cos((i/250.)*%pi)*(sin((3.*i)/250.*%pi))^20 + _
-           (0.6 + 0.9*sin(j/50*%pi)) * cos(i/250*%pi) + _
-           0.2*cos((4*j)/25*%pi)
---R 
+--S 77 of 601
+X(i,j) == 2*cos(i*%pi/150)-cos(i*%pi/75)-sin(i*%pi/300)^150 - _
+          (abs(cos(i*%pi/300)))^5
 --R                                                                   Type: Void
---E 67
+--E 77
 
---S 68 of 74
-Y(i,j) == 2*sin((i/250.)*%pi)*(sin((3.*i)/250.*%pi))^20 + _
-           (0.6 + 0.9*sin(j/50*%pi)) * sin(i/250*%pi) + _
-           1.5*sin(j/50*%pi)
---R 
+--S 78 of 601
+Y(i,j) == 2*sin(i*%pi/150)-sin(i*%pi/75)
 --R                                                                   Type: Void
---E 68
+--E 78
 
---S 69 of 74
-Z(i,j) == (3*j)/10
---R 
+--S 79 of 601
+Z(i,j) == j/10.0
 --R                                                                   Type: Void
---E 69
+--E 79
 
---S 70 of 74
-draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..500,j=0..50,_
-     style=="smooth",title=="Quadrefiore")
---R 
+--S 80 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..300,j=0..10,_
+          style=="smooth",title=="Couretti")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %Z with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %BB with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %BD with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Couretti"
+--R                                               Type: ThreeDimensionalViewport
+--E 80
+
+--S 81 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 81
+
+\end{chunk}
+
+\section{Ditali Rigati}
+Another speciality of the Campania region of southern Italy, {\sl
+ditali rigati} (grooved thimbles) are compact and typically less than
+10 mm long. Like other {\sl pastine}, they are usually found in soups
+such as {\sl pasta e patate}. Their stocky shape makes them a
+sustaining winter snack, as well as an excellent addition to salads.
+\begin{chunk}{*}
+)clear all
+
+--S 82 of 601
+X(i,j) ==       cos(i*%pi/100) + 0.03*cos((7*i)*%pi/40) + 0.25*cos(j*%pi/50)
+--R                                                                   Type: Void
+--E 82
+
+--S 83 of 601
+Y(i,j) == 1.1 * sin(i*%pi/100) + 0.03*sin((7*i)*%pi/40) + 0.25*sin(j*%pi/50)
+--R                                                                   Type: Void
+--E 83
+
+--S 84 of 601
+Z(i,j) == j/10.0
+--R                                                                   Type: Void
+--E 84
+
+--S 85 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..200,j=0..25,_
+          style=="smooth",title=="Ditali Rigati")
 --R   Compiling function X with type (Variable i,Variable j) -> Expression
 --R      Float 
 --R   Compiling function Y with type (Variable i,Variable j) -> Expression
 --R      Float 
 --R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
---R      Fraction Integer 
---I   Compiling function %FH with type (DoubleFloat,DoubleFloat) -> 
+--R      Float 
+--I   Compiling function %BF with type (DoubleFloat,DoubleFloat) -> 
 --R      DoubleFloat 
---I   Compiling function %FJ with type (DoubleFloat,DoubleFloat) -> 
+--I   Compiling function %BH with type (DoubleFloat,DoubleFloat) -> 
 --R      DoubleFloat 
---I   Compiling function %FL with type (DoubleFloat,DoubleFloat) -> 
+--I   Compiling function %BJ with type (DoubleFloat,DoubleFloat) -> 
 --R      DoubleFloat 
 --R   Transmitting data...
 --R
---R   (4)  ThreeDimensionalViewport: "Quadrefiore"
+--R   (4)  ThreeDimensionalViewport: "Ditali Rigati"
 --R                                               Type: ThreeDimensionalViewport
---E 70
+--E 85
+
+--S 86 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 86
 
 \end{chunk}
 
-\section{Scialatielli}
-Hailing from the Amaifi coast in the province of Naples, scialatielli
-are a rustic pasta lunga (long pasta) similar in appearance to
-fettuccine and tagliatelle. When they are made, milk and eggs can be
-added to the durum wheat flour to lend it a golden color. Scialatielli
-are best paired with seafood, or a ragu of pork or veal.
+\section{Fagottini}
+A notable member of the pasta ripiena (filled pasta) family, fagottini
+(little purses) are made from circles of durum wheat dough. A spoonful
+of ricotta, steamed vegetables or even stewed fruit is placed on the
+dough, and the corners are then pinched together to form a bundle. 
+These packed dumplings are similar to ravioli, only larger.
 \begin{chunk}{*}
 )clear all
- 
---S 71 of 74
-X(i,j) == 0.1*cos(i/75*%pi) + 0.1*cos((i+7.5)/75*%pi)^3 + 0.1*sin(j/50*%pi)
+
+--S 87 of 601
+A(i,j) == (0.8 + sin(i/100*%pi)^8 - 0.8 * cos(i/25*%pi))^1.5 + _
+           0.2 + 0.2 * sin(1/100*%pi)
 --R 
 --R                                                                   Type: Void
---E 71
+--E 87
 
---S 72 of 74
-Y(i,j) == 0.1*cos(i/75*%pi) + 0.2*sin(i/75*%pi)^3 + 0.1*sin(j/50*%pi)
+--S 88 of 601
+B(i,j) == (0.9 + cos(i/100*%pi)^8 - 0.9 * cos(i/25*%pi + 0.03*%pi))^1.5 + _
+           0.3 * cos(i/100*%pi)
 --R 
 --R                                                                   Type: Void
---E 72
+--E 88
 
---S 73 of 74
-Z(i,j) == (3*j)/50.
+--S 89 of 601
+C(i,j) == 4 - ((4*j)/500)*(1+cos(i/100*%pi)^8 - 0.8*cos(i/25*%pi))^1.5
 --R 
 --R                                                                   Type: Void
---E 73
+--E 89
 
---S 74 of 74
-draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..50,_
-     style=="shade",title=="Scialatielli")
+--S 90 of 601
+X(i,j) == cos(i/100*%pi) * _
+          (A(i,j) * sin(j/100*%pi)^8 + _
+           0.6 * (2 + sin(i/100*%pi)^2) * sin(j/50*%pi)^2)
+--R 
+--R                                                                   Type: Void
+--E 90
+
+--S 91 of 601
+Y(i,j) == sin(i/100*%pi) * _
+          (B(i,j) * sin(j/100*%pi)^8 + _
+           0.6 * (2 + cos(i/100*%pi)^2) * sin(j/50*%pi)^2)
+--R 
+--R                                                                   Type: Void
+--E 91
+
+--S 92 of 601
+Z(i,j) == (1 + sin(j/100*%pi - 0.5*%pi)) * _
+           (C(i,j) * ((4*j)/500) * _
+            (1 + sin(i/100*%pi)^8 - 0.8 * cos(i/25*%pi))^1.5)
+--R 
+--R                                                                   Type: Void
+--E 92
+
+--S 93 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..200,j=0..50,_
+          style=="smooth",title=="Fagottini")
 --R 
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
 --R   Compiling function X with type (Variable i,Variable j) -> Expression
 --R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
 --R   Compiling function Y with type (Variable i,Variable j) -> Expression
 --R      Float 
---R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
 --R      Float 
---I   Compiling function %FN with type (DoubleFloat,DoubleFloat) -> 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %EV with type (DoubleFloat,DoubleFloat) -> 
 --R      DoubleFloat 
---I   Compiling function %FP with type (DoubleFloat,DoubleFloat) -> 
+--I   Compiling function %EX with type (DoubleFloat,DoubleFloat) -> 
 --R      DoubleFloat 
---I   Compiling function %FR with type (DoubleFloat,DoubleFloat) -> 
+--I   Compiling function %EZ with type (DoubleFloat,DoubleFloat) -> 
 --R      DoubleFloat 
 --R   Transmitting data...
 --R
---R   (4)  ThreeDimensionalViewport: "Scialatielli"
+--R   (7)  ThreeDimensionalViewport: "Fagottini"
 --R                                               Type: ThreeDimensionalViewport
---E 74
+--E 93
+
+--S 94 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 94
 
 \end{chunk}
 
-\section{Galletti}
-According to their maker, Barilla, the origin of galletti (small
-cocks) is uncertain, but their shape recalls that of the chifferi with
-the addition of an undulating crest. Galletti are usually served in
-tomato sauces, but combine equally well with a boscaiola (woodsman's)
-sauce of mushrooms.
-\begin{verbatim}
---f(x:FLOAT):FLOAT == ((1. + sin(x*%pi + 1.5*%pi))/2.0)^5
---
---A(i,j) == if (i = 35) _
---           then 0.00001 _
---            else 0.4 * sin(f(i/140.)*%pi + 0.5*%pi)^1000 * cos(j/70*%pi) 
---
---C(i,j) == 0.4*cos(f(i/140.)*%pi)^1000 * sin(j/70*%pi)
---
---B(i,j) == 0.15 * sin(f(i/140.)*%pi + 0.5*%pi)^1000 * cos(j/C(i,j)*%pi)
---
---X(i,j) == (0.5 + 0.3*cos(f(i/140.)*2*%pi)) * cos(j/70*%pi) + _
---          0.15 * (j/70)^10 * cos(f(i/140.)*2*%pi)^3 + A(i,j)
---
---Y(i,j) == 0.35*sin(f(i/140.)*2*%pi) + 0.15*(j/70)*sin(f(i/140.)*2*%pi) + B(i,j)
---
---Z(i,j) == (0.4 + 0.3*cos(f(i/140.)*2*%pi))*sin(j/70*%pi) + C(i,j)
---
---draw(surface(X(i,j),Y(i,j),Z(i,j)),i=1..139,j=1..69,_
---     style=="solid",title=="Galletti")
-\end{verbatim}
+\section{Farfalle}
+A mixture of durum-wheat flour, eggs, and water, {\sl farfalle}
+(butterflies) come from the Emilia-Romagnaand Lombardy regions of
+northern Italy. They are best served in a rich {\sl carbonara} sauce
+(made with cream, eggs, and bacon). Depending on se, {\sl farfalle}
+might be accompanied by green peas and chicken or ham.
+\begin{chunk}{*}
+)clear all
 
-\section{Racchette}
-Usually served in salads, racchette (rackets) suit crunchy pine nuts,
-sliced asparagus and presh peas. Alternatively, the addition of diced
-watermelon or pomegranate seeds can create a light-tasting snack.
+--S 95 of 601
+A(i)   == sin((7*i+16)*%pi/40)
+--R                                                                   Type: Void
+--E 95
+
+--S 96 of 601
+B(i,j) == (7.0*j/16.0)+4*sin(i*%pi/80)*sin((j-10)*%pi/120)
+--R                                                                   Type: Void
+--E 96
+
+--S 97 of 601
+C(i,j) == 10*cos((i+80)*%pi/80)*sin((j+110)*%pi/100)^9
+--R                                                                   Type: Void
+--E 97
+
+--S 98 of 601
+D(i,j) == (7.0*j/16.0)-4*sin(i*%pi/80)-A(i)*sin((10-j)*%pi/20)
+--R                                                                   Type: Void
+--E 98
+
+--S 99 of 601
+E(i,j) == 0.0 -- This was never defined.
+--R                                                                   Type: Void
+--E 99
+
+--S 100 of 601
+X(i,j) == _
+  if ((20 <= i) and (i <= 60)) _
+   then 7*sin((i+40)*%pi/40)^3*sin((j+110)*%pi/100)^9+(3.0*i)/8.0 _
+   else C(i,j)+(3.0*i)/8.0
+--R                                                                   Type: Void
+--E 100
+
+--S 101 of 601
+Y(i,j) == _
+  if ((10 <= j) and (j <= 70)) _
+   then B(i,j)-4*sin(i*%pi/80)*sin((70-j)*%pi/120) _
+   else if (j <= 10) _
+         then D(i,j) _
+         else E(i,j)
+--R                                                                   Type: Void
+--E 101
+
+--S 102 of 601
+Z(i,j) == 3*sin((i+10)*%pi/20)*sin(j*%pi/80)^1.5
+--R                                                                   Type: Void
+--E 102
+
+--S 103 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..80,j=0..80,_
+          style=="smooth",title=="Farfalle")
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function A with type Variable i -> Expression Integer 
+--R   Compiling function D with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function E with type (Variable i,Variable j) -> Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %BL with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %BN with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %BP with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (9)  ThreeDimensionalViewport: "Farfalle"
+--R                                               Type: ThreeDimensionalViewport
+--E 103
+
+--S 104 of 601
+zoom(v3d,0.5,0.5,0.5)
+--R                                                                   Type: Void
+--E 104
+
+--S 105 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 105
+
+\end{chunk}
+
+\section{Farfalline}
+The small size of this well-known member of the {\sl postine minute}
+(tiny pasta) lineage means that {\sl farfalline} (tiny butterflies),
+are suitable for light soups, such as {\sl pomodori e robiolo} (a
+mixture of tomato and soft cheese). A crimped pasta cutter and a
+central pinch create the iconic shape.
+\begin{chunk}{*}
+)clear all
+
+--S 106 of 601
+A(i) == 30*cos(i*%pi/125)+0.5*cos((6*i)*%pi/25)
+--R                                                                   Type: Void
+--E 106
+
+--S 107 of 601
+B(i) == 30*sin(i*%pi/125)+0.5*sin((6*i)*%pi/25)
+--R                                                                   Type: Void
+--E 107
+
+--S 108 of 601
+X(i,j) == cos(3*A(i)*%pi/100)
+--R                                                                   Type: Void
+--E 108
+
+--S 109 of 601
+Y(i,j) == 0.5*sin((3*A(i))*%pi/100)*(1+sin(j*%pi/100)^10)
+--R                                                                   Type: Void
+--E 109
+
+--S 110 of 601
+Z(i,j) == B(i)*j/500.0
+--R                                                                   Type: Void
+--E 110
+
+--S 111 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..250,j=0..50,_
+          style=="smooth",title=="Farfalline")
+--R   Compiling function A with type Variable i -> Expression Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type Variable i -> Expression Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %BR with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %BT with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %BV with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (6)  ThreeDimensionalViewport: "Farfalline"
+--R                                               Type: ThreeDimensionalViewport
+--E 111
+
+--S 112 of 601
+rotate(v3d,45,45)
+--R                                                                   Type: Void
+--E 112
+
+--S 113 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 113
+
+\end{chunk}
+
+\section{Farfalloni}
+Like {\sl farfalle}, {\sl farfalloni} (large butterflies) are well
+matched by a tomato- or butter-based sauce with peas and ham. They are
+also perfect with marrow vegetables such as roast courgette or pureed
+pumpkin, topped with Parmigiano-Reggiano and a sprinkling of {\sl noce
+moscata} (nutmeg).
+\begin{chunk}{*}
+)clear all
+
+--S 114 of 601
+A(i,j) == 10*cos((i+70)*%pi/70)*sin((2*j)*%pi/175+1.1*%pi)^9
+--R                                                                   Type: Void
+--E 114
+
+--S 115 of 601
+B(j)   == 0.3*sin((6-j)*%pi/7+0.4*%pi)
+--R                                                                   Type: Void
+--E 115
+
+--S 116 of 601
+C(i,j) == _
+  if ((17 <= i) and (i <= 52)) _
+   then 7*sin((i+35)*%pi/35)^3*sin((2*j*%pi)/175+1.1*%pi)^9 _
+   else A(i,j)
+--R                                                                   Type: Void
+--E 116
 
+--S 117 of 601
+D(i,j) == (j/2.0)+4*sin(i*%pi/70)*sin((j-10)*%pi/100) - _
+          4*sin(i*%pi/70)*sin((60-j)*%pi/100)
+--R                                                                   Type: Void
+--E 117
+
+--S 118 of 601
+E(i,j) == (j/2.0)+4*sin(i*%pi/70)+0.3*sin((2*i+2.8)*%pi/7)*sin((j-60)*%pi/20)
+--R                                                                   Type: Void
+--E 118
+
+--S 119 of 601
+F(i,j) == (j/2.0)-4*sin(i*%pi/70)-0.3*sin((2*i+2.8)*%pi/7)*sin((10-j)*%pi/20)
+--R                                                                   Type: Void
+--E 119
+
+--S 120 of 601
+X(i,j) == (3.0*i)/7.0+C(i,j)
+--R                                                                   Type: Void
+--E 120
+
+--S 121 of 601
+Y(i,j) == _
+  if ((10 <= j) and (j <= 60)) _
+   then D(i,j) _
+   else if (j <= 10) _
+         then F(i,j) _
+         else E(i,j)
+--R                                                                   Type: Void
+--E 121
+
+--S 122 of 601
+Z(i,j) == 3*sin((2*i+17.5)*%pi/35.)*sin(j*%pi/70)^1.5
+--R                                                                   Type: Void
+--E 122
+
+--S 123 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..70,j=0..70,_
+          style=="smooth",title=="Farfalloni")
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function D with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function F with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function E with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %BX with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %BZ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %CB with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (10)  ThreeDimensionalViewport: "Farfalloni"
+--R                                               Type: ThreeDimensionalViewport
+--E 123
+
+--S 124 of 601
+zoom(v3d,2.5,2.5,2.5)
+--R                                                                   Type: Void
+--E 124
+
+--S 125 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 125
+
+\end{chunk}
+
+\section{Festonati}
+This smooth member of the {\sl pasta corta} (short pasta) family is
+named after 'festoons' (decorative lengths of fabric with the rippled
+profile of a garland). {\sl Festonati} can be served with grilled
+aubergine or home-grown tomatoes, topped with grated scamorza, fresh
+basil, olive oil, garlic, and red chilli flakes.
 \begin{chunk}{*}
+)clear all
+
+--S 126 of 601
+X(i,j) == 5*cos(i*%pi/50)+0.5*cos(i*%pi/50)*(1+sin(j*%pi/100)) + _
+          0.5*cos((i+25)*%pi/25)*(1+sin(j*%pi/5))
+--R                                                                   Type: Void
+--E 126
+
+--S 127 of 601
+Y(i,j) == 5*sin(i*%pi/50)+0.5*sin(i*%pi/50)*(1+sin(j*%pi/100)) + _
+          0.5*cos(i**%pi/25)*(1+sin(j*%pi/5))
+--R                                                                   Type: Void
+--E 127
+
+--S 128 of 601
+Z(i,j) == j/2.0+2*sin((3*i+25)*%pi/50)
+--R                                                                   Type: Void
+--E 128
+
+--S 129 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..100,j=0..100,_
+          style=="smooth",title=="Festonati")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %CD with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %CF with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %CH with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Festonati"
+--R                                               Type: ThreeDimensionalViewport
+--E 129
+
+--S 130 of 601
+zoom(v3d,3.0,3.0,3.0)
+--R                                                                   Type: Void
+--E 130
+
+--S 131 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 131
+
+\end{chunk}
+
+\section{Fettuccine}
+This famous {\sl pasta lunga} (long pasta) is made with durum-wheat flour, water, and in the case of {\sl fettuccine alluovo}, eggs ideally within days of laying. {\sl Fettuccine} (little ribbons) hail from the Lazio region. Popular in many dishes, they are an ideal accompaniment to {\sl Alfredo} sauce, a rich mix of cream, parmesan, garlic, and parsley.
+\begin{chunk}{*}
+)clear all
+
+--S 132 of 601
+X(i,j) == 1.8*sin((4-i)*%pi/375)
+--R                                                                   Type: Void
+--E 132
+
+--S 133 of 601
+Y(i,y) == 1.6*cos((6-i)*%pi/375)*sin((3-i)*%pi/750)
+--R                                                                   Type: Void
+--E 133
+
+--S 134 of 601
+Z(i,j) == i/75.0 + j/20.0
+--R                                                                   Type: Void
+--E 134
+
+--S 135 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..10,_
+          style=="smooth",title=="Fettuccine")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %CJ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %CL with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %CN with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Fettuccine"
+--R                                               Type: ThreeDimensionalViewport
+--E 135
+
+--S 136 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 136
+
+--S 137 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 137
+
+\end{chunk}
+
+\section{Fiocchi Rigati}
+A distant relative of the {\sl farfalle} family, {\sl fiocchi rigati}
+(grooved flakes) are smaller than either {\sl farfalloni} or {\sl
+farfalle}, but larger than {\sl farfalline}. Their corrugated surface
+collects more sauce than a typical {\sl farfalle}. For a more unusual
+disk, {\sl fiocchi rigati} can be served in a tomato and vodka sauce.
+\begin{chunk}{*}
+)clear all
+
+--S 138 of 601
+A(i,j) == 10*cos((i+80)*%pi/80)*sin((j+110)*%pi/100)^9
+--R                                                                   Type: Void
+--E 138
+
+--S 139 of 601
+B(i,j) == 35.0*j/80.0+4*sin(i*%pi/80)*sin((j-10)*%pi/120)
+--R                                                                   Type: Void
+--E 139
+
+--S 140 of 601
+X(i,j) == _
+  if ((20 <= i) and (i <= 60)) _
+   then 7*sin((i+40)*%pi/40)^3*sin((j+110)*%pi/100)^9 + 30.0*i/80.0 _
+   else A(i,j) + 30.0*i/80.0
+--R                                                                   Type: Void
+--E 140
+
+--S 141 of 601
+Y(i,j) == B(i,j)-4*sin(i*%pi/80)*sin((70-j)*%pi/120)
+--R                                                                   Type: Void
+--E 141
+
+--S 142 of 601
+Z(i,j) == 3*sin((1+10)*%pi/20)*sin(j*%pi/80)^1.5-0.7*((sin(3*j*%pi/8)+1)/2)^4
+--R                                                                   Type: Void
+--E 142
+
+--S 143 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..80,j=0..80,_
+           style=="smooth",title=="Fiocchi Rigati")
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %CP with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %CR with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %CT with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (6)  ThreeDimensionalViewport: "Fiocchi Rigati"
+--R                                               Type: ThreeDimensionalViewport
+--E 143
+
+--S 144 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 144
+
+--S 145 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 145
+
+\end{chunk}
+
+\section{Fisarmoniche}
+Named after the accordion - whose bellows their bunched profiles
+recall - {\sl fisarmoniche} are perfect for capturing thick sauces,
+which cling to their folds. This sturdy pasta is said to have been
+invented in the fifteenth century, in the Italian town of Loreto in
+the Marche, east central Italy.
+\begin{chunk}{*}
+)clear all
+
+--S 146 of 601
+X(i,j) == (1.5+3*(i/70.0)^5+4*sin(j*%pi/200)^50)*cos(4*i*%pi/175)
+--R                                                                   Type: Void
+--E 146
+
+--S 147 of 601
+Y(i,j) == (1.5+3*(i/70.0)^5+4*sin(j*%pi/200)^50)*sin(4*i*%pi/175)
+--R                                                                   Type: Void
+--E 147
+
+--S 148 of 601
+Z(i,j) == j/50.0+cos(3*i*%pi/14)*sin(j*%pi/1000)
+--R                                                                   Type: Void
+--E 148
+
+--S 149 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..70,j=0..1000,_
+           style=="smooth",title=="Fisarmoniche")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %CV with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %CX with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %CZ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Fisarmoniche"
+--R                                               Type: ThreeDimensionalViewport
+--E 149
+
+--S 150 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 150
+
+--S 151 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 151
+
+\end{chunk}
+
+\section{Funghini}
+The modest dimensions of this {\sl pastine minute} (tiny pasta) make
+{\sl funghini} (little mushrooms) especially suitable for soups, such
+as a {\sl minestrone} made from chopped and sauteed celeriac.
+\begin{chunk}{*}
+)clear all
+
+--S 152 of 601
+A(i,j) == 5*cos(i*%pi/150)+0.05*cos(i*%pi/3)*sin(j*%pi/60)^2000
+--R                                                                   Type: Void
+--E 152
+
+--S 153 of 601
+B(i,j) == j/30.0*(5*sin(i*%pi/150)+0.05*sin(i*%pi/3))
+--R                                                                   Type: Void
+--E 153
+
+--S 154 of 601
+C(i,j) == j/10.0*(2*sin(i*%pi/150)+0.05*sin(i*%pi/3))
+--R                                                                   Type: Void
+--E 154
+
+--S 155 of 601
+D(i,j) == _
+  if (i <= 150) _
+   then B(i,j) _
+   else if (j <= 10) _
+         then C(i,j) _
+         else 2*sin(i*%pi/150)+0.05*sin(i*%pi/6)
+--R                                                                   Type: Void
+--E 155
+
+--S 156 of 601
+X(i,j) == 0.05*cos(A(i,j)*%pi/5)+0.3*cos(A(i,j)*%pi/5)*sin(3*D(i,j)*%pi/50)^2
+--R                                                                   Type: Void
+--E 156
+
+--S 157 of 601
+Y(i,j) == 0.01*sin(A(i,j)*%pi/5)+0.3*sin(A(i,j)*%pi/5)*sin(3*D(i,j)*%pi/50)^2
+--R                                                                   Type: Void
+--E 157
+
+--S 158 of 601
+Z(i,j) == 0.25*sin((D(i,j)+3)*%pi/10)
+--R                                                                   Type: Void
+--E 158
+
+--S 159 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..300,j=0..30,_
+           style=="smooth",title=="Funghini")
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function D with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %DB with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %DD with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %DF with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (8)  ThreeDimensionalViewport: "Funghini"
+--R                                               Type: ThreeDimensionalViewport
+--E 159
+
+--S 160 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 160
+
+\end{chunk}
+
+\section{Fusilli}
+A popular set from the {\sl pasta corta} (short pasta) family, {\sl
+fusilli} (little spindles) were originally made by quickly wrapping a
+{\sl spaghetto} around a large needle. Best served as {\sl
+pastasciutta} (pasta boild and drained) with a creamy sauce containing
+slices of spicy sausage.
+\begin{chunk}{*}
+)clear all
+
+--S 161 of 601
+X(i,j) == 6*cos((3*i+10)*%pi/100)*cos(j*%pi/25)
+--R                                                                   Type: Void
+--E 161
+
+--S 162 of 601
+Y(i,j) == 6*sin((3*i+10)*%pi/100)*cos(j*%pi/25)
+--R                                                                   Type: Void
+--E 162
+
+--S 163 of 601
+Z(i,j) == (3.0*i)/20.0+2.5*cos((j+12.5)*%pi/25)
+--R                                                                   Type: Void
+--E 163
+
+--S 164 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..200,j=0..25,_
+           style=="smooth",title=="Fusilli")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %DH with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %DJ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %DL with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Fusilli"
+--R                                               Type: ThreeDimensionalViewport
+--E 164
+
+--S 165 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 165
+
+--S 166 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 166
+
+\end{chunk}
+
+\section{Fusilli al Ferretto} To create this Neapolitan variety of
+{\sl fusilli}, a small amount of durum-wheat flour is kneaded and
+placed along a {\sl ferretto} (small iron stick) that is then rolled
+between the hands to create a thick irregular twist of dough. The
+shape is removed and left to dry on a wicker tray known as a {\sl
+spasa}. {\sl Fusilli al ferretto} are best dished up with a lamb {\sl ragu}.
+\begin{chunk}{*}
+)clear all
+
+--S 167 of 601
+A(i,j) == 6.0*i/7.0+15*cos(j*%pi/20)
+--R                                                                   Type: Void
+--E 167
+
+--S 168 of 601
+X(i,j) == (3+1.5*sin(i*%pi/140)^0.5*sin(j*%pi/20))*sin(13*i*%pi/280) + _
+          5*sin(2*A(i,j)*%pi/135)
+--R                                                                   Type: Void
+--E 168
+
+--S 169 of 601
+Y(i,j) == (3+1.5*sin(i*%pi/140)^0.5*sin(j*%pi/20))*cos(13*i*%pi/280)
+--R                                                                   Type: Void
+--E 169
+
+--S 170 of 601
+Z(i,j) == A(i,j)
+--R                                                                   Type: Void
+--E 170
+
+--S 171 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..140,j=0..40,_
+           style=="smooth",title=="Fusilli al Ferretto")
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %DN with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %DP with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %DR with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (5)  ThreeDimensionalViewport: "Fusilli al Ferretto"
+--R                                               Type: ThreeDimensionalViewport
+--E 171
+
+--S 172 of 601
+zoom(v3d,3.0,3.0,3.0)
+--R                                                                   Type: Void
+--E 172
+
+--S 173 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 173
+
+\end{chunk}
+
+\section{Fusilli Capri}
+A longer and more compact regional adaptation of {\sl fusilli}, {\sl
+fusilli Capri} are suited to a hearty {\sl ragu} of lamb or por sausages,
+or may also be combined with rocket and lemon to form a lighter dish.
+\begin{chunk}{*}
+)clear all
+
+--S 174 of 601
+X(i,j) == 6*cos(j*%pi/50)*cos((i+2.5)*%pi/25)
+--R                                                                   Type: Void
+--E 174
+
+--S 175 of 601
+Y(i,j) == 6*cos(j*%pi/50)*sin((i+2.5)*%pi/25)
+--R                                                                   Type: Void
+--E 175
+
+--S 176 of 601
+Z(i,j) == 2.0*i/3.0 + 14*cos((j+25)*%pi/50)
+--R                                                                   Type: Void
+--E 176
+
+--S 177 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..50,_
+           style=="smooth",title=="Fusilli Capri")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %DT with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %DV with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %DX with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Fusilli Capri"
+--R                                               Type: ThreeDimensionalViewport
+--E 177
+
+--S 178 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 178
+
+--S 179 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 179
+
+\end{chunk}
+
+\section{Fusilli Lunghi Bucati}
+A distinctive member of the extended {\sl fusilli} clan, {\sl fusilli
+lunghi bucati} (long pierced {\sl fusilli}) originated in Campania,
+southern Italy, and have a spring-like profile. Like all {\sl fusilli}
+they are traditionally consumed with a meat-based {\sl ragu}, but may
+also be combined with thick vegetable sauces and baked in an oven.
+\begin{chunk}{*}
+)clear all
+
+--S 180 of 601
+A(i,j) == 10+cos(i*%pi/10)+2*cos((j+10)*%pi/10)+10*cos((j+140)*%pi/160)
+--R                                                                   Type: Void
+--E 180
+
+--S 181 of 601
+B(i,j) == 20+cos(i*%pi/10)+2*cos((j+10)*%pi/10)
+--R                                                                   Type: Void
+--E 181
+
+--S 182 of 601
+C(i,j) == (j+10.0)*%pi/10.0
+--R                                                                   Type: Void
+--E 182
+
+--S 183 of 601
+D(i,j) == i*%pi/10.0
+--R                                                                   Type: Void
+--E 183
+
+--S 184 of 601
+E(i,j) == 7+20*sin((j-20)*%pi/160)
+--R                                                                   Type: Void
+--E 184
+
+--S 185 of 601
+F(i,j) == 70*(0.1-(j-180.0)/200.0)
+--R                                                                   Type: Void
+--E 185
+
+--S 186 of 601
+X(i,j) == _
+  if ((20 <= j) and (j <= 180)) _
+   then A(i,j) _
+   else if (j <= 20) _
+         then cos(D(i,j))+2*cos(C(i,j)) _
+         else B(i,j)
+--R                                                                   Type: Void
+--E 186
+
+--S 187 of 601
+Y(i,j) == _
+  if ((20 <= j) and (j <= 180)) _
+   then sin(D(i,j))+2*sin(C(i,j)) _
+   else sin(D(i,j))+2*sin(C(i,j))
+--R                                                                   Type: Void
+--E 187
+
+--S 188 of 601
+Z(i,j) == _
+  if ((20 <= j) and (j <= 180)) _
+   then E(i,j) _
+   else if (j <= 20) _
+         then (7.0*j/20.0) _
+         else F(i,j)
+--R                                                                   Type: Void
+--E 188
+
+--S 189 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..20,j=0..200,_
+           style=="smooth",title=="Fusilli Lunghi Bucati")
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function D with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function C with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function E with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function F with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %DZ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %EB with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %ED with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (10)  ThreeDimensionalViewport: "Fusilli Lunghi Bucati"
+--R                                               Type: ThreeDimensionalViewport
+--E 189
+
+--S 190 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 190
+
+--S 191 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 191
+
+\end{chunk}
+
+\section{Galletti}
+According to their maker, Barilla, the origin of {\sl galletti} (small
+cocks) is uncertain, but their shape recalls that of the {\sl
+chifferi} with the addtion of an undulating crest. {\sl Galletti} are
+usually served in tomato sauces, but combine wqually well with a {\sl
+boscaiola} (woodsman's) sauce of mushrooms.
+\begin{chunk}{*}
+)clear all
+
+--S 192 of 601
+A(i)   == (1+sin(i*%pi+1.5*%pi)/2)^5
+--R                                                                   Type: Void
+--E 192
+
+--S 193 of 601
+B(i,j) == 0.4*sin(A(i/140)*%pi+0.5*%pi)^1000*cos(j*%pi/70)
+--R                                                                   Type: Void
+--E 193
+
+--S 194 of 601
+C(i,j) == 0.15*sin(A(i/140)*%pi+0.5*%pi)^1000*cos(j*%pi/7)
+--R                                                                   Type: Void
+--E 194
+
+--S 195 of 601
+D(i,j) == 0.4*cos(A(i/140)*%pi)^1000*sin(j*%pi/70)
+--R                                                                   Type: Void
+--E 195
+
+--S 196 of 601
+X(i,j) == (0.5+0.3*cos(A(i/140)*2*%pi))*cos(j*%pi/70) + _
+          0.15*(j/70.0)^10*cos(A(i/140)*2*%pi)^3 + B(i,j)
+--R                                                                   Type: Void
+--E 196
+
+--S 197 of 601
+Y(i,j) == 0.35*sin(A(i/140)*2*%pi)+0.15*(j/70.0)*sin(A(i/140)*2*%pi)+C(i,j)
+--R                                                                   Type: Void
+--E 197
+
+--S 198 of 601
+Z(i,j) == (0.4+0.3*cos(A(i/140)*2*%pi))*sin(j*%pi/70) + D(i,j)
+--R                                                                   Type: Void
+--E 198
+
+--S 199 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..140,j=0..70,_
+           style=="smooth",title=="Galletti")
+--R   Compiling function A with type Polynomial Fraction Integer -> 
+--R      Expression Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function D with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %EF with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %EH with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %EJ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (8)  ThreeDimensionalViewport: "Galletti"
+--R                                               Type: ThreeDimensionalViewport
+--E 199
+
+--S 200 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 200
+
+\end{chunk}
+
+\section{Garganelli}
+A grooved {\sl pasta corta} (short pasta), similar to {\sl maccheroni}
+but with pointed slanting ends, {\sl garganelli} are shaped like the
+gullet of a chicken ('{\sl garganel}' in the northern Italian
+Emiliano-Romagnolo dialect). Traditionally cooked in broth, {\sl
+garganelli} are also sometimes served in hare sauce with chopped bacon.
+\begin{chunk}{*}
+)clear all
+
+--S 201 of 601
+A(i,j) == (i-25.0)/125.0*j
+--R                                                                   Type: Void
+--E 201
+
+--S 202 of 601
+B(i,j) == (i-25.0)/125.0*(150.0-j)
+--R                                                                   Type: Void
+--E 202
+
+--S 203 of 601
+C(i,j) == _
+  if ((j <= 75) or (i <= 25)) _
+   then A(i,j) _
+   else if ((J >= 75) or (i <= 25)) _
+         then B(i,j) _
+         else if ((j >= 75) or (i >= 25)) _
+               then B(i,j) _
+               else A(i,j)
+--R                                                                   Type: Void
+--E 203
+
+--S 204 of 601
+X(i,j) == 0.1*cos(j*%pi/3)+(3+sin(C(i,j)*%pi/60))*cos(7*C(i,j)*%pi/60)
+--R                                                                   Type: Void
+--E 204
+
+--S 205 of 601
+Y(i,j) == 0.1*sin(j*%pi/3)+(3+sin(C(i,j)*%pi/60))*sin(7*C(i,j)*%pi/60)
+--R                                                                   Type: Void
+--E 205
+
+--S 206 of 601
+Z(i,j) == 6.0*j/25.0+C(i,j)/4.0
+--R                                                                   Type: Void
+--E 206
+
+--S 207 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..50,j=0..150,_
+           style=="smooth",title=="Garganelli")
+--R   Compiling function A with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function C with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %EL with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %EN with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %EP with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (7)  ThreeDimensionalViewport: "Garganelli"
+--R                                               Type: ThreeDimensionalViewport
+--E 207
+
+--S 208 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 208
+
+--S 209 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 209
+
+\end{chunk}
+
+\section{Gemelli}
+To create a {\sl gemello}, a single pasta strand is twisted into a
+spiral with a deceptively dual appearance. In the south of Italy {\sl
+gemelli} (twins) are served with tomato, mozzarella, and basil, while
+in the northwest they are preferred with pesto and green beans, or in
+salads.
+\begin{chunk}{*}
+)clear all
+
+--S 210 of 601
+X(i,j) == 6*cos(j*1.9*%pi/50+0.55*%pi)*cos(3.0*i/25.0)
+--R                                                                   Type: Void
+--E 210
+
+--S 211 of 601
+Y(i,j) == 6*cos(j*1.9*%pi/50+0.55*%pi)*sin(3.0*i/25.0)
+--R                                                                   Type: Void
+--E 211
+
+--S 212 of 601
+Z(i,j) == 8*sin(j*1.9*%pi/50+0.55*%pi)+3.0*i/4.0
+--R                                                                   Type: Void
+--E 212
+
+--S 213 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..100,j=0..50,_
+           style=="smooth",title=="Gemelli")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %ER with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %ET with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %EV with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Gemelli"
+--R                                               Type: ThreeDimensionalViewport
+--E 213
+
+--S 214 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 214
+
+--S 215 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 215
+
+\end{chunk}
+
+\section{Gigli}
+With their fluted edges and cone-like shape, {\sl gigli} resemble
+small bells ({\sl campanelle}) or lilies ({\sl gigli}), after which
+they are named. Another more recent design, {\sl gigli} are shaped to
+capture thick meaty sauces.
+\begin{chunk}{*}
+)clear all
+
+--S 216 of 601
+X(i,j) == (0.8-0.6*sin(j*%pi/80)^0.5)*cos(i*%pi/50)+0.08*sin(j*%pi/40)
+--R                                                                   Type: Void
+--E 216
+
+--S 217 of 601
+Y(i,j) == (0.8-0.6*sin(j*%pi/80)^0.5)*sin(i*%pi/50)+0.08*sin(j*%pi/40)
+--R                                                                   Type: Void
+--E 217
+
+--S 218 of 601
+Z(i,j) == 1.1*j/40.0+0.7*(1-sin((150-i)*%pi/300))^2
+--R                                                                   Type: Void
+--E 218
+
+--S 219 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..40,_
+           style=="smooth",title=="Gigli")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %EX with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %EZ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %FB with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Gigli"
+--R                                               Type: ThreeDimensionalViewport
+--E 219
+
+--S 220 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 220
+
+--S 221 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 221
+
+\end{chunk}
+
+\section{Giglio Ondulato}
+Identical to {\sl gigli} but with crenellated edges, {\sl giglio
+ondulato} are made of durum-wheat flour and water.
+\begin{chunk}{*}
+)clear all
+
+--S 222 of 601
+A(i,j) == 0.6+0.03*((40.0-j)/40.0)^10*cos((4*i+75)*%pi/15) - _
+          0.5*sin(j*%pi/80)^0.6
+--R                                                                   Type: Void
+--E 222
+
+--S 223 of 601
+B(i,j) == sin(2*i*%pi/75)+(i/150.0)^10*(0.08*sin(j*%pi/40)+0.03*sin(j*%pi/5))
+--R                                                                   Type: Void
+--E 223
+
+--S 224 of 601
+X(i,j) == A(i,j)*cos(2*i*%pi/75)+(i/150.0)^10 * _
+          (0.08*sin(j*%pi/40)+0.03*cos(j*%pi/5))
+--R                                                                   Type: Void
+--E 224
+
+--S 225 of 601
+Y(i,j) == (0.6+0.03*((40.0-j)/40.0)^10*sin(4*i*%pi/15)-0.5*sin(j*%pi/80)^0.6)*_
+          B(i,j)
+--R                                                                   Type: Void
+--E 225
+
+--S 226 of 601
+Z(i,j) == 1.1*j/40.0+0.7*(1-sin((150.0-i)*%pi/300.0))
+--R                                                                   Type: Void
+--E 226
+
+--S 227 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..40,_
+           style=="smooth",title=="Giglio Ondulato")
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %FD with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %FF with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %FH with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (6)  ThreeDimensionalViewport: "Giglio Ondulato"
+--R                                               Type: ThreeDimensionalViewport
+--E 227
+
+--S 228 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 228
+
+--S 229 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 229
+
+\end{chunk}
+
+\section{Gnocchetti Sardi}
+As their name suggests, {\sl gnocchetti} are simply small {\sl
+gnocchi} (or 'dumplings'). They go well with ricotta or Pecorino
+Romano cheese, or served with thick sauces such as a veal {\sl
+ragu}. {\sl Gnocchetti} originated in Sardinia, a Mediterranean island
+to the west of Italy.
+\begin{chunk}{*}
+)clear all
+
+--S 230 of 601
+A(i)   == 0.8+3*sin(i*%pi/150)^0.8
+--R                                                                   Type: Void
+--E 230
+
+--S 231 of 601
+B(i,j) == abs(cos((2*j+7.5)*%pi/15))
+--R                                                                   Type: Void
+--E 231
+
+--S 232 of 601
+X(i,j) == A(i)*cos(i*%pi/50)+0.2*cos(i*%pi/50)*sin(j*%pi/150)*B(i,j)
+--R                                                                   Type: Void
+--E 232
+
+--S 233 of 601
+Y(i,j) == A(i)*sin(i*%pi/50)+0.2*sin(i*%pi/50)*sin(j*%pi/150)*B(i,j)
+--R                                                                   Type: Void
+--E 233
+
+--S 234 of 601
+Z(i,j) == 13.0*cos(j*%pi/150)
+--R                                                                   Type: Void
+--E 234
+
+--S 235 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..50,j=0..150,_
+           style=="smooth",title=="Gnocchetti Sardi")
+--R   Compiling function A with type Variable i -> Expression Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %FI with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %FJ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %FL with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (6)  ThreeDimensionalViewport: "Gnocchetti Sardi"
+--R                                               Type: ThreeDimensionalViewport
+--E 235
+
+--S 236 of 601
+rotate(v3d,45,45)
+--R                                                                   Type: Void
+--E 236
+
+--S 237 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 237
+
+\end{chunk}
+
+\section{Gnocchi}
+Members of an extended family, {\sl gnocchi} (dumplings) often
+resemble a semi-open grooved shell. Their preparation and ingredients
+(including potato, durum wheat, buckwheat and semolina) vary according
+to type. {\sl Gnocchi} are often added to a sauce made from fontina cheese.
+\begin{chunk}{*}
+)clear all
+
+--S 238 of 601
+A(i,j) == i/40.0*sin(j*%pi/130)
+--R                                                                   Type: Void
+--E 238
+
+--S 239 of 601
+B(i,j) == abs(cos((j+13)*%pi/26))
+--R                                                                   Type: Void
+--E 239
+
+--S 240 of 601
+X(i,j) == 0.2*cos(i*1.3*%pi/40)*sin(j*%pi/130)*B(i,j) + _
+          A(i,j)*cos(i*1.3*%pi/40)
+--R                                                                   Type: Void
+--E 240
+
+--S 241 of 601
+Y(i,j) == 0.2*sin(i*1.3*%pi/40)*sin(j*%pi/130)*B(i,j) + _
+          A(i,j)*sin(i*1.3*%pi/40)
+--R                                                                   Type: Void
+--E 241
+
+--S 242 of 601
+Z(i,j) == 1.5*cos(j*%pi/130)
+--R                                                                   Type: Void
+--E 242
+
+--S 243 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..40,j=0..130,_
+           style=="smooth",title=="Gnocchi")
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %FM with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %FN with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %FP with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (6)  ThreeDimensionalViewport: "Gnocchi"
+--R                                               Type: ThreeDimensionalViewport
+--E 243
+
+--S 244 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 244
+
+\end{chunk}
+
+\section{Gramigna}
+A speciality of the northern Italian region of Emilia-Romagna, {\sl
+gramigna} (little weed) are traditionally served with a chunky sauce
+of sausages, or accompanied by the world-famous {\sl ragu alla
+bolognese}. Alternatively, {\sl gramigna} are sometimes presented {\sl
+alla pomodoro} (with a light tomato sauce).
+\begin{chunk}{*}
+)clear all
+
+--S 245 of 601
+X(i,j) == (0.5+5.6*(j/150.0)^2+0.3*cos(2*i*%pi/25))*cos(2.1*j*%pi/150)
+--R                                                                   Type: Void
+--E 245
+
+--S 246 of 601
+Y(i,j) == 0.3*sin(2*i*%pi/25)
+--R                                                                   Type: Void
+--E 246
+
+--S 247 of 601
+Z(i,j) == (0.5+3.2*(j/150.0)^2+0.3*cos(2*i*%pi/25))*sin(2.1*j*%pi/150)
+--R                                                                   Type: Void
+--E 247
+
+--S 248 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..25,j=0..150,_
+           style=="smooth",title=="Gramigna")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %FR with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %FT with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %FV with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Gramigna"
+--R                                               Type: ThreeDimensionalViewport
+--E 248
+
+--S 249 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 249
+
+--S 250 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 250
+
+\end{chunk}
+
+\section{Lancette}
+No longer than 15mm, {\sl lancette} or 'hands' (of a clock) belong to
+the {\sl postine minute} (tiny pasta) clan. They are delicious in
+consommes with a sprinkling of croutons and chopped greens. {\sl
+Lancette} are also an excellent addition to mushroom or chicken soups.
+\begin{chunk}{*}
+)clear all
+
+--S 251 of 601
+A(i,j) == 0.4*sin(5*j*%pi/9)
+--R                                                                   Type: Void
+--E 251
+
+--S 252 of 601
+B(i,j) == sin((j+45)*%pi/90)
+--R                                                                   Type: Void
+--E 252
+
+--S 253 of 601
+C(i,j) == (3.0*i-75.0)/5.0*sin(j*%pi/90)-(1-sin(i*%pi/50))^25*A(i,j)*B(i,j)
+--R                                                                   Type: Void
+--E 253
+
+--S 254 of 601
+D(i,j) == _
+  if (i <= 25) _
+   then C(i,j) _
+   else 30.0*(i-25.0)/50.0*sin(j*%pi/90)+sin((i-25)*%pi/50)*A(i,j)*B(i,j)
+--R                                                                   Type: Void
+--E 254
+
+--S 255 of 601
+X(i,j) == 4*cos(3*D(i,j)*%pi/50)
+--R                                                                   Type: Void
+--E 255
+
+--S 256 of 601
+Y(i,j) == 4*sin(3*D(i,j)*%pi/50)*(0.3+(1-sin(j*%pi/90))^0.6)
+--R                                                                   Type: Void
+--E 256
+
+--S 257 of 601
+Z(i,j) == j/3.0
+--R                                                                   Type: Void
+--E 257
+
+--S 258 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..50,j=0..90,_
+           style=="smooth",title=="Lancette")
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function D with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %FX with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %FZ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %GB with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (8)  ThreeDimensionalViewport: "Lancette"
+--R                                               Type: ThreeDimensionalViewport
+--E 258
+
+--S 259 of 601
+zoom(v3d,3.0,3.0,3.0)
+--R                                                                   Type: Void
+--E 259
+
+--S 260 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 260
+
+\end{chunk}
+
+\section{Lasagna Larga Doppia Riccia}
+As their name suggests, {\sl lasagna larga doppia riccia} (large
+doubly curled lasagna) have two long undulating edges. The curls give
+the pasta a variable consistency when cooked, and help them to collect
+sauce. {\sl Lasagne} are excellent with ricotta and a {\sl ragu
+napoletano}, or cooked {\sl al forno} (at the oven) with a creamy {\sl
+besciamella} sauce.
+\begin{chunk}{*}
+)clear all
+
+--S 261 of 601
+X(i,j) == _
+  if ((8 <= i) and (i <= 42)) _
+   then 5.0/6.0+(5.0*i-40.0)/34.0 _
+   else if (i <= 8) _
+         then 5.0*i/48.0 _
+         else 5.0/6.0*(7+(i-42.0)/8)
+--R                                                                   Type: Void
+--E 261
+
+--S 262 of 601
+Y(i,j) == j/15.0
+--R                                                                   Type: Void
+--E 262
+
+--S 263 of 601
+Z(i,j) == _
+  if ((8 <= i) and (i <= 42)) _
+   then 0.0 _
+   else if (i <= 8) _
+         then (8.0-i)/32.0*cos((j+3)*%pi/6) _
+         else 0.25*(i-42)/8.0*cos((j+9)*%pi/6)
+--R                                                                   Type: Void
+--E 263
+
+--S 264 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..50,j=0..150,_
+           style=="smooth",title=="Lasagna Larga Doppia Riccia")
+--R   Compiling function X with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %GD with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %GF with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %GH with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Lasagna Larga Doppia Riccia"
+--R                                               Type: ThreeDimensionalViewport
+--E 264
+
+--S 265 of 601
+zoom(v3d,3.0,3.0,3.0)
+--R                                                                   Type: Void
+--E 265
+
+--S 266 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 266
+
+\end{chunk}
+
+\section{Linguine}
+The thinnest member of the {\sl bavette} (little dribble) family, {\sl
+linguine} (little tongues) are best accompanied by fresh tomato,
+herbs, a drop of olive oil, garlic, anchovies, and hot peppers. {\sl
+Linguine} may also be served with shellfish sauces, or white sauces of
+cream and soft cheese, flavoured with lemon, saffron, or ginger.
+\begin{chunk}{*}
+)clear all
+
+--S 267 of 601
+X(i,j) == cos(i*%pi/75)
+--R                                                                   Type: Void
+--E 267
+
+--S 268 of 601
+Y(i,j) == 2*sin(i*%pi/75)
+--R                                                                   Type: Void
+--E 268
+
+--S 269 of 601
+Z(i,j) == j/5.0
+--R                                                                   Type: Void
+--E 269
+
+--S 270 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..50,_
+           style=="smooth",title=="Linguine")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %GJ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %GL with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %GN with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Linguine"
+--R                                               Type: ThreeDimensionalViewport
+--E 270
+
+--S 271 of 601
+zoom(v3d,2.5,2.5,2.5)
+--R                                                                   Type: Void
+--E 271
+
+--S 272 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 272
+
+\end{chunk}
+
+\section{Lumaconi Rigati}
+Originally from Campania and Liguria, {\sl lumaconi rigati} (big
+ribbed snails) can be stuffed with a wide range of fillings, including
+spinach and ricotta cheese. Like cannelloni, they can then be covered
+in {\sl besciamella} and cooked in the oven. Smaller members of the
+family ({\sl lumache}) are also available.
+\begin{chunk}{*}
+)clear all
+
+--S 273 of 601
+A(i,j) == 0.45+0.01*cos(i*%pi/3)+j/300.0*abs(cos(i*%pi/240))*cos(i*%pi/120)^20
+--R                                                                   Type: Void
+--E 273
+
+--S 274 of 601
+B(i,j) == j/300.0*abs(cos(i*%pi/240))*sin(i*%pi/120) + _
+          0.125*(j/60.0)^6*sin(i*%pi/120)
+--R                                                                   Type: Void
+--E 274
+
+--S 275 of 601
+X(i,j) == (0.4*cos(i*%pi/120)+A(i,j))*cos(j*%pi/60) + _
+          0.48*(j/60.0)^6*sin((i+60)*%pi/120)^3
+--R                                                                   Type: Void
+--E 275
+
+--S 276 of 601
+Y(i,j) == 0.5*sin(i*%pi/120)+0.01*sin(i*%pi/3)+B(i,j)
+--R                                                                   Type: Void
+--E 276
+
+--S 277 of 601
+Z(i,j) == (0.45+0.4*cos(i*%pi/120))*sin(j*%pi/60)
+--R                                                                   Type: Void
+--E 277
+
+--S 278 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..240,j=0..60,_
+           style=="smooth",title=="Lumaconi Rigati")
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %GO with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %GP with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %GR with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (6)  ThreeDimensionalViewport: "Lumaconi Rigati"
+--R                                               Type: ThreeDimensionalViewport
+--E 278
+
+--S 279 of 601
+rotate(v3d,90,180)
+--R                                                                   Type: Void
+--E 279
+
+--S 280 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 280
+
+\end{chunk}
+
+\section{Maccheroni}
+The origin of the name {\sl maccheroni} is uncertain. It is used
+generically to describe a hollow {\sl pasta corta} (short pasta) that
+is moade of durum-wheat flour and perhasp eggs. The pasta can be
+served {\sl con le sarde} (with sardines) - a dish enhanced by a touch
+of fennel.
+\begin{chunk}{*}
+)clear all
+
+--S 281 of 601
+X(i,j) == 8*cos(i*%pi/75)+0.2*cos(4*i*%pi/15)+5*cos(j*%pi/100)
+--R                                                                   Type: Void
+--E 281
+
+--S 282 of 601
+Y(i,j) == 8*sin(i*%pi/75)+0.2*sin(4*i*%pi/15)+4*sin(j*%pi/100)
+--R                                                                   Type: Void
+--E 282
+
+--S 283 of 601
+Z(i,j) == 6.0*j/5.0
+--R                                                                   Type: Void
+--E 283
+
+--S 284 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..50,_
+           style=="smooth",title=="Maccheroni")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %GT with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %GV with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %GX with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Maccheroni"
+--R                                               Type: ThreeDimensionalViewport
+--E 284
+
+--S 285 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 285
+
+--S 286 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 286
+
+\end{chunk}
+
+\section{Maccheroni Alla Chitarra}
+Coming from the central Italian region of Abruzzo, {\sl maccheroni
+alla chitarra} (guitar {\sl maccheroni}) have a square cross-section,
+produced when a thin sheet of pasta is pressed through a frame of
+closely ranged wires (or {\sl chitarra}) that lends the pasta its
+name. Usually seved with a mutton {\sl ragu}, or {\sl pallottelle}
+(veal meatballs).
+\begin{chunk}{*}
+)clear all
+
+--S 287 of 601
+X(i,j) == 0.05*cos(i*%pi/60)^3 + 0.05*cos(i*%pi/60)
+--R                                                                   Type: Void
+--E 287
+
+--S 288 of 601
+Y(i,j) == 0.05*sin(i*%pi/60)^3 + 0.05*sin(i*%pi/60)
+--R                                                                   Type: Void
+--E 288
+
+--S 289 of 601
+Z(i,j) == j/60.0
+--R                                                                   Type: Void
+--E 289
+
+--S 290 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..120,j=0..60,_
+           style=="smooth",title=="Maccheroni Alla Chitarra")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %GZ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %HB with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %HD with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Maccheroni Alla Chitarra"
+--R                                               Type: ThreeDimensionalViewport
+--E 290
+
+--S 291 of 601
+zoom(v3d,2.5,2.5,2.5)
+--R                                                                   Type: Void
+--E 291
+
+--S 292 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 292
+
+\section{Mafaldine}
+Named at the turn of the twentieth century after Princess Mafalda of
+the House of Savoy, {\sl mafaldine} are thin flat sheets of
+durum-wheat flour pasta with a rippled finish on each long edge. They
+are generally served with meaty sauces such as {\sl ragu napoletano}
+or in seafood dishes.
+\begin{chunk}{*}
+)clear all
+
+--S 293 of 601
+X(i,j) == 7.0*i/18.0
+--R                                                                   Type: Void
+--E 293
+
+--S 294 of 601
+Y(i,j) == j/3.0
+--R                                                                   Type: Void
+--E 294
+
+--S 295 of 601
+Z(i,j) == _
+  if ((6 <= i) and (i <= 24)) _
+   then 0.0 _
+   else if (i <= 6) _
+         then (6.0-i)/6.0*cos((j+5)*%pi/10) _
+         else (i-24.0)/6.0*cos((j+15)*%pi/10)
+--R                                                                   Type: Void
+--E 295
+
+--S 296 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..30,j=0..150,_
+           style=="smooth",title=="Mafaldine")
+--R   Compiling function X with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %HF with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %HH with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %HJ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Mafaldine"
+--R                                               Type: ThreeDimensionalViewport
+--E 296
+
+--S 297 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 297
+
+--S 298 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 298
+
+\end{chunk}
+
+\section{Manicotti}
+One of the oldest-known durum-wheat varieties, {\sl manicotti}
+(sleeves) were originally prepared by cutting dough into rectangles,
+which were topped with stuffing, rolled and finally baked {\sl al
+forno} (at the oven). Today they are served containing a variety of
+cheeses and covered in a savoury sauce, like filled dinner crepes.
+\begin{chunk}{*}
+)clear all
+
+--S 299 of 601
+A(i,j) == -7*sin((i-100)*%pi/100)^2+0.3*sin((3*i-300)*%pi/10)
+--R                                                                   Type: Void
+--E 299
+
+--S 300 of 601
+B(i,j) == -8*cos((i-100)*%pi/100)+0.3*cos((3*i-300)*%pi/10)
+--R                                                                   Type: Void
+--E 300
+
+--S 301 of 601
+C(i,j) == -8*cos((i-100)*%pi/100)+22*sin((j-20)*%pi/40)
+--R                                                                   Type: Void
+--E 301
+
+--S 302 of 601
+X(i,j) == _
+  if (i < 100) _
+   then 7*sin(i*%pi/100)^2+0.3*sin(3*i*%pi/10) _
+   else A(i,j)
+--R                                                                   Type: Void
+--E 302
+
+--S 303 of 601
+Y(i,j) == _
+  if (i < 100) _
+   then 8*cos(i*%pi/100)+0.3*cos(3*i*%pi/10) _
+   else B(i,j)
+--R                                                                   Type: Void
+--E 303
+
+--S 304 of 601
+Z(i,j) == _
+  if (i < 100) _
+   then 8*cos(i*%pi/100)+22*sin((j-20)*%pi/40) _
+   else C(i,j)
+--R                                                                   Type: Void
+--E 304
+
+--S 305 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..200,j=0..40,_
+           style=="smooth",title=="Manicotti")
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--I   Compiling function %HL with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %HN with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %HP with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (7)  ThreeDimensionalViewport: "Manicotti"
+--R                                               Type: ThreeDimensionalViewport
+--E 305
+
+--S 306 of 601
+zoom(v3d,1.5,1.5,1.5)
+--R                                                                   Type: Void
+--E 306
+
+--S 307 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 307
+
+\end{chunk}
+
+\section{Orecchiette}
+This pasta is popular in the southeastern coastal region of Puglia in
+Italy, where it is customarily cooked in dishes with rapini, a
+relative of broccoli that grows plentifully in the area. {\sl
+Orecchiette} (litte ears) also pair well with other vegetables such as
+beans, and with salty seasonings such as anchovies, capers, or olives.
+\begin{chunk}{*}
+)clear all
+
+--S 308 of 601
+X(i,j) == 2.0*j/3.0*cos(i*%pi/75)+0.3*cos(2*i*%pi/15)
+--R                                                                   Type: Void
+--E 308
+
+--S 309 of 601
+Y(i,j) == 10*sin(i*%pi/75)
+--R                                                                   Type: Void
+--E 309
+
+--S 310 of 601
+Z(i,j) == 0.1*cos(i*%pi/3)+5*(0.5+0.5*cos(2*i*%pi/75))^4*cos(j*%pi/30)^2 + _
+          1.5*(0.5+0.5*cos(2*i*%pi/75))^5*sin(j*%pi/30)^10
+--R                                                                   Type: Void
+--E 310
+
+--S 311 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..15,_
+           style=="smooth",title=="Orecchiette")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %HR with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %HT with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %HV with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Orecchiette"
+--R                                               Type: ThreeDimensionalViewport
+--E 311
+
+--S 312 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 312
+
+\end{chunk}
+
+\section{Paccheri}
+Part of the {\sl pasta corta} (short pasta) family, {\sl paccheri} are
+ribbed pasta cylinders that (due to their large size) are recommended
+with aubergine, seafood, or indeed any chunky sauce. It is thought the
+name stems from the term {\sl paccare}, which means 'to smack' in the
+southern Italian region of Campania.
+\begin{chunk}{*}
+)clear all
+
+--S 313 of 601
+X(i,j) == (j+60.0)/60.0*cos(i*%pi/75)+0.5*cos(j*%pi/60)+cos((i+j)*%pi/75)
+--R                                                                   Type: Void
+--E 313
+
+--S 314 of 601
+Y(i,j) == 2.6*sin(i*%pi/75)+0.3*sin(j*%pi/60)
+--R                                                                   Type: Void
+--E 314
+
+--S 315 of 601
+Z(i,j) == 7.0*j/30.0
+--R                                                                   Type: Void
+--E 315
+
+--S 316 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..30,_
+           style=="smooth",title=="Paccheri")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %HX with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %HZ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %IB with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Paccheri"
+--R                                               Type: ThreeDimensionalViewport
+--E 316
+
+--S 317 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 317
+
+\end{chunk}
+
+\section{Pappardelle}
+This {\sl pasta lunga} (long pasta) is often cooked with duck, pigeon,
+or other game fowl. {\sl Pappardelle} are so popular that towns in
+Italy hold festivals in their honour, such as the {\sl Sagra delle
+Pappardelle al Cinghiale} (Feast of the {\sl Pappardelle} and Boar) in
+Torre Alfina, central Italy.
+\begin{chunk}{*}
+)clear all
+
+--S 318 of 601
+A(i,j) == cos(i*%pi/80)+(3.0*j)/50.0*sin(21*i*%pi/800)
+--R                                                                   Type: Void
+--E 318
+
+--S 319 of 601
+B(i,j) == sin(i*%pi/3200)^0.1*sin(i*%pi/80)
+--R                                                                   Type: Void
+--E 319
+
+--S 320 of 601
+C(i,j) == 3.0*j/50.0+0.5*sin(i*%pi/200)
+--R                                                                   Type: Void
+--E 320
+
+--S 321 of 601
+D(i,j) == cos(i*%pi/80)+3.0*j/50.0*sin(21*i*%pi/800)
+--R                                                                   Type: Void
+--E 321
+
+--S 322 of 601
+E(i,j) == sin(i*%pi/3200)^0.5*sin(i*%pi/80)
+--R                                                                   Type: Void
+--E 322
+
+--S 323 of 601
+F(i,j) == 3.0*j/50.0+0.5*sin(i*%pi/200)
+--R                                                                   Type: Void
+--E 323
+
+--S 324 of 601
+vsp:=createThreeSpace()
+--R
+--R   (7)  3-Space with 0 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 324
+
+--S 325 of 601
+makeObject(surface(A(i,j),B(i,j),C(i,j)),i=0..800,j=0..5,space==vsp)
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %ID with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %IF with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %IH with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (8)  3-Space with 1 component
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 325
+
+--S 326 of 601
+makeObject(surface(0.6*D(i,j),0.8*E(i,j),0.9*F(i,j)),i=0..800,j=0..5,_
+           space==vsp)
+--R   Compiling function D with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function E with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function F with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %IJ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %IL with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %IN with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (9)  3-Space with 2 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 326
+
+--S 327 of 601
+vp:=makeViewport3D(vsp,style=="smooth",title=="Pappardelle")
+--R   Transmitting data...
+--R
+--R   (10)  ThreeDimensionalViewport: "Pappardelle"
+--R                                               Type: ThreeDimensionalViewport
+--E 327
+
+--S 328 of 601
+close(vp)
+--R                                                                   Type: Void
+--E 328
+
+\end{chunk}
+
+\section{Penne Rigate}
+A versatile pasta, {\sl penne rigate} (grooved quills) come from
+Campania, in southern Italy, and belong to the {\sl pasta corta}
+(short pasta) family. they can be served with spicy {\sl arrabbiata}
+(angry) sauce, which gets its name from the chillies and red peppers
+it contains.
+\begin{chunk}{*}
+)clear all
+
+--S 329 of 601
+X(i,j) == _
+  if (i < 85) _
+   then 4*sin(i*%pi/85)^2+0.1*sin(6*i*%pi/17) _
+   else -4*sin((i-85)*%pi/85)^2+0.1*sin(6*(i-85)*%pi/17)
+--R                                                                   Type: Void
+--E 329
+
+--S 330 of 601
+Y(i,j) == _
+  if (i < 85) _
+   then 4*cos(i*%pi/85)+0.1*cos(6*i*%pi/17) _
+   else -4*cos((i-85)*%pi/85)+0.1*cos(6*(i-85)*%pi/17)
+--R                                                                   Type: Void
+--E 330
+
+--S 331 of 601
+Z(i,j) == _
+  if (i < 85) _
+   then 7*cos(i*%pi/85)+15*sin((j-20)*%pi/40) _
+   else -7*cos((i-85)*%pi/85)+15*sin((j-20)*%pi/40)
+--R                                                                   Type: Void
+--E 331
+
+--S 332 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..170,j=0..40,_
+           style=="smooth",title=="Penne Rigate")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--I   Compiling function %IP with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %IR with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %IT with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Penne Rigate"
+--R                                               Type: ThreeDimensionalViewport
+--E 332
+
+--S 333 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 333
+
+\end{chunk}
+
+\section{Pennoni Lisci}
+Similar in appearance to {\sl penne rigate}, but larger and without
+the grooves, {\sl pennoni} (large quills) require a more oily sauce
+(perhaps containing sliced chorizo) to cling to their smooth surface.
+\begin{chunk}{*}
+)clear all
+
+--S 334 of 601
+X(i,j) == _ 
+  if (i < 100) _
+   then 7*sin(i*%pi/100)^2 _
+   else -7*sin((i-100)*%pi/100)^2
+--R                                                                   Type: Void
+--E 334
+
+--S 335 of 601
+Y(i,j) == _
+  if (i < 100) _
+   then 8*cos(i*%pi/100) _
+   else -8*cos((i-100)*%pi/100)
+--R                                                                   Type: Void
+--E 335
+
+--S 336 of 601
+Z(i,j) == _
+  if (i < 100) _
+   then 12*cos(i*%pi/100)+15*sin((j-20)*%pi/40) _
+   else -12*cos((i-100)*%pi/100)+15*sin((j-20)*%pi/40)
+--R                                                                   Type: Void
+--E 336
+
+--S 337 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..200,j=0..40,_
+           style=="smooth",title=="Pennoni Lisci")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--I   Compiling function %IU with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %IV with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %IW with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Pennoni Lisci"
+--R                                               Type: ThreeDimensionalViewport
+--E 337
+
+--S 338 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 338
+
+\end{chunk}
+
+\section{Pennoni Rigati}
+The angled trim of the {\sl penne} pasta family makes its members easy
+to recognize. {\sl Pennoni rigati} (large grooved quills) are the
+ridged version of {\sl pennoni}, and can be stuffed and cooked.
+\begin{chunk}{*}
+)clear all
+
+--S 339 of 601
+A(i,j) == -7*sin((i-100)*%pi/100)^2+0.2*sin((3*i-300)*%pi/10)
+--R                                                                   Type: Void
+--E 339
+
+--S 340 of 601
+B(i,j) == -8*cos((i-100)*%pi/100)+0.2*cos((3*i-300)*%pi/10)
+--R                                                                   Type: Void
+--E 340
+
+--S 341 of 601
+C(i,j) == -12*cos((i-100)*%pi/100)+15*sin((j-20)*%pi/40)
+--R                                                                   Type: Void
+--E 341
+
+--S 342 of 601
+X(i,j) == _
+  if (i < 100) _
+   then 7*sin(i*%pi/100)^2+0.15*sin(3*i*%pi/10) _
+   else A(i,j)
+--R                                                                   Type: Void
+--E 342
+
+--S 343 of 601
+Y(i,j) == _
+  if (i < 100) _
+   then 8*cos(i*%pi/100)+0.15*cos(3*i*%pi/10) _
+   else B(i,j)
+--R                                                                   Type: Void
+--E 343
+
+--S 344 of 601
+Z(i,j) == _
+  if (i < 100) _
+   then 12*cos(i*%pi/100)+15*sin((j-20)*%pi/40) _
+   else C(i,j)
+--R                                                                   Type: Void
+--E 344
+
+--S 345 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..200,j=0..40,_
+           style=="smooth",title=="Pennoni Rigati")
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--I   Compiling function %IY with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %JA with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %JC with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (7)  ThreeDimensionalViewport: "Pennoni Rigati"
+--R                                               Type: ThreeDimensionalViewport
+--E 345
+
+--S 346 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 346
+
+\end{chunk}
+
+\section{Puntalette}
+Another member of the {\sl pastine minute} (tiny pasta) family, {\sl
+puntalette} (tiny tips) are about 9 mm long, and no thicker than 3
+mm. Like most {\sl pastine}, they are best consumed in creamy soups,
+or perhaps in a salad.
+\begin{chunk}{*}
+)clear all
+
+--S 347 of 601
+X(i,j) == 1.4*sin(j*%pi/80)^1.2*cos(i*%pi/40)
+--R                                                                   Type: Void
+--E 347
+
+--S 348 of 601
+Y(i,j) == 2.5*sin(j*%pi/80)^1.2*sin(i*%pi/40)
+--R                                                                   Type: Void
+--E 348
+
+--S 349 of 601
+Z(i,j) == 8*cos(j*%pi/80)
+--R                                                                   Type: Void
+--E 349
+
+--S 350 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..80,j=0..80,_
+           style=="smooth",title=="Puntalette")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--I   Compiling function %JE with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %JG with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %JI with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Puntalette"
+--R                                               Type: ThreeDimensionalViewport
+--E 350
+
+--S 351 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 351
+
+\end{chunk}
+
+\section{Quadrefiore}
+An uncommon variety of {\sl pasta corta} (short pasta), {\sl
+quadrefiori} (square flowers) are sturdy, with rippled edges running
+down their lengths. Francis Ford Coppola, the maker and distributor,
+uses antique bronze moulds and wooden drying racks to achieve an
+authentic form and consistency.
+\begin{chunk}{*}
+)clear all
+
+--S 352 of 601
+X(i,j) == 2*cos(i*%pi/250)*(abs(sin(3*i*%pi/250)))^20 + _
+          (0.6+0.9*sin(j*%pi/50))*cos(i*%pi/250)+0.2*cos(4*j*%pi/25)
+--R                                                                   Type: Void
+--E 352
+
+--S 353 of 601
+Y(i,j) == 2*sin(i*%pi/250)*(abs(sin(3*i*%pi/250)))^20 + _
+          (0.6+0.9*sin(j*%pi/50))*sin(i*%pi/250)+1.5*sin(j*%pi/50)
+--R                                                                   Type: Void
+--E 353
+
+--S 354 of 601
+Z(i,j) == 3.0*j/10.0
+--R                                                                   Type: Void
+--E 354
+
+--S 355 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..500,j=0..50,_
+           style=="smooth",title=="Quadrefiore")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %JJ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %JK with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %JM with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Quadrefiore"
+--R                                               Type: ThreeDimensionalViewport
+--E 355
+
+--S 356 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 356
+
+--S 357 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 357
+
+\end{chunk}
+
+\section{Quadretti}
+These flat shapes are made with durum-wheat flour, eggs, and even
+nutmeg. {\sl Quadretti} (tiny squares) are a classic {\sl pastine}
+prepared using the leftovers of larger pasta sheets, and can be served
+as part of a traditional fish broth, or in soups containing fava
+beans. Their small shape means that they need only be cooked for a
+short time.
+\begin{chunk}{*}
+)clear all
+
+--S 358 of 601
+X(i,j) == 3.0*i/14.0
+--R                                                                   Type: Void
+--E 358
+
+--S 359 of 601
+Y(i,j) == 3.0*j/14.0
+--R                                                                   Type: Void
+--E 359
+
+--S 360 of 601
+Z(i,j) == 0.0
+--R                                                                   Type: Void
+--E 360
+
+--S 361 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..70,j=0..70,_
+           style=="smooth",title=="Quadretti")
+--R   Compiling function X with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Float 
+--I   Compiling function %JO with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %JQ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %JS with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Quadretti"
+--R                                               Type: ThreeDimensionalViewport
+--E 361
+
+--S 362 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 362
+
+\end{chunk}
+
+\section{Racchette}
+Usually served in salads, {\sl racchette} (rackets) suit crunchy pine
+nuts, sliced asparagus and fresh peas. Alternatively, the addition of
+diced watermelon or pomegranate seeds can create a light-tasking snack.
+\begin{chunk}{*}
+)clear all
+
+--S 363 of 601
+A(i)    == sin(i*%pi/2000)^0.5
+--R                                                                   Type: Void
+--E 363
+
+--S 364 of 601
+X0(i,j) == 2*cos((i+1500)*%pi/1500)+0.65*cos((i+750)*%pi/1500) + _
+           2*(abs(cos(i*%pi/300)))^100*cos(i*%pi/1500)
+--R                                                                   Type: Void
+--E 364
+
+--S 365 of 601
+Y0(i,j) == 2.4*sin((i+1500)*%pi/1500)+0.1*sin(i*%pi/1500) + _
+           2.3*(abs(sin(i*%pi/300)))^100*sin(i*%pi/1500)
+--R                                                                   Type: Void
+--E 365
+
+--S 366 of 601
+X1(i,j) == _
+  if (i <= 2000) _
+   then 2.1*cos((2*A(i)+1)*%pi)+0.65*cos((2*A(i)+0.5)*%pi)+_
+        2.5*sin((A(i)+1.83)*%pi)^500 _
+   else -2.1
+--R                                                                   Type: Void
+--E 366
+
+--S 367 of 601
+Y1(i,j) == _
+  if (i <= 2000) _
+   then 2.5*sin((2*A(i)+1)*%pi)+0.1*sin(A(i)*2*%pi)+_
+        3*sin((A(i)+1.83)*%pi)^500 _
+   else 0.0
+--R                                                                   Type: Void
+--E 367
+
+--S 368 of 601
+Z(i,j) == j/4.0
+--R                                                                   Type: Void
+--E 368
+
+--S 369 of 601
+vsp:=createThreeSpace()
+--R
+--R   (7)  3-Space with 0 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 369
+
+--S 370 of 601
+makeObject(surface(X0(i,j),Y0(i,j),Z(i,j)),i=0..3000,j=0..4,space==vsp)
+--R   Compiling function X0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Y0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %JT with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %JU with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %JW with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (8)  3-Space with 1 component
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 370
+
+--S 371 of 601
+makeObject(surface(X0(i,j),Y0(i,j),Z(i,j)),i=0..3000,j=0..4,space==vsp)
+--I   Compiling function %JX with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %JY with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %KA with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (9)  3-Space with 2 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 371
+
+--S 372 of 601
+vp:=makeViewport3D(vsp,style=="smooth",title=="Racchette")
+--R   Transmitting data...
+--R
+--R   (10)  ThreeDimensionalViewport: "Racchette"
+--R                                               Type: ThreeDimensionalViewport
+--E 372
+
+--S 373 of 601
+close(vp)
+--R                                                                   Type: Void
+--E 373
+
+\end{chunk}
+
+\section{Radiatori}
+Small and squat, {\sl radiatori} (radiators) are named after their
+ruffled edge When boiled, drained, and served as a {\sl pastasciutta}
+their open centre and large surface area holds thick sauces well,
+while the flaps sweep up and trap smaller morsels of food. This pasta
+is often accompanied by a lamb-, veal-, rabbit-, or pork-based {\sl ragu}.
+\begin{chunk}{*}
+)clear all
+
+--S 374 of 601
+X(i,j) == (1.5+3*(i/70.0)^5+4*sin(j*%pi/200)^50)*cos(4*i*%pi/175)
+--R                                                                   Type: Void
+--E 374
+
+--S 375 of 601
+Y(i,j) == (1.5+3*(i/70.0)^5+4*sin(j*%pi/200)^50)*sin(4*i*%pi/175)
+--R                                                                   Type: Void
+--E 375
+
+--S 376 of 601
+Z(i,j) == j/50.0+cos(3*i*%pi/14)*sin(j*%pi/1000)
+--R                                                                   Type: Void
+--E 376
+
+--S 377 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..70,j=0..1000,_
+           style=="smooth",title=="Radiatori")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %KC with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %KE with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %KG with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Radiatori"
+--R                                               Type: ThreeDimensionalViewport
+--E 377
+
+--S 378 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 378
+
+--S 379 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 379
+
+\end{chunk}
+
+\section{Ravioli Quadrati}
+Except for the square outline, {\sl ravioli quadrati} (square ravioli)
+are made in an identical fashion to {\sl ravioli tondi} (round {\sl
+ravioli}). Other variations on the theme include crescents, triangles,
+and hearts. Some suggest the name {\sl ravioli} derives from the verb
+meaning 'to wrap', others link it with {\sl rapa}, the Italian word
+for turnip.
+\begin{chunk}{*}
+)clear all
+
+--S 380 of 601
+X(i,j) == i/2.0+0.4*sin((j+2.5)*%pi/5) * _
+          (sin(i*%pi/200)^0.2 - cos(i*%pi/200)^0.2)
+--R                                                                   Type: Void
+--E 380
+
+--S 381 of 601
+Y(i,j) == j/2.0+0.4*sin((11*i+25)*%pi/50) * _
+          (sin(j*%pi/200)^0.2 - cos(j*%pi/200)^0.2)
+--R                                                                   Type: Void
+--E 381
+
+--S 382 of 601
+Z(i,j) == _
+  if (((10 < j) and (j < 90)) or ((10 < i) and (i < 90))) _
+   then 10*sin((i-10)*%pi/80)^0.6*sin((j-10)*%pi/80)^0.6 _
+   else if ((10 > j) or (10 > i)) _
+         then 0.0 _
+         else 0.0
+--R                                                                   Type: Void
+--E 382
+
+--S 383 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..99,j=0..99,_
+           style=="smooth",title=="Ravioli Quadrati")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %KI with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %KK with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %KM with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Ravioli Quadrati"
+--R                                               Type: ThreeDimensionalViewport
+--E 383
+
+--S 384 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 384
+
+\end{chunk}
+
+\section{Ravioli Tondi}
+By far the best-known {\sl pasta ripiena} (filled pasta), {\sl ravioli
+tondi} (round {\sl ravioli}) are made by sealing a filling between two
+layers of dough made from wheat flour and egg. Fillings vary
+enormously, from lavish pairings of meat and cheese, to more deleicate
+centres of mushrooms, spinach, or even nettle.
+\begin{chunk}{*}
+)clear all
+
+--S 385 of 601
+X(i,j) == 5.0*i/8.0+0.5*sin((j+2)*%pi/4) * _
+          (sin(i*%pi/160)^0.2-cos(i*%pi/160)^0.2)
+--R                                                                   Type: Void
+--E 385
+
+--S 386 of 601
+Y(i,j) == 5.0*j/8.0+0.5*sin((i+2)*%pi/4) * _
+          (sin(j*%pi/160)^0.2-cos(j*%pi/160)^0.2)
+--R                                                                   Type: Void
+--E 386
+
+--S 387 of 601
+Z(i,j) == _
+  if (600 >= ((i-40)^2+(j-40)^2)) _
+   then 0.5*sqrt(600 - (i-40)^2-(j-40)^2) _
+   else 0.0
+--R                                                                   Type: Void
+--E 387
+
+--S 388 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..80,j=0..80,_
+           style=="smooth",title=="Ravioli Tondi")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %KO with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %KQ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %KS with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Ravioli Tondi"
+--R                                               Type: ThreeDimensionalViewport
+--E 388
+
+--S 389 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 389
+
+\end{chunk}
+
+\section{Riccioli}
+A well-know {\sl pasta corta} (short pasta), {\sl riccioli} (curls)
+originated in the Emilia-Romagna region of northern Italy. Their
+ribbed exterior and hollow shape mean {\sl riccioli} can retain a
+large quantity of sauce.
+\begin{chunk}{*}
+)clear all
+
+--S 390 of 601
+X(i,j) == (2+8*sin(i*%pi/100)+9*sin((11*j+100)*%pi/400)^2)*cos(4*i*%pi/125)
+--R                                                                   Type: Void
+--E 390
+
+--S 391 of 601
+Y(i,j) == (2+8*sin(i*%pi/100)+9*sin((11*j+100)*%pi/400)^2)*sin(4*i*%pi/125)
+--R                                                                   Type: Void
+--E 391
+
+--S 392 of 601
+Z(i,j) == j/4.0
+--R                                                                   Type: Void
+--E 392
+
+--S 393 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..50,j=0..200,_
+           style=="smooth",title=="Riccioli")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %KU with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %KW with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %KY with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Riccioli"
+--R                                               Type: ThreeDimensionalViewport
+--E 393
+
+--S 394 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 394
+
+--S 395 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 395
+
+\end{chunk}
+
+\section{Riccioli al Cinque Sapori}
+{\sl Riccioli} and {\sl riccioli al cinque sapori} (curls in five
+flavors) are both members of the {\sl pasta corta} (small pasta)
+family, without being related by structural similarities. Made of
+durum-wheat flour, {\sl riccioli al cinque sapori} get their color
+from the addition of spinach, tomato, beetroot, and turmeric, and are
+usually served in broth.
+\begin{chunk}{*}
+)clear all
+
+--S 396 of 601
+X(i,j) == 1.5*cos(i*%pi/20)*(1+0.5*sin(j*%pi/25)*sin(i*%pi/40) + _
+          0.43*sin((j+18.75)*%pi/25)*cos(i*%pi/40))+2*cos(j*%pi/50)
+--R                                                                   Type: Void
+--E 396
+
+--S 397 of 601
+Y(i,j) == 1.5*sin(i*%pi/20)^3+cos(j*%pi/25)
+--R                                                                   Type: Void
+--E 397
+
+--S 398 of 601
+Z(i,j) == sin(j*%pi/100)+20*cos(j*%pi/200)^2
+--R                                                                   Type: Void
+--E 398
+
+--S 399 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..20,j=0..100,_
+           style=="smooth",title=="Riccioli al Cinque Sapori")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--I   Compiling function %LA with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %LC with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %LE with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Riccioli al Cinque Sapori"
+--R                                               Type: ThreeDimensionalViewport
+--E 399
+
+--S 400 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 400
+
+--S 401 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 401
+
+\end{chunk}
+
+\section{Rigatoni}
+Members of the {\sl pasta corta} (short pasta) branch, and originally
+from southern Italy, {\sl rigatoni} (large ridges) are very
+versitile. Their robust shape holds cream or tomato sauces well, but
+{\sl rigatoni} are best eaten with sausages or game meat, mushrooms,
+and black pepper.
+\begin{chunk}{*}
+)clear all
+
+--S 402 of 601
+X(i,j) == 0.2*sin((7*i+15)*%pi/30)+2*cos((j+60)*%pi/120) + _
+          (7+(60-j)/60.0*sin(i*%pi/240))*cos(i*%pi/120)
+--R                                                                   Type: Void
+--E 402
+
+--S 403 of 601
+Y(i,j) == 0.2*sin(7*i*%pi/30)+(8+0.1*(60-j)/60+j/30*cos(i*%pi/240)) * _
+          sin(i*%pi/120)
+--R                                                                   Type: Void
+--E 403
+
+--S 404 of 601
+Z(i,j) == j/2.0
+--R                                                                   Type: Void
+--E 404
+
+--S 405 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..240,j=0..60,_
+           style=="smooth",title=="Rigatoni")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %LG with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %LI with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %LK with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Rigatoni"
+--R                                               Type: ThreeDimensionalViewport
+--E 405
+
+--S 406 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 406
+
+\end{chunk}
+
+\section{Rombi}
+A lesser-known {\sl pasta corta}, {\sl rombi} (rhombuses) feature two
+curled edges like {\sl lasagna doppia riccia}, however, they are
+smaller and sheared on the diagonal. Generally served with sauce and
+{\sl pastasciutta} or in {\sl brodo} (in broth), according to size.
+\begin{chunk}{*}
+)clear all
+
+--S 407 of 601
+X(i,j) == _
+  if ((13 <= i) and (i <= 37)) _
+    then i/20.0+j/25.0-1/20.0 _
+    else if (i <= 13) _
+          then 3.0*i/65.0+j/25.0 _
+          else 6/65.0+3.0*i/65.0+j/25.0
+--R                                                                   Type: Void
+--E 407
+
+--S 408 of 601
+Y(i,j) == j/25.0
+--R                                                                   Type: Void
+--E 408
+
+--S 409 of 601
+Z(i,j) == _
+  if ((13 <= i) and (i <= 37)) _
+   then 0.0 _
+   else if (i <= 13) _
+         then 0.2*((13.0-i)/13.0)*cos((2.0*j+12.5)*%pi/25) _
+         else (i-37.0)/65.0*cos((2.0*j+37.5)*%pi/25)
+--R                                                                   Type: Void
+--E 409
+
+--S 410 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..50,j=0..50,_
+           style=="smooth",title=="Rombi")
+--R   Compiling function X with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %LM with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %LO with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %LQ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Rombi"
+--R                                               Type: ThreeDimensionalViewport
+--E 410
+
+--S 411 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 411
+
+--S 412 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 412
+
+\end{chunk}
+
+\section{Rotelle}
+A modern design from the more unusual side of the {\sl pasta corta}
+(short pasta) family, {\sl rotelle} (small wheels) are constructed
+with spokes that help trap various flavors, making the pasta a good
+companion for a variety of sauces. Smaller versions can be served in
+salads or cooked in soups.
+\begin{chunk}{*}
+)clear all
+
+--S 413 of 601
+X0(i,j) == 0.5*cos(i*%pi/1000)+1.5*(abs(sin(3*i*%pi/1000)))^50*cos(i*%pi/1000)
+--R                                                                   Type: Void
+--E 413
+
+--S 414 of 601
+Y0(i,j) == 0.5*sin(i*%pi/1000)+1.5*(abs(sin(3*i*%pi/1000)))^50*sin(i*%pi/1000)
+--R                                                                   Type: Void
+--E 414
+
+--S 415 of 601
+X1(i,j) == _
+  if (i <= 666) _
+   then 2*cos(3*i*%pi/1000)+0.03*cos(93*i*%pi/1000) _
+   else 2.03
+--R                                                                   Type: Void
+--E 415
+
+--S 416 of 601
+Y1(i,j) == _
+  if (i <= 666) _
+   then 2.05*sin(3*i*%pi/1000)+0.03*sin(93*i*%pi/1000) _
+   else 0.0
+--R                                                                   Type: Void
+--E 416
+
+--S 417 of 601
+Z(i,j) == j/5.0
+--R                                                                   Type: Void
+--E 417
+
+--S 418 of 601
+vsp:=createThreeSpace()
+--R
+--R   (6)  3-Space with 0 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 418
+
+--S 419 of 601
+makeObject(surface(X0(i,j),Y0(i,j),Z(i,j)),i=0..2000,j=0..5,space==vsp)
+--R   Compiling function X0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Y0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %LR with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %LS with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %LU with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (7)  3-Space with 1 component
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 419
+
+--S 420 of 601
+makeObject(surface(X0(i,j),Y0(i,j),Z(i,j)),i=0..2000,j=0..5,space==vsp)
+--I   Compiling function %LV with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %LW with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %LY with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (8)  3-Space with 2 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 420
+
+--S 421 of 601
+vp:=makeViewport3D(vsp,style=="smooth",title=="Rotelle")
+--R   Transmitting data...
+--R
+--R   (9)  ThreeDimensionalViewport: "Rotelle"
+--R                                               Type: ThreeDimensionalViewport
+--E 421
+
+--S 422 of 601
+close(vp)
+--R                                                                   Type: Void
+--E 422
+
+\end{chunk}
+
+\section{Saccottini}
+Another out-and-out member of the {\sl pasta ripiena} (filled pasta)
+club, {\sl saccottini}-like {\sl fagottini}, to which they are closely
+related - are made of a durum-wheat circle of dough gathered into an
+irregular ball-shaped bundle. {\sl Saccottini} are usually stuffed
+with ricotta, meat, or steamed greens.
+\begin{chunk}{*}
+)clear all
+
+--S 423 of 601
+X(i,j) == cos(i*%pi/75)*(sin(j*%pi/50)+1.3*sin(j*%pi/200) + _
+          3*j/1000.0*cos((i+25)*%pi/25))
+--R                                                                   Type: Void
+--E 423
+
+--S 424 of 601
+Y(i,j) == sin(i*%pi/75)*(sin(j*%pi/50)+1.3*sin(j*%pi/200) + _
+          0.7*(j/100.0)^2*sin(i*%pi/15))
+--R                                                                   Type: Void
+--E 424
+
+--S 425 of 601
+Z(i,j) == 2*(1-(abs(cos(j*%pi/200)))^5+(j/100.0)^4.5)
+--R                                                                   Type: Void
+--E 425
+
+--S 426 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..100,_
+           style=="smooth",title=="Saccottini")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %MA with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %MC with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %MD with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Saccottini"
+--R                                               Type: ThreeDimensionalViewport
+--E 426
+
+--S 427 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 427
+
+\end{chunk}
+
+\section{Sagnarelli}
+This short and rectangular ribbon with four indented edges belongs to
+the {\sl pasta lunga} (long pasta) branch. {\sl Sagnarelli} are
+sometimes made with eggs and are generally served as {\sl
+pastasciutta} with a meat {\sl ragu}, or alongside vegetables such as
+wild asparagus.
+\begin{chunk}{*}
+)clear all
+
+--S 428 of 601
+A(i) == 0.5*sin((i+1.5)*%pi/3)
+--R                                                                   Type: Void
+--E 428
+
+--S 429 of 601
+B(i) == 0.05*sin((9*i+12.5)*%pi/25)
+--R                                                                   Type: Void
+--E 429
+
+--S 430 of 601
+X(i,j) == i/10.0+A(j)*(cos(i*%pi/120)^100-sin(i*%pi/200)^100)
+--R                                                                   Type: Void
+--E 430
+
+--S 431 of 601
+Y(i,j) == j/20.0+B(i)*(cos(j*%pi/120)^100-sin(j*%pi/200)^100)
+--R                                                                   Type: Void
+--E 431
+
+--S 432 of 601
+Z(i,j) == 0.0
+--R                                                                   Type: Void
+--E 432
+
+--S 433 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..100,j=0..60,_
+           style=="smooth",title=="Sagnarelli")
+--R   Compiling function A with type Variable j -> Expression Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type Variable i -> Expression Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Float 
+--I   Compiling function %MF with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %MH with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %MJ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (6)  ThreeDimensionalViewport: "Sagnarelli"
+--R                                               Type: ThreeDimensionalViewport
+--E 433
+
+--S 434 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 434
+
+\end{chunk}
+
+\section{Sagne Incannulate}
+Shaping the twisted ribbons of durum-wheat pasta known as {\sl sagne
+incannulate} requires skill. Strips of dough are held at the end
+against a wooden board with one hand, while the palm of the other
+rolls the rest of the {\sl pasta lunga} (long pasta) to form the
+distinctive curl. {\sl Sagne} are best consumed with a thick sauce or
+a traditional {\sl ragu}.
+\begin{chunk}{*}
+)clear all
+
+--S 435 of 601
+X0(i,j) == (1-0.2*sin(3*j*%pi/20))*cos((i+10)*%pi/20) + _
+           2*sin((i-100)*%pi/200)+(3*i)/200.0*sin(i*%pi/400)^200
+--R                                                                   Type: Void
+--E 435
+
+--S 436 of 601
+Y0(i,j) == (1-0.2*sin(3*j*%pi/20))*sin((i+10)*%pi/20)+sin((i-50)/200*%pi)
+--R                                                                   Type: Void
+--E 436
+
+--S 437 of 601
+X1(i,j) == -3+(1-0.1*sin(3*j*%pi/20))*sin((3*i-10)*%pi/50) + _
+           cos(i*%pi/200)+3*i/200.0*sin(i*%pi/400)^5
+--R                                                                   Type: Void
+--E 437
+
+--S 438 of 601
+Y1(i,j) == -5+(1-01.*sin(3*j*%pi/20))*cos((3*i+10)*%pi/50)+2*sin(i*%pi/200)
+--R                                                                   Type: Void
+--E 438
+
+--S 439 of 601
+Z(i,j) == i/4.0+7/2.0*(1+cos(j*%pi/20))
+--R                                                                   Type: Void
+--E 439
+
+--S 440 of 601
+vsp:=createThreeSpace()
+--R
+--R   (6)  3-Space with 0 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 440
+
+--S 441 of 601
+makeObject(surface(X0(i,j),Y0(i,j),Z(i,j)),i=0..200,j=0..20,space==vsp)
+--R   Compiling function X0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Y0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %ML with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %MN with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %MP with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (7)  3-Space with 1 component
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 441
+
+--S 442 of 601
+makeObject(surface(X1(i,j),Y1(i,j),Z(i,j)),i=0..200,j=0..20,space==vsp)
+--R   Compiling function X1 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Y1 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--I   Compiling function %MR with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %MT with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %MV with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (8)  3-Space with 2 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 442
+
+--S 443 of 601
+vp:=makeViewport3D(vsp,style=="smooth",title=="Sagne Incannulate")
+--R   Transmitting data...
+--R
+--R   (9)  ThreeDimensionalViewport: "Sagne Incannulate"
+--R                                               Type: ThreeDimensionalViewport
+--E 443
+
+--S 444 of 601
+zoom(vp,3.0,3.0,3.0)
+--R                                                                   Type: Void
+--E 444
+
+--S 445 of 601
+close(vp)
+--R                                                                   Type: Void
+--E 445
+
+\end{chunk}
+
+\section{Scialatielli}
+Hailing from the Amalfi coast in the province of Naples, {\sl
+scialatielli} are a rustic {\sl pasta lunga} (long pasta) similar in
+appearance to {\sl fettuccine} and {\sl tagliotelle}. When they are
+made, milk and eggs can be added to the durum-wheat flour to lend it a
+golden color, {\sl Scialatielli} are best paired with seafood, or a
+{\sl ragu} of pork or veal.
+\begin{chunk}{*}
+)clear all
+
+--S 446 of 601
+X(i,j) == 0.1*cos(i*%pi/75)+0.1*cos((i+7.5)*%pi/75)^3+0.1*sin(j*%pi/50)
+--R                                                                   Type: Void
+--E 446
+
+--S 447 of 601
+Y(i,j) == 0.1*cos(i*%pi/75)+0.2*sin(i*%pi/75)^3+0.1*sin(j*%pi/50)
+--R                                                                   Type: Void
+--E 447
+
+--S 448 of 601
+Z(i,j) == 3.0*j/50.0
+--R                                                                   Type: Void
+--E 448
+
+--S 449 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..50,_
+           style=="smooth",title=="Scialatielli")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %MX with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %MZ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %NB with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Scialatielli"
+--R                                               Type: ThreeDimensionalViewport
+--E 449
+
+--S 450 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 450
+
+--S 451 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 451
+
+\end{chunk}
+
+\section{Spaccatelle}
+This noted speciality of Sicily belongs to the {\sl pasta corta}
+(short pasta) family. {\sl Spaccatelle} are generally elongated curves
+with a concave centre, and are served as a {\sl pastasciutta} (pasta
+boiled and drained) with a light tomato sauce or a thick meaty {\sl ragu}.
+\begin{chunk}{*}
+)clear all
+
+--S 452 of 601
+X(i,j) == (0.5+5*(j/100.0)^3+0.5*cos((i+37.5)*%pi/25))*cos(2*j*%pi/125)
+--R                                                                   Type: Void
+--E 452
+
+--S 453 of 601
+Y(i,j) == 0.6*sin((i+37.5)*%pi/25)
+--R                                                                   Type: Void
+--E 453
+
+--S 454 of 601
+Z(i,j) == (0.5+5*(j/100.0)^3+0.5*cos((i+37.5)*%pi/25))*sin(2*j*%pi/125)
+--R                                                                   Type: Void
+--E 454
+
+--S 455 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..25,j=0..100,_
+           style=="smooth",title=="Spaccatelle")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %ND with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %NF with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %NH with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Spaccatelle"
+--R                                               Type: ThreeDimensionalViewport
+--E 455
+
+--S 456 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 456
+
+--S 457 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 457
+
+\end{chunk}
+
+\section{Spaghetti}
+Without a doubt, {\sl spaghetti} (small strings) remain the best-known
+and most versatile {\sl pasta lunga} (long pasta) worldwide. Above all
+they are known for accompanying {\sl ragu bolognese}, a mixture
+containing beef, tomato, cream, onions, and pancetta. More recently,
+{\sl spaghetti} have become popular in a creamy {\sl carbonara}.
+\begin{chunk}{*}
+)clear all
+
+--S 458 of 601
+X(i,j) == 0.1*cos(i*%pi/20)
+--R                                                                   Type: Void
+--E 458
+
+--S 459 of 601
+Y(i,j) == 0.1*sin(i*%pi/20)
+--R                                                                   Type: Void
+--E 459
+
+--S 460 of 601
+Z(i,j) == j/10.0
+--R                                                                   Type: Void
+--E 460
+
+--S 461 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..40,j=0..100,_
+           style=="smooth",title=="Spaghetti")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %NJ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %NL with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %NN with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Spaghetti"
+--R                                               Type: ThreeDimensionalViewport
+--E 461
+
+--S 462 of 601
+zoom(v3d,3.0,3.0,3.0)
+--R                                                                   Type: Void
+--E 462
+
+--S 463 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 463
+
+\end{chunk}
+
+\section{Spiralli}
+The ridged and helicoidal {\sl spirali} (spirals) are similar in shape
+to {\sl cavatappi}, but are slightly larger. {\sl Spirali} may be
+served with chunky sauces as {\sl pastasciutta}, baked {\sl al forno}
+(at the oven) with a thick cheese topping or added to salads.
+\begin{chunk}{*}
+)clear all
+
+--S 464 of 601
+X(i,j) == (2.5+2*cos(i*%pi/50)+0.1*cos(i*%pi/5))*cos(j*%pi/30)
+--R                                                                   Type: Void
+--E 464
+
+--S 465 of 601
+Y(i,j) == (2.5+2*cos(i*%pi/50)+0.1*cos(i*%pi/5))*sin(j*%pi/30)
+--R                                                                   Type: Void
+--E 465
+
+--S 466 of 601
+Z(i,j) == (2.5+2*sin(i*%pi/50)+0.1*sin(i*%pi/5))+j/6.0
+--R                                                                   Type: Void
+--E 466
+
+--S 467 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..100,j=0..120,_
+           style=="smooth",title=="Spiralli")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %NP with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %NR with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %NT with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Spiralli"
+--R                                               Type: ThreeDimensionalViewport
+--E 467
+
+--S 468 of 601
+zoom(v3d,2.5,2.5,2.5)
+--R                                                                   Type: Void
+--E 468
+
+--S 469 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 469
+
+\end{chunk}
+
+\section{Stellette}
+A member of the {\sl pastine minute} (tiny pasta) family, {\sl
+stellette} (little stars) are only marginally larger than both {\sl
+acini di pepe} and {\sl cuoretti}. Like all {\sl pastine}, they are
+best served in a light soup, perhaps flavored with portobello
+mushrooms or peas.
+\begin{chunk}{*}
+)clear all
+
+--S 470 of 601
+X(i,j) == (3.0+3.0*i/5.0)*cos(j*%pi/75)+i/10*cos((j+15)*%pi/15)
+--R                                                                   Type: Void
+--E 470
+
+--S 471 of 601
+Y(i,j) == (3.0+3.0*i/5.0)*sin(j*%pi/75)+i/10*sin(j*%pi/15)
+--R                                                                   Type: Void
+--E 471
+
+--S 472 of 601
+Z(i,j) == 0.0
+--R                                                                   Type: Void
+--E 472
+
+--S 473 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..25,j=0..150,_
+           style=="smooth",title=="Stellette")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Float 
+--I   Compiling function %NV with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %NX with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %NZ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Stellette"
+--R                                               Type: ThreeDimensionalViewport
+--E 473
+
+--S 474 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 474
+
+\end{chunk}
+
+\section{Stortini}
+Another {\sl pastine minute} (tiny pasta), {\sl stortini} (little
+crooked pieces) are consumed in creamy soups with mushroom and
+celery. As a rule of thumb, smaller pasta is best in thinner soups,
+while larger {\sl pastina minute} can be served with thicker varieties.
+\begin{chunk}{*}
+)clear all
+
+--S 475 of 601
+A(i,j) == 0.5*(abs(sin(2*i*%pi/125)))^3
+--R                                                                   Type: Void
+--E 475
+
+--S 476 of 601
+B(i,j) == 1-abs(sin((2*i-500)*%pi/125))
+--R                                                                   Type: Void
+--E 476
+
+--S 477 of 601
+C(i,j) == 1-0.5*(abs(sin(2*(i-375)*%pi/125)))^3
+--R                                                                   Type: Void
+--E 477
+
+--S 478 of 601
+X(i,j) == _
+  if (i <= 250) _
+   then cos(2*i*%pi/125) _
+   else 1.7-cos((2*i-500)*%pi/125)
+--R                                                                   Type: Void
+--E 478
+
+--S 479 of 601
+Y(i,j) == _
+  if (i <= 250) _
+   then if (i <= 125) _
+         then abs(sin(2*i*%pi/125)) _
+         else A(i,j) _
+   else if (i <= 375) _
+         then B(i,j) _
+         else C(i,j)
+--R                                                                   Type: Void
+--E 479
+
+--S 480 of 601
+Z(i,j) == j/20.0
+--R                                                                   Type: Void
+--E 480
+
+--S 481 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..500,j=0..10,_
+           style=="smooth",title=="Stortini")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %OB with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %OC with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %OE with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (7)  ThreeDimensionalViewport: "Stortini"
+--R                                               Type: ThreeDimensionalViewport
+--E 481
+
+--S 482 of 601
+zoom(v3d,3.0,3.0,3.0)
+--R                                                                   Type: Void
+--E 482
+
+--S 483 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 483
+
+\end{chunk}
+
+\section{Strozzapreti}
+The dough used to make {\sl strozzapreti} (or {\sl strangolapreti};
+both translate to 'priest stranglers') can be prepared with assorted
+flours, eggs, and even potato. {\sl Strozzapreti} are an ideal {\sl
+pastasciutta}, and can be served with a traditional meat sauce, topped
+with Parmigiano-Reggiano.
+\begin{chunk}{*}
+)clear all
+
+--S 484 of 601
+A(i,j) == 0.5*cos(j*%pi/40)+0.5*cos((j+76)*%pi/40) + _
+          0.5*cos(j*%pi/30)+0.5*sin((2*i-j)*%pi/40)
+--R                                                                   Type: Void
+--E 484
+
+--S 485 of 601
+B(i,j) == 0.5*sin(j*%pi/40)+0.5*sin((j+76)*%pi/40) + _
+          0.5*sin(j*%pi/30)+0.5*cos((2*i-j)*%pi/40)
+--R                                                                   Type: Void
+--E 485
+
+--S 486 of 601
+X(i,j) == _
+  if (i <= 30) _
+   then 0.5*cos(j*%pi/30)+0.5*cos((2*i+j+16)*%pi/40) _
+   else A(i,j)
+--R                                                                   Type: Void
+--E 486
+
+--S 487 of 601
+Y(i,j) == _
+  if (i <= 30) _
+   then 0.5*sin(j*%pi/30)+0.5*sin((2*i+j+16)*%pi/40) _
+   else B(i,j)
+--R                                                                   Type: Void
+--E 487
+
+--S 488 of 601
+Z(i,j) == j/4.0
+--R                                                                   Type: Void
+--E 488
+
+--S 489 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..60,j=0..60,_
+           style=="smooth",title=="Strozzapreti")
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %OG with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %OI with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %OK with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (6)  ThreeDimensionalViewport: "Strozzapreti"
+--R                                               Type: ThreeDimensionalViewport
+--E 489
+
+--S 490 of 601
+zoom(v3d,2.5,2.5,2.5)
+--R                                                                   Type: Void
+--E 490
+
+--S 491 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 491
+
+\end{chunk}
+
+\section{Tagliatelle}
+A mixture of wheat-flour and eggs, {\sl tagliatelle} (derived from the
+Italian {\sl tagliare} - 'to cut') belong to the {\sl pasta lunga}
+(long pasta) family. Originally hailing from the north of Italy, {\sl
+tagliatelle} are frequently served in {\sl carbonara} sauce, but can
+also accompany seafood, or alternatively may form the basis of a {\sl
+timballo} (baked pasta dish).
+\begin{chunk}{*}
+)clear all
+
+--S 492 of 601
+X0(i,j) == 0.4*cos(3*i*%pi/250)+j/80.0*sin(31*i*%pi/1000)
+--R                                                                   Type: Void
+--E 492
+
+--S 493 of 601
+Y0(i,j) == 0.4*sin(3*i*%pi/250)*sin(i*%pi/4000)^0.1
+--R                                                                   Type: Void
+--E 493
+
+--S 494 of 601
+Z0(i,j) == j/80.0+0.12*sin(9*i*%pi/1000)
+--R                                                                   Type: Void
+--E 494
+
+--S 495 of 601
+X1(i,j) == 0.4*cos(3*i*%pi/250)+j/80.0*sin(31*i*%pi/1000)
+--R                                                                   Type: Void
+--E 495
+
+--S 496 of 601
+Y1(i,j) == 0.4*sin(i*%pi/4000)^0.5*sin(3*i*%pi/250)
+--R                                                                   Type: Void
+--E 496
+
+--S 497 of 601
+Z1(i,j) == j/80.0+0.12*sin(9*i*%pi/1000)
+--R                                                                   Type: Void
+--E 497
+
+--S 498 of 601
+vsp:=createThreeSpace()
+--R
+--R   (7)  3-Space with 0 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 498
+
+--S 499 of 601
+makeObject(surface(X0(i,j),Y0(i,j),Z0(i,j)),i=0..1000,j=0..4,space==vsp)
+--R   Compiling function X0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Y0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Z0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--I   Compiling function %OM with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %OO with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %OQ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (8)  3-Space with 1 component
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 499
+
+--S 500 of 601
+makeObject(surface(0.8*X1(i,j),Y1(i,j),0.9*Z1(i,j)),i=0..1000,j=0..4,_
+           space==vsp)
+--R   Compiling function X1 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Y1 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Z1 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--I   Compiling function %OS with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %OU with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %OW with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (9)  3-Space with 2 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 500
+
+--S 501 of 601
+makeObject(surface(X1(i,j),0.9*Y1(i,j),0.6*Z1(i,j)),i=0..1000,j=0..4,_
+           space==vsp)
+--I   Compiling function %OY with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %PA with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %PC with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (10)  3-Space with 3 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 501
+
+--S 502 of 601
+vp:=makeViewport3D(vsp,style=="smooth",title=="Tagliatelle")
+--R   Transmitting data...
+--R
+--R   (11)  ThreeDimensionalViewport: "Tagliatelle"
+--R                                               Type: ThreeDimensionalViewport
+--E 502
+
+--S 503 of 601
+close(vp)
+--R                                                                   Type: Void
+--E 503
+
+\end{chunk}
+
+\section{Taglierini}
+Another coiling {\sl pasta lunga} (long pasta), {\sl taglierini} are
+of the same lineage as {\sl tagliatelle}, but are substantially
+narrower - almost hair-like.
+\begin{chunk}{*}
+)clear all
+
+--S 504 of 601
+X0(i,j) == 0.5*cos(i*%pi/100)+0.05*cos(i*%pi/40)
+--R                                                                   Type: Void
+--E 504
+
+--S 505 of 601
+Y0(i,j) == 0.5*sin(i*%pi/4000)^0.1*sin(i*%pi/100)+0.075*sin(i*%pi/40)
+--R                                                                   Type: Void
+--E 505
+
+--S 506 of 601
+Z0(i,j) == 3.0*j/200.0+0.1*sin(i*%pi/125)
+--R                                                                   Type: Void
+--E 506
+
+--S 507 of 601
+X1(i,j) == 0.4*cos(i*%pi/100)
+--R                                                                   Type: Void
+--E 507
+
+--S 508 of 601
+Y1(i,j) == 0.4*sin(i*%pi/4000)^0.2*sin(i*%pi/100)
+--R                                                                   Type: Void
+--E 508
+
+--S 509 of 601
+Z1(i,j) == 3.0*j/200.0+0.1*sin(i*%pi/125)
+--R                                                                   Type: Void
+--E 509
+
+--S 510 of 601
+X2(i,j) == 0.3*cos(i*%pi/100)
+--R                                                                   Type: Void
+--E 510
+
+--S 511 of 601
+Y2(i,j) == 0.3*sin(3*i*%pi/1000)*sin(i*%pi/50)
+--R                                                                   Type: Void
+--E 511
+
+--S 512 of 601
+Z2(i,j) == -0.05+3.0*j/200.0+0.1*sin(i*%pi/125)
+--R                                                                   Type: Void
+--E 512
+
+--S 513 of 601
+vsp:=createThreeSpace()
+--R
+--R   (10)  3-Space with 0 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 513
+
+--S 514 of 601
+makeObject(surface(X0(i,j)*0.6,Y0(i,j)*0.5,Z0(i,j)),i=0..1000,j=0..2,_
+           space==vsp)
+--R   Compiling function X0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Y0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Z0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--I   Compiling function %PE with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %PG with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %PI with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (11)  3-Space with 1 component
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 514
+
+--S 515 of 601
+makeObject(surface(X1(i,j),Y1(i,j),Z1(i,j)),i=0..1000,j=0..2,space==vsp)
+--R   Compiling function X1 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Y1 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Z1 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--I   Compiling function %PK with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %PM with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %PO with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (12)  3-Space with 2 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 515
+
+--S 516 of 601
+makeObject(surface(0.8*X1(i,j),0.9*Y1(i,j),1.3*Z1(i,j)),i=0..1000,j=0..2,_
+           space==vsp)
+--I   Compiling function %PQ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %PS with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %PU with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (13)  3-Space with 3 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 516
+
+--S 517 of 601
+makeObject(surface(X2(i,j),0.9*Y2(i,j),1.5*Z2(i,j)),i=0..1000,j=0..2,_
+           space==vsp)
+--R   Compiling function X2 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Y2 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Z2 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--I   Compiling function %PW with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %PY with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %QA with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (14)  3-Space with 4 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 517
+
+--S 518 of 601
+vp:=makeViewport3D(vsp,style=="smooth",title=="Tagliatelle")
+--R   Transmitting data...
+--R
+--R   (15)  ThreeDimensionalViewport: "Tagliatelle"
+--R                                               Type: ThreeDimensionalViewport
+--E 518
+
+--S 519 of 601
+close(vp)
+--R                                                                   Type: Void
+--E 519
+
+\end{chunk}
+
+\section{Tagliolini}
+Thinner even than {\sl taglierini}, {\sl tagliolini} are traditionally
+eaten as a starter with butter, soft cheese, or {\sl al pomodoro} (in
+a light tomato sauce). Alternatively, they may be served in a chicken
+broth. A versatile pasta, {\sl tagliolini} are also the main
+ingredient for a variety of {\sl timballo} dishes baked {\sl al forno}
+(at the oven).
+\begin{chunk}{*}
+)clear all
+
+--S 520 of 601
+X0(i,j) == 0.5*cos(i*%pi/200)+0.05*cos(5*i*%pi/400)
+--R                                                                   Type: Void
+--E 520
+
+--S 521 of 601
+Y0(i,j) == 0.5*sin(i*%pi/8000)^0.1*sin(i*%pi/200)+0.075*sin(5*i*%pi/400)
+--R                                                                   Type: Void
+--E 521
+
+--S 522 of 601
+Z0(i,j) == 0.01*j+0.1*sin(i*%pi/250)
+--R                                                                   Type: Void
+--E 522
+
+--S 523 of 601
+X1(i,j) == 0.4*cos(i*%pi/200)
+--R                                                                   Type: Void
+--E 523
+
+--S 524 of 601
+Y1(i,j) == 0.4*sin(i*%pi/8000)^0.2*sin(i*%pi/200)
+--R                                                                   Type: Void
+--E 524
+
+--S 525 of 601
+Z1(i,j) == 0.01*j+0.1*sin(i*%pi/250)
+--R                                                                   Type: Void
+--E 525
+
+--S 526 of 601
+X2(i,j) == 0.3*cos(i*%pi/125)
+--R                                                                   Type: Void
+--E 526
+
+--S 527 of 601
+Y2(i,j) == 0.3*sin(3*i*%pi/2000)*sin(3*i*%pi/200)
+--R                                                                   Type: Void
+--E 527
+
+--S 528 of 601
+Z2(i,j) == -0.05+0.01*j+0.1*sin(i*%pi/250)
+--R                                                                   Type: Void
+--E 528
+
+--S 529 of 601
+vsp:=createThreeSpace()
+--R
+--R   (10)  3-Space with 0 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 529
+
+--S 530 of 601
+makeObject(surface(X0(i,j)*0.6,Y0(i,j)*0.5,Z0(i,j)),i=0..2000,j=0..1,_
+           space==vsp)
+--R   Compiling function X0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Y0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Z0 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--I   Compiling function %QC with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %QE with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %QG with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (11)  3-Space with 1 component
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 530
+
+--S 531 of 601
+makeObject(surface(X1(i,j),Y1(i,j),Z1(i,j)),i=0..2000,j=0..2,space==vsp)
+--R   Compiling function X1 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Y1 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Z1 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--I   Compiling function %QI with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %QK with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %QM with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (12)  3-Space with 2 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 531
+
+--S 532 of 601
+makeObject(surface(0.8*X1(i,j),0.9*Y1(i,j),1.3*Z1(i,j)),i=0..2000,j=0..2,_
+           space==vsp)
+--I   Compiling function %QO with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %QQ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %QS with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (13)  3-Space with 3 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 532
+
+--S 533 of 601
+makeObject(surface(X2(i,j),0.9*Y2(i,j),1.5*Z2(i,j)),i=0..2000,j=0..2,_
+           space==vsp)
+--R   Compiling function X2 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Y2 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--R   Compiling function Z2 with type (Variable i,Variable j) -> 
+--R      Expression Float 
+--I   Compiling function %QU with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %QW with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %QY with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R
+--R   (14)  3-Space with 4 components
+--R                                                 Type: ThreeSpace DoubleFloat
+--E 533
+
+--S 534 of 601
+vp:=makeViewport3D(vsp,style=="smooth",title=="Tagliolini")
+--R   Transmitting data...
+--R
+--R   (15)  ThreeDimensionalViewport: "Tagliolini"
+--R                                               Type: ThreeDimensionalViewport
+--E 534
+
+--S 535 of 601
+close(vp)
+--R                                                                   Type: Void
+--E 535
+
+\end{chunk}
+
+\section{Torchietti}
+The whorls of {\sl torchietti} (tiny torches) trap chunky sauces
+will. Also known as {\sl maccheroni al torchio}, they are best eaten
+in a tomato sauce with larger, coarsely chopped vegetables such as
+carrots, broccoli, and cauliflower.
+\begin{chunk}{*}
+)clear all
+
+--S 536 of 601
+A(i,j) == (3.0*i-60.0)*j/100.0
+--R                                                                   Type: Void
+--E 536
+
+--S 537 of 601
+B(i,j) == (3.0*i-60.0)*(100.0-j)/100.0
+--R                                                                   Type: Void
+--E 537
+
+--S 538 of 601
+C(i,j) == 3.0*(i-20.0)*(100.0-j)/100.0
+--R                                                                   Type: Void
+--E 538
+
+--S 539 of 601
+D(i,j) == 3.0*(i-20.0)*j/100.0
+--R                                                                   Type: Void
+--E 539
+
+--S 540 of 601
+E(i,j) == _
+  if ((j <= 50) or (i <= 20)) _
+   then A(i,j) _
+   else if ((j >= 50) or (i <= 20)) _
+         then B(i,j) _
+         else if ((j >= 50) or (i >= 20)) _
+               then C(i,j) _
+               else D(i,j)
+--R                                                                   Type: Void
+--E 540
+
+--S 541 of 601
+F(i,j) == (3+2.5*sin(E(i,j)*%pi/120)+3*sin(j*%pi/200)^10)
+--R                                                                   Type: Void
+--E 541
+
+--S 542 of 601
+X(i,j) == F(i,j)*cos(E(i,j)*%pi/10)+0.1*cos(j*%pi/2)
+--R                                                                   Type: Void
+--E 542
+
+--S 543 of 601
+Y(i,j) == F(i,j)*sin(E(i,j)*%pi/10)+0.1*sin(j*%pi/2)+3*sin(j*%pi/50)
+--R                                                                   Type: Void
+--E 543
+
+--S 544 of 601
+Z(i,j) == 18.0*j/25.0+2.0*E(i,j)/5.0
+--R                                                                   Type: Void
+--E 544
+
+--S 545 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..40,j=0..100,_
+           style=="smooth",title=="Torchietti")
+--R   Compiling function A with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function C with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function D with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function E with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function F with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %RA with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %RC with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %RE with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (10)  ThreeDimensionalViewport: "Torchietti"
+--R                                               Type: ThreeDimensionalViewport
+--E 545
+
+--S 546 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 546
+
+--S 547 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 547
+
+\end{chunk}
+
+\section{Tortellini}
+To prepare a {\sl tortellino}, a teaspoon of meat, cheese, or
+vegetables is wrapped in a layer of dough (made of wheat flour and
+egg) that is then skilfully rolled and folded. These shapely members
+of the {\sl pasta ripiena} (filled pasta) family are traditionally
+eaten in steaming soups, but are also drained and served with a local
+sauce as {\sl pastasciutta}.
+\begin{chunk}{*}
+)clear all
+
+--S 548 of 601
+A(i,j) == 0.2*sin(i*%pi/200)+j/400.0
+--R                                                                   Type: Void
+--E 548
+
+--S 549 of 601
+B(i,j) == cos(j/60.0*(2.7+0.2*sin(i*%pi/120)^50)*%pi+1.4*%pi)
+--R                                                                   Type: Void
+--E 549
+
+--S 550 of 601
+C(i,j) == sin(j/60.0*(2.7+0.2*sin(i*%pi/120)^50)*%pi+1.4*%pi)
+--R                                                                   Type: Void
+--E 550
+
+--S 551 of 601
+X(i,j) == 0.5^(1+0.5*sin(i*%pi/120))*cos((11*i-60)*%pi/600) * _
+          (1.35+(3+sin(i*%pi/120))*A(i,j)*B(i,j))
+--R                                                                   Type: Void
+--E 551
+
+--S 552 of 601
+Y(i,j) == 0.5*sin((11*i-60)*%pi/600) * _
+          (1.35+(0.6+sin(i*%pi/120))*A(i,j)*B(i,j))
+--R                                                                   Type: Void
+--E 552
+
+--S 553 of 601
+Z(i,j) == 0.15+i/1200.0+0.5*(0.8*sin(i*%pi/120)+j/400.0)*sin(i*%pi/120)*C(i,j)
+--R                                                                   Type: Void
+--E 553
+
+--S 554 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..120,j=0..60,_
+           style=="smooth",title=="Tortellini")
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %RG with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %RI with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %RK with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (7)  ThreeDimensionalViewport: "Tortellini"
+--R                                               Type: ThreeDimensionalViewport
+--E 554
+
+--S 555 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 555
+
+\end{chunk}
+
+\section{Tortiglioni}
+Another classic {\sl pasta corta} (short pasta), {\sl tortiglioni}
+originate from the Campania region of southern Italy. {\sl
+Tortiglioni} (deriving from the Italian {\sl torquere} - 'to cut') are
+often baked in a {\sl timballo} or boiled, drained and served as a
+{\sl pastasciutta} coupled with a strong sauce of tomato, chorizo, and
+black pepper.
+\begin{chunk}{*}
+)clear all
+
+--S 556 of 601
+X(i,j) == 6*cos(i*%pi/75)-3.5*cos(j*%pi/100) + _
+          0.15*sin((13*i/75.0+j/15.0+1.5)*%pi)
+--R                                                                   Type: Void
+--E 556
+
+--S 557 of 601
+Y(i,j) == 6*sin(i*%pi/75)+0.15*sin((13*i/75.0+j/15.0)*%pi)
+--R                                                                   Type: Void
+--E 557
+
+--S 558 of 601
+Z(i,j) == 11.0*j/10.0
+--R                                                                   Type: Void
+--E 558
+
+--S 559 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..50,_
+           style=="smooth",title=="Tortiglioni")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %RM with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %RO with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %RQ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Tortiglioni"
+--R                                               Type: ThreeDimensionalViewport
+--E 559
+
+--S 560 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 560
+
+--S 561 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 561
+
+\end{chunk}
+
+\section{Trenne}
+A hollow triangular variety of {\sl pasta corta} (short pasta), {\sl
+trenne} ({\sl penne} with a triangular cross-section) are extremely
+sturdy. They are best served with mushrooms, tomato, and spinach - or
+in any sauce that would normally accompany their close cousins: {\sl
+penne}, {\sl trennette}, and {\sl ziti}.
+\begin{chunk}{*}
+)clear all
+
+--S 562 of 601
+X(i,j) == _
+  (if (i <= 33) _
+    then (3.0*i/10.0) _
+    else ((300.0-3*i)/20.0))
+--R                                                                   Type: Void
+--E 562
+
+--S 563 of 601
+Y(i,j) == _
+ (if (i <= 33) _
+   then (0.0) _
+   else (if (i <= 66) _
+         then ((9*i-300)/20.0) _
+         else ((900-9*i)/20.0)))
+--R                                                                   Type: Void
+--E 563
+
+--S 564 of 601
+Z(i,j) == _
+ (if (i <= 33) _
+   then (if (i <= 16) _
+          then (-9.0*i/50.0+6.0*j/4.0) _
+          else (-6.0+9.0*i/50.0+3.0*j/2.0) ) _
+   else (if (i <= 66) _
+          then (-12.0+7.0*i/20.0+6.0*j/4.0) _
+          else (35.0-7.0*i/20.0+6.0*j/4.0)))
+--R                                                                   Type: Void
+--E 564
+
+--S 565 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..100,j=0..40,_
+           style=="smooth",title=="Trenne")
+--R   Compiling function X with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %RS with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %RU with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %RW with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Trenne"
+--R                                               Type: ThreeDimensionalViewport
+--E 565
+
+--S 566 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 566
+
+\end{chunk}
+
+\section{Tripoline}
+The ribbon-like {\sl tripoline} are {\sl pasta lunga} (long pasta)
+curled along one edge only. This wave gives the {\sl tripoline} a
+varying texture after cooking, and helps them to gather extra
+sauce. Originally from southern Italy, they are often served with
+tomato and basil, or {\sl ragu alla napoletana} and a sprinkling of
+Pecorino Romano.
+\begin{chunk}{*}
+)clear all
+
+--S 567 of 601
+X(i,j) == i/20.0
+--R                                                                   Type: Void
+--E 567
+
+--S 568 of 601
+Y(i,j) == j/20.0
+--R                                                                   Type: Void
+--E 568
+
+--S 569 of 601
+Z(i,j) == _
+  if (i <= 30) _
+   then 0.0 _
+   else if (i <= 10) _
+         then (10.0-i)/50.0*cos((j+2)*%pi/4) _
+         else ((i-30.0)/50.0)*cos((j+15)*%pi/10)
+--R                                                                   Type: Void
+--E 569
+
+--S 570 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..40,j=0..200,_
+           style=="smooth",title=="Tripoline")
+--R   Compiling function X with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %RY with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %SA with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %SC with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Tripoline"
+--R                                               Type: ThreeDimensionalViewport
+--E 570
+
+--S 571 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 571
+
+--S 572 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 572
+
+\end{chunk}
+
+\section{Trofie}
+The Ligurian version of {\sl gnocchi}, {\sl trofie} are made from a
+mixture of wheat flour, bran, water, and potatoes. Traditionally
+served boiled with green beans and more potatoes, they may also be
+paired with a simple mix of {\sl pesto genovese}, pine nuts, salt, and
+olive oil.
+\begin{chunk}{*}
+)clear all
+
+--S 573 of 601
+A(i,j) == (3.0*i)/5.0+10*cos(j*%pi/25)
+--R                                                                   Type: Void
+--E 573
+
+--S 574 of 601
+X(i,j) == (1+sin(i*%pi/150)+2*sin(i*%pi/150)*sin(j*%pi/25)) * _
+          sin(13*i*%pi/300)
+--R                                                                   Type: Void
+--E 574
+
+--S 575 of 601
+Y(i,j) == (1+sin(i*%pi/150)+2*sin(i*%pi/150)*sin(j*%pi/25)) * _
+          cos(13*i*%pi/300)+5*sin(2*A(i,j)*%pi/125)
+--R                                                                   Type: Void
+--E 575
+
+--S 576 of 601
+Z(i,j) == A(i,j)
+--R                                                                   Type: Void
+--E 576
+
+--S 577 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..50,_
+           style=="smooth",title=="Trofie")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Integer 
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %SE with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %SG with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %SI with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (5)  ThreeDimensionalViewport: "Trofie"
+--R                                               Type: ThreeDimensionalViewport
+--E 577
+
+--S 578 of 601
+zoom(v3d,3.0,3.0,3.0)
+--R                                                                   Type: Void
+--E 578
+
+--S 579 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 579
+
+\end{chunk}
+
+\section{Trottole}
+A well-formed {\sl pasta corta} (short pasta) comprised of rings that
+curl up about a central stalk, {\sl trottole} are ideal for
+salads. They are also delicious with pumpkin or courgette, leek, pine
+nuts, and a few shavings of Parmigiano-Reggiano.
+\begin{chunk}{*}
+)clear all
+
+--S 580 of 601
+A(i,j) == 0.17-0.15*sin(j*%pi/120)+0.25*((60.0-j)/60.0)^10*sin(j*%pi/30)
+--R                                                                   Type: Void
+--E 580
+
+--S 581 of 601
+B(i,j) == 0.17-0.15*sin(j*%pi/120)+0.25*((60.0-j)/60.0)^10*sin(j*%pi/30)
+--R                                                                   Type: Void
+--E 581
+
+--S 582 of 601
+C(i,j) == 0.25*((60.0-j)/60.0)^5*(1-sin((i-128)*%pi/160))*cos(j*%pi/30)
+--R                                                                   Type: Void
+--E 582
+
+--S 583 of 601
+D(i,j) == (7.0*i)/400.0-48/25+C(i,j)+j/120.0*(1-sin((i-128)*%pi/64))
+--R                                                                   Type: Void
+--E 583
+
+--S 584 of 601
+X(i,j) == _
+  if (i >= 128) _
+   then (A(i,j)*(1-sin((i-128)*%pi/320)))*cos(7*i*%pi/160) _
+   else B(i,j)*cos(7*i*%pi/160)
+--R                                                                   Type: Void
+--E 584
+
+--S 585 of 601
+Y(i,j) == _
+  if (i >= 128) _
+   then (A(i,j)*(1-sin((i-128)*%pi/160)))*sin(7*i*%pi/160) _
+   else B(i,j)*sin(7*i*%pi/160)
+--R                                                                   Type: Void
+--E 585
+
+--S 586 of 601
+Z(i,j) == _
+  if (i >= 128) _
+   then D(i,j) _
+   else i/400.0+j/100.0+0.25*((60.0-j)/60.0)^5*cos(j*%pi/30)
+--R                                                                   Type: Void
+--E 586
+
+--S 587 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..160,j=0..60,_
+           style=="smooth",title=="Trottole")
+--R   Compiling function A with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function B with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function C with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function D with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Expression
+--R      Float 
+--I   Compiling function %SK with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %SM with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %SO with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (8)  ThreeDimensionalViewport: "Trottole"
+--R                                               Type: ThreeDimensionalViewport
+--E 587
+
+--S 588 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 588
+
+--S 589 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 589
+
+\end{chunk}
+
+\section{Tubetti Rigati}
+The smallest members of the {\sl pasta corta} (short pasta) clan, {\sl
+tubetti rigati} (grooved tubes) were first created in Campania,
+southern Italy. When served {\sl e fagioli} (with beans) they create
+very filling soups, but can also be served in a light {\sl marinara}
+(mariner's) sauce of tomato, basil, and onions.
+\begin{chunk}{*}
+)clear all
+
+--S 590 of 601
+X(i,j) == 2*cos(i*%pi/75)+0.03*sin((4*i+7.5)*%pi/15)+0.5*cos(j*%pi/60)
+--R                                                                   Type: Void
+--E 590
+
+--S 591 of 601
+Y(i,j) == 2*sin(i*%pi/75)+0.03*sin(4*i*%pi/15)+0.5*sin(j*%pi/60)
+--R                                                                   Type: Void
+--E 591
+
+--S 592 of 601
+Z(i,j) == j/3.0
+--R                                                                   Type: Void
+--E 592
+
+--S 593 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..150,j=0..30,_
+           style=="smooth",title=="Tubetti Rigati")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %SQ with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %SS with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %SU with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Tubetti Rigati"
+--R                                               Type: ThreeDimensionalViewport
+--E 593
+
+--S 594 of 601
+zoom(v3d,2.0,2.0,2.0)
+--R                                                                   Type: Void
+--E 594
+
+--S 595 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 595
+
+\end{chunk}
+
+\section{Ziti}
+A pasta reserved for banquets and special occasions, {\sl ziti}
+('grooms' or 'brides' in Italian dialect) originate from
+Sicily. Tradition has it that they should be broken by hand before
+being tossed into boiling water. After draining they can be served in
+tomato sauces with peppers or courgettes, topped with cheese like
+Provolone.
+\begin{chunk}{*}
+)clear all
+
+--S 596 of 601
+X(i,j) == 0.5*cos(i*%pi/35)+0.2*sin(j*%pi/70)
+--R                                                                   Type: Void
+--E 596
+
+--S 597 of 601
+Y(i,j) == 0.5*sin(i*%pi/35)+0.2*sin(j*%pi/70)
+--R                                                                   Type: Void
+--E 597
+
+--S 598 of 601
+Z(i,j) == j/14.0
+--R                                                                   Type: Void
+--E 598
+
+--S 599 of 601
+v3d:=draw(surface(X(i,j),Y(i,j),Z(i,j)),i=0..70,j=0..70,_
+           style=="smooth",title=="Ziti")
+--R   Compiling function X with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Y with type (Variable i,Variable j) -> Expression
+--R      Float 
+--R   Compiling function Z with type (Variable i,Variable j) -> Polynomial
+--R      Float 
+--I   Compiling function %SW with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %SY with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--I   Compiling function %TA with type (DoubleFloat,DoubleFloat) -> 
+--R      DoubleFloat 
+--R   Transmitting data...
+--R
+--R   (4)  ThreeDimensionalViewport: "Ziti"
+--R                                               Type: ThreeDimensionalViewport
+--E 599
+
+--S 600 of 601
+zoom(v3d,2.5,2.5,2.5)
+--R                                                                   Type: Void
+--E 600
+
+--S 601 of 601
+close(v3d)
+--R                                                                   Type: Void
+--E 601
+
 )spool 
 )lisp (bye)
  
