%!PS % The Saga of the Dripping Stalactite #35 % ====================================================================== % by Don Lancaster /ggnum 35 store % Copyright c 2003 by Don Lancaster & Synergetics, Box 809, Thatcher, AZ, 85552 % (928) 428-4073 Email: don@tinaja.com Website: http://www.tinaja.com % Consulting services available http://www.tinaja.com/info01.html % Linking welcome. Reposting expressly forbidden. % All commercial rights and all electronic media rights ~fully~ reserved. % Linking usually welcome. Reposting expressly forbidden. Version 1.1 % Combined data sheet and apnote for the MS28D-04X, the first magic sinewave % evaluation chip offering 3-phase compatibility and zeroing of the first % TWENTY TWO harmonics at the highest possible efficiency. % IMPORTANT NOTE: Don Lancaster's file gonzo.ps is required for this program. % After obvious location mods, uncomment ONE of the following two lines: (C:\\windows\\desktop\\gonzo\\gonzo.ps) run % use internal gonzo % (A:\\gonzo.ps) run % use external gonzo % NOTE THAT ALL PS FILENAME STRINGS !!!DEMAND!!! DOUBLE REVERSE SLASHES. % GONZO20A Guru Gonzo PostScript power tools (Interim release) % Includes gonzo justification and layout utilities. % Copyright c 1990, 1996, 2001 by Don Lancaster and Synergetics, Box 809, % Thatcher Arizona, 5552 (928) 428-4073 don@tinaja.com support % via http://www.tinaja.com All commercial rights and all electronic % media rights **FULLY** reserved. Reposting is expressly forbidden. %%%%%%%%%%% links menu directory %%%%%%%%%%%% % This code locks pdfmark commands out of a PostScript printer. /pdfmark where {pop}{userdict /pdfmark /cleartomark load put} ifelse % /surl "start url" marks the beginning of a text sequence to be urled. % It also paints the text blue... /surl {mark /blue cvx 0.33 /setgray cvx % change text to blue /currentpoint cvx % remember box start /urly /exch cvx /store cvx /urlx /exch cvx /store cvx ] cvx % complete deferred command printlist exch 3 index exch put % stuff into gonzo printlist exch 1 add exch % increment gonzo list count } def % /eurl "end url" unmarks the end of a text sequence and sets up % the pdfmark needed to define the Acrobat web link. /eurl {mark % start deferred proc exch % position url string % /black cvx 0 /setgray cvx % turn blue marker off % maintextcolor /setrgbcolor cvx % reset to main text color??? /aqua cvx /black cvx /makeurl cvx % defer call of url builder ] cvx % complete deferred proc printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } def % /makeurl generates the pdfmark, receiving a {(urlstring) makeurl}. % Note that it is not called until formatted printlist time... /urlover 0.2 def % fraction of hot area over bounds /makeurl { /cururlname exch store % save the url string mark % start pdfmark currentfont /ScaleMatrix get 3 get /fsize exch store % guess height /Rect [ urlx fsize urlover mul sub % set box left x urly fsize urlover mul sub % set box left y currentpoint exch fsize urlover mul add exch fsize add ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def % /makeurlx generates the box specific pdfmark, receiving % a {(urlstring) makeurl}. % Note that it is not called until formatted printlist time... /makeurlx { /cururlnamex exch store % save the url string mark % start pdfmark /Rect [ xpos % set box left x ypos 0.9 sub % set box left y xpos 2.8 add % box right x ypos 0.9 sub 2.8 add % box right y ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def /maintextcolor {0 0 0 } def % text link specific data -- use dictionary instead below { /cubic01 {(http://www.tinaja.com/cubic01.asp) eurl} def /hack62 {(http://www.tinaja.com/glib/hack62.pdf) eurl} def /increment {(http://www.tinaja.com/text/bezgen3.html) eurl} def /interpolate {(http://members.bellatlantic.net/~vze2vrva/design.html) eurl } def /bezmath {(http://www.tinaja.com/text/bezmath.html) eurl } def /table {(http://www.tinaja.com/psutils/imtable.psl) eurl } def } pop % dictionary method << %zzzz %%%% unused links have been commented for gg9a simplicity /powerfit (http://www.tinaja.com/glib/powerfit.pdf) /pssort (http://www.tinaja.com/glib/pssort.pdf) /heapsort (http://www.tinaja.com/glib/heapsort.pdf) /bashpseu (http://www.tinaja.com/glib/bashpseu.pdf) /pseudo01 (http://www.tinaja.com/pseudo01.asp) /muse112 (http://www.tinaja.com/glib/muse112.pdf) /muse113 (http://www.tinaja.com/glib/muse113.pdf) /muse89 (http://www.tinaja.com/glib/muse89.pdf) /muse151 (http://www.tinaja.com/glib/muse151.pdf) /pssecrets (http://www.tinaja.com/glib/pssecrets.pdf) /bouncy (http://www.tinaja.com/glib/bouncy.pdf) /vectstep (http://www.tinaja.com/glib/vectstep.pdf) /muse102 (http://www.tinaja.com/glib/muse102.pdf) /onesword (http://www.tinaja.com/text/onesword.html) /emergop2 (http://www.tinaja.com/glib/emergop2.pdf) /wave01 (http://www.tinaja.com/wave01.asp) /chaincode (http://www.tinaja.com/text/chain01.html) /muse152 (http://www.tinaja.com/glib/muse152.pdf) /atg1 (http://www.tinaja.com/glib/atg1.pdf) /hack62 (http://www.tinaja.com/glib/hack62.pdf) /psinscrt (http://www.tinaja.com/glib/psinscrt.pdf) /fern2img (http://www.tinaja.com/psutils/fern2img.psl) /thefern (http://www.tinaja.com/psutils/fern2img.pdf) /cmoscb (http://www.amazon.com/exec/obidos/ISBN%3D0750699434/donlancastersgurA/002-0496817-3688016) /activecb (http://www.amazon.com/exec/obidos/ISBN%3D075062986X/donlancastersgurA/002-0496817-3688016) /hack64 (http://www.tinaja.com/glib/hack64.pdf) /nss (http://www.caves.org) /sinquest (http://www.tinaja.com/glib/sinquest.pdf) /askguru (http://www.tinaja.com/glair01.asp) /assycb (http://www.amazon.com/exec/obidos/ISBN%3D0672223317/donlancastersgurA/002-3338585-9572047) /muse105 (http://www.tinaja.com/glib/muse105.pdf) /muse107 (http://www.tinaja.com/glib/muse107.pdf) /resbn90 (http://www.tinaja.com/glib/resbn90.pdf) /hackar3 (http://www.tinaja.com/glib/hackar3.pdf) /testdemo (http://www.tinaja.com/glib/FULL60-1.ASC) /mschips (http://www.tinaja.com/glib/mschips.pdf) /sigview (http://www.sigview.com) /ggsigview (http://www.tinaja.com/glib/sigview.pdf) /mock (http://www.technicalworks.com) /xtronics (http://www.xtronics.com/) /oshen (http://www.oshonsoft.com/pic.html) /heapps01 (http://www.tinaja.com/psutils/heapps01.psl) /distlangpdf (http://www.tinaja.com/glib/distlang.pdf) /strconv (http://www.tinaja.com/glib/strconv.pdf) /fancysort (http://linux.wku.edu/~lamonml/algor/sort) /presort (http://www.tinaja.com/psutils/presort1.psl) /psnt (http://www.tinaja.com/glib/psnt.pdf) /insort (http://www.tinaja.com/psutils/insort.ps) /bublsort (http://www.tinaja.com/psutils/bublsort.ps) /oldstrconv (http://www.tinaja.com/psutils/strconv.html) /psdisk03 (http://www.tinaja.com/glib/psdisk03.pdf) /muse01 (http://www.tinaja.com/muse01.asp) /gonzopow (http://www.tinaja.com/glib/gonzopow.pdf) /analogeb (http://www.tinaja.com/glib/analogeb.pdf) /psdisk03 (http://www.tinaja.com/glib/psdisk03.pdf) /flut01 (http://www.tinaja.com/flut01.asp) /clpng (news:///comp.lang.postscript) /ctpng (news:///comp.text.pdf) /yahoo (http://www.yahoo.com) /google (http://www.google.com) /scodes (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) /whois (http://www.networksolutions.com/en_US/whois/index.jhtml) /zekes (http://www.zekes.com) /logfileformat (http://www.microsoft.com/windows2000/en/server/iis/default.asp?url=/windows2000/en/server/iis/htm/core/iicnvlg.htm) /logrpt01.psl (http://www.tinaja.com/psutils/logrpt01.psl) /logrpt01.log (http://www.tinaja.com/psutils/logrpt01.log) /ex031126 (http://www.tinaja.com/psutils/ex031126.log) /picup01 (http://www.tinaja.com/picup01.asp) /webwb01 (http://www.tinaja.com/webwb01.asp) /muse90 (http://www.tinaja.com/glib/muse90.pdf) /vismagsn (http://www.tinaja.com/glib/vismagsn.psl) /msquant (http://www.tinaja.com/glib/msquant.psl) /optjit01 (http://www.tinaja.com/psutils/optjit01.psl) /optjit01demo (http://www.tinaja.com/psutils/optjit01.pdf) /qall01 (http://www.tinaja.com/psutils/qall01.psl) /deltapat (http://www.tinaja.com/glib/deltapat.pdf) /mindist1 (http://www.tinaja.com/glib/mindist1.pdf) /deltams1 (http://www.tinaja.com/glib/deltams1.pdf) /grabjpg (http://www.tinaja.com/psutils/grabjpg.psl) /gallery (http://www.tinaja.com/glib/gallery.pdf) /nutour01 (http://wwww.tinaja.com/nutour01.pdf) /linkpdf1 (http://www.tinaja.com/glib/linkpdf1.html) /ebayfoto (http://www.tinaja.com/glib/ebayfoto.pdf) /jpeg2pdf.html (http://www.tinaja.com/text/jpeg2pdf.html) /pdf2bmp (http://www.tinaja.com/psutils/pdf2bmp.psl) /bitmfont (http://www.tinaja.com/psutils/bitmfont.txt) /antifontpsl (http://www.tinaja.com/psutils/antifont.psl) /antifonttxt (http://www.tinaja.com/psutils/antifont.txt) /histog01 (http://www.tinaja.com/psutils/histog01.psl) /swingtlt (http://www.tinaja.com/glib/swingtlt.pdf) /newsamoe (news:///alt.marketing/online.ebay) /webtrends (http://www.netiq.com/webtrends/default.asp) /stegan (http://63.140.207.28/books/bkwater.asp) /nodi (http://www.pages.ebay.com/help/community/notice-infringe2.pdf) /ebayvero (http://www.pages.ebay.com/help/community/vero-program.html) /aboutme (http://members.ebay.com/aboutme/abeja/) /magfill2 (http://www.tinaja.com/psutils/magfill2.psl) /bmprpt01 (http://www.tinaja.com/psutils/bmprpt01.psl) /waywere (http://www.tinaja.com/glib/waywere.pdf) /nikon (http://www.nikon.com) /bayer (http://www.coreco.com/Web/wbtools3.nsf/0/87fce126f109ea3a05256c7100591c9a?OpenDocument) /hewpack (http://www.hp.com) /auct01 (http://www.tinaja.com/auct01.asp) /blat01 (http://www.tinaja.com/auct01.asp) /moreebay (http://www.tinaja.com/glib/moreebay.pdf) /auctscne (http://www.tinaja.com/glib/auctscne.pdf) /autourl (http://www.tinaja.com/glib/autourl.pdf) /msintro1 (http://www.tinaja.com/glib/msintro1.pdf) /msintrosource (http://www.tinaja.com/glib/msintro1.psl) /knockout (http://www.tinaja.com/glib/knockout.bmp) /stepsynt (http://www.tinaja.com/glib/stepsynt.pdf) /msintro1 (http://www.tinaja.com/glib/msintro1.pdf) /msinprop (http://www.tinaja.com/glib/msinprop.pdf) /muse106 (http://www.tinaja.com/glib/muse106.pdf) /muse142 (http://www.tinaja.com/glib/muse142.pdf) /math01 (http://www.tinaja.com/math01.asp) /cubic01 (http://www.tinaja.com/cubic01.asp) /bez4pts (http://www.tinaja.com/glib/bez4pts.pdf) /muse145 (http://www.tinaja.com/glib/muse145.pdf) /muse148 (http://www.tinaja.com/glib/muse148.pdf) /curveft3 (http://www.tinaja.com/psutils/curveft3.psl) /fuzzybez (http://www.tinaja.com/glib/fuzzybez.pdf) /bmprpt01 (http://www.tinaja.com/psutils/bmprpt01.psl) /nowhit01 (http://www.tinaja.com/psutils/nowhit01.psl) /blender (http://www.tinaja.com/psutils/blender.psl) /speedup2 (http://www.tinaja.com/glib/speedup2.pdf) /histog01 (http://www.tinaja.com/psutils/histog01.psl) /imgviewer32 (http://www.arcatapet.net/imgv32.cfm) /basis (http://www.tinaja.com/glib/basis.pdf) /expbmp (http://www.tinaja.com/glib/expbmp.pdf) /dodbur01 (http://www.tinaja.com/psutils/dodbur01.psl) /dodgebur (http://www.tinaja.com/glib/dodgebur.pdf) /magfill1 (http://www.tinaja.com/psutils/magfill1.psl) /swingt01 (http://www.tinaja.com/psutils/swingt01.psl) /before01 (http://www.tinaja.com/images/bargs/marcon01.jpg) /during01 (http://www.tinaja.com/images/bargs/marcon01.bmp) /after01 (http://www.tinaja.com/images/bargs/marconz1.jpg) /repobmp (http://www.tinaja.com/glib/repobmp.pdf) /basis01 (http://www.tinaja.com/glib/basis.pdf) /arcata (http://www.arcatapet.net/imgv32.cfm) /comparebmp (http://www.designer-info.com/Writing/bmp_tiff_jpeg_gif.htm) /imagimag (http://www.tinaja.com/glib/imagimag.pdf) /myebays (http://www.tinaja.com/glib/myebays.pdf) /stepprep (http://www.tinaja.com/glib/stepprep.pdf) /aafont01 (http://www.tinaja.com/aafont01.asp) /here1 (http://village.infoweb.ne.jp/~fwhw1257/study/bmpform.htm) /here2 (http://www.daubnet.com/formats/BMP.html) /bittype (http://www.tinaja.com/psutils/pdf2bmp.psl) /photocombine (http://www.tinaja.com/psutils/blender.psl) /psl (http://www.tinaja.com/psutils/) % dummy temp /psl1 (http://www.tinaja.com/psutils/pdf2bmp.psl) /psl2 (http://www.tinaja.com/psutils/acatdata.psl) /psl3 (http://www.tinaja.com/psutils/catwords.psl) /psl4 (http://www.tinaja.com/psutils/graburls.psl) /psl5 (http://www.tinaja.com/psutils/blender.psl) /psl6 (http://www.tinaja.com/psutils/catools1.psl) /psl7 (http://www.tinaja.com/psutils/strconv.html) /psl8 (http://www.tinaja.com/psutils/bodcat.psl) /psl9 (http://www.tinaja.com/psutils/flatvue1.psl) /psl10 (http://www.tinaja.com/psutils/fern2img.psl) /psl11 (http://www.tinaja.com/psutils/flutools.psl) /psl12 (http://www.tinaja.com/psutils/mscal156q.psl) /psl13 (http://www.tinaja.com/psutils/weblogu2.psl) /psl14 (http://www.tinaja.com/psutils/pfa2pfb.psl) /psl15 (http://www.tinaja.com/psutils/pfb2pfa.psl) /psl16 (http://www.tinaja.com/glib/psdisk03.psl) /psl17 (http://www.tinaja.com/psutils/disktool.psl) /psl18 (http://www.tinaja.com/glib/psinscrt.psl) /psl19 (http://www.tinaja.com/glib/pssearch.psl) /psl20 (http://www.tinaja.com/text/refsum1.html) /psl21 (http://www.tinaja.com/text/reflog1.html) /psl22 (http://www.tinaja.com/psutils/reflog1.psl) /psl23 (http://www.tinaja.com/psutils/refsum1.psl) /psl24 (http://www.tinaja.com/psutils/searepl.psl) /psl25 (http://www.tinaja.com/psutils/weberru2.psl) /psl26 (http://www.tinaja.com/psutils/grabsrch.psl) /psl27 (http://www.tinaja.com/psutils/grabrefs.psl) /magsn01 (http://www.tinaja.com/magsn01.asp) /gonzoutils (http://www.tinaja.com/post01.asp#gonzo) /disktool (http://www.tinaja.com/psutils/disktool.ps) /elesimp (http://www.tinaja.com/glib/elesimp.pdf) /tn5603 (http://partners.adobe.com/asn/developer/pdfs/tn/TN5603.Filters.pdf) /fern2img (http://www.tinaja.com/psutils/fern2img.psl) /fern (http://www.tinaja.com/psutils/fern2img.pdf) /oldfern (http://www.tinaja.com/psutils/fernx1.pdf) /acrosdk (http://partners.adobe.com/asn/developer/acrosdk/main.html) /refman2 (http://partners.adobe.com/asn/developer/pdfs/tn/psrefman.pdf) /refman3 (http://partners.adobe.com/asn/developer/pdfs/tn/PLRM.pdf) /s3011 (http://partners.adobe.com/asn/developer/pdfs/tn/PS3010and3011.Supplement.pdf) /s2011 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2011.supplement.pdf) /s2012 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2012.supplement.pdf) /s2013 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2013.supplement.pdf) /s2014 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2014.supplement.pdf) /s2015 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2015.supplement.pdf) /s2016 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2016.supplement.pdf) /ghost (http://www.cs.wisc.edu/~ghost/) /distlang (http://www.tinaja.com/psutils/distlang.html) /adobepst (http://partners.adobe.com/asn/developer/technotes/) /maildon (mailto:don@tinaja.com) /tinaja (http://www.tinaja.com) /adobe (http://www.adobe.com) /adobesdk (http://partners.adobe.com/asn/developer/acrosdk/main.html) /pstrans (http://www.tinaja.com/glib/pstrans.pdf) /borland (http://www.borland.com/products/downloads/download_cbuilder.html) /ebay (http://cgi6.ebay.com/ws/eBayISAPI.dll?ViewSellersOtherItems&userid=abeja&completed=0&sort=2&since=-1&include=0&page=1&rows=100) /searepl (http://www.tinaja.com/psutils/searepl.psl) /aasdk (http://www.tinaja.com/plugins/AboutAcrobatSDK.api) /uncomp (http://www.tinaja.com/plugins/UncompressPDF.api) /addimage (http://www.tinaja.com/plugins/AddImage.api) /samplejpg (http://www.tinaja.com/plugins/sample.jpg) /transparency (http://www.tinaja.com/plugins/Transparency.api) /threerects (http://www.tinaja.com/plugins/threerects.pdf) /watermark (http://www.tinaja.com/plugins/Watermark.api) /verifyurls (http://www.tinaja.com/plugins/VerifyURLS.api) /flate (http://www.tinaja.com/glib/flatvue.pdf) /pstrans (http://www.tinaja.com/glib/pstrans.pdf) /advt01 (http://www.tinaja.com/advt01.asp) /amlink01 (http://www.tinaja.com/amlink01.asp) /ng1 (news:///comp.text.pdf) /ng2 (news:///comp.lang.postscript) /msc++ (http://msdn.microsoft.com/visualc/productinfo/default.asp) /degub (http://www.tinaja.com/glib/degub.pdf) /ghostscript (http://www.artifex.com/pressreleases/GS70.htm) /demox.psl (http://www.tinaja.com/glib/g9demox.psl) /demox.pdf (http://www.tinaja.com/glib/g9demox.pdf) /demo.pdf (http://www.tinaja.com/glib/g9demo.pdf) /flatvue (http://www.tinaja.com/glib/flatvue.psl) /pdfrefman (http://partners.adobe.com/asn/developer/acrosdk/docs.html) /psrefman (http://partners.adobe.com/asn/developer/technotes/postscript.html) /pdfmrm (http://partners.adobe.com/asn/developer/acrosdk/docs.html) /tipdf (http://partners.adobe.com/asn/developer/acrosdk/docs.html) /asdk (http://partners.adobe.com/asn/developer/acrosdk) /mtcr (http://support.adobe.com/devsup/devsup.nsf/docs/51864.htm) /flatvue1 (http://www.tinaja.com/psutils/flatvue1.psl) /acrob01 (http://www.tinaja.com/acrob01.asp) /post01 (http://www.tinaja.com/post01.asp) /info01 (http://www.tinaja.com/info01.asp) /gurgrm01 (http://www.tinaja.com/gurgrm01.asp) /energfun (http://www.tinaja.com/glib/energfun.pdf) { /tilley (http://www.tilleyfoundation.com) /mnglobal (http://www.mnglobal.com/energy/pg2.htm) /keely (http://www.keelynet.com) /evolve (http://www.evolvedtechnology.com) /hack64 (http://www.tinaja.com/glib/hack64.pdf) /hackar3 (http://www.tinaja.com/glib/hackar3.pdf) /resbn58 (http://www.tinaja.com/glib/resbn58.pdf) /bppt (http://www.batterypoweronline.com) /muse112 (http://www.tinaja.com/glib/muse112.pdf) /muse113 (http://www.tinaja.com/glib/muse113.pdf) /energfun (http://www.tinaja.com/glib/energfun.pdf) /bashpseu (http://www.tinaja.com/glib/bashpseu.pdf) /adobe (http://www.adobe.com) /netscape (http://www.netscape.com) /gallypsl (http://www.tinaja.com/galley1.psl) /gallypdf (http://www.tinaja.com/galley1.pdf) /atn5150 (http://partners.adobe.com/asn/developer/acrosdk/docs/createpdfapi/pdfmarkReference.pdf) /nutour (http://www.tinaja.com/bargains/nutour02.pdf) /nutoursource (http://www.tinaja.com/bargains/nutour02.psl) /bwhistle (http://www.tinaja.com/glib/bwhistle.pdf) /gonzo1 (http://www.tinaja.com/post01.asp#gonzo) /barg01 (http://www.tinaja.com/barg01.asp) /weblib01 (http://www.tinaja.com/weblib01.asp) /gurgrm01 (http://www.tinaja.com/gurgrm01.asp) /z1 (http://www.tinaja.com/bargains/thumb/albradz2.jpg) /z2 (http://www.tinaja.com/bargains/sbtesteq.asp) /z3 (http://www.tinaja.com/images/bargs/albrad02.jpg) /z4 (http://www.tinaja.com/bargains/thumb/tutenaz2.jpg) /z5 (http://www.tinaja.com/bargains/sbphone.asp) /z6 (http://www.tinaja.com/images/bargs/tutena02.jpg) /sourceme (http://www.tinaja.com/glib/gallery.psl) /sourceme2 (http://www.tinaja.com/glib/autourl.psl) } pop >> {mark exch /eurl cvx ] cvx def} forall %%%%%%%%%%%%%%%% New colorizer patches %%%%%%%%%%%%%%%%%% /boxgrays 0.899 def /grayshade boxgrays def /mastergray boxgrays def /staytint {0.33 setgray} def /staytint1 {0.25 setgray} def /showadgrays true def /red {0 settint} def /Zmacro {staytint /ypos ypos 2 add def 72 300 div setlinewidth xpos ypos moveto txtwide 0 rlineto stroke /ypos ypos -2 add def tintoff} def % hair rule /amacro {(zy0) stringmacro /ypos ypos ypara add def 0.33 setgray } def % start drop cap /bmacro {(iFy1) stringmacro /ypos ypos ypara add def black} def % finish drop cap % Gonzo character colorizer /blueon {mark /blue cvx 0.33 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /blueoff {mark /beige cvx 0 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton {mark 0.33 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1 {mark 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1b {mark beige cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1a {mark /aqua cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1p {mark /burple cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1r {mark /red cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1a {mark /aqua cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1b {mark /beige cvx % try for beige after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tintoff {mark 0 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def %%%%%%%%%%%%%% COMPACT VERSION OF COLORIZER II %%%%%%%%%%%%%%%%%%%%%% /settint {dup /currenttint exch store 5.999 mul dup floor cvi /&cbar exch store dup floor sub /&cwt exch store [ {/setgray [ /dup cvx 0.3 &cwt 0.59 mul add /ge cvx [1 /exch cvx &cwt 0.59 mul 0.30 add /sub cvx 1 &cwt sub 0.59 mul 0.11 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx /exch cvx ] cvx [ &cwt 0.59 mul 0.3 add /div cvx /dup cvx &cwt /mul cvx 0] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 1 &cwt sub 0.3 mul add /ge cvx [1 &cwt sub 0.3 mul 0.59 add /sub cvx &cwt 0.3 mul 0.11 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx /exch cvx 1 /exch cvx] cvx [1 &cwt sub 0.3 mul 0.59 add /div cvx /dup cvx 1 &cwt sub /mul cvx /exch cvx 0] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 &cwt 0.11 mul add /ge cvx [&cwt 0.11 mul 0.59 add /sub cvx 1 &cwt sub 0.11 mul 0.30 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx 1 /exch cvx] cvx [0 /exch cvx &cwt 0.11 mul 0.59 add /div cvx /dup cvx &cwt /mul cvx] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 1 &cwt sub mul 0.11 add /ge cvx [1 &cwt sub 0.59 mul 0.11 add /sub cvx &cwt 0.59 mul 0.30 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx 1] cvx [0 /exch cvx 1 &cwt sub 0.59 mul 0.11 add /div cvx /dup cvx 1 &cwt sub /mul cvx /exch cvx] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.11 &cwt 0.30 mul add /ge cvx[&cwt 0.30 mul 0.11 add /sub cvx 1 &cwt sub 0.30 mul 0.59 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx /exch cvx 1] cvx [ &cwt 0.30 mul 0.11 add /div cvx /dup cvx &cwt /mul cvx /exch cvx 0 /exch cvx ] cvx /ifelse cvx /setrgbcolor cvx ] cvx /def cvx} {/setgray [ /dup cvx 0.30 1 &cwt sub 0.11 mul add /ge cvx[ 1 /exch cvx 1 &cwt sub 0.11 mul 0.30 add /sub cvx &cwt 0.11 mul 0.59 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx ] cvx [ 1 &cwt sub 0.11 mul 0.30 add /div cvx /dup cvx 1 &cwt sub /mul cvx 0 /exch cvx] cvx /ifelse cvx /setrgbcolor cvx ] cvx /def cvx} ] &cbar get exec exec} bind def /beige {0.10 settint} def % examples of convenience operators /aqua {0.52 settint} def /blue {0.67 settint} def /lime {0.44 settint} def /burple {0.75 settint} def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /guru { gonzo begin ps.util.1 begin printerror nuisance begin} def % guru % activate gonzo utilities 50 50 10 setgrid % create grid % 56 61 showgrid /setpagefonts { /cstretch 0.015 def /sstretch 0.015 def /font0 /StoneSans-Bold 1.6 gonzofont /font1 /StoneSans 0.95 gonzofont /font2 /StoneSans [0.95 0 0.25 0.95 0 0 ] gonzofont /font4 /StoneSans 0.85 gonzofont /font3 /StoneSans-Bold 0.85 gonzofont /font6 /StoneSans-Bold 0.85 gonzofont /font7 /StoneSans-Bold 1.05 gonzofont % subheaders /font8 /StoneSans-Bold [0.65 0 0 0.65 0 0.4] gonzofont /txtwide 36 store /yinc 1.2 store /kern 0.1 store /pm 1.5 store aqua 0.33 setgray font1 black /amacro { mark /aqua cvx 0.33 /setgray cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch } def /bmacro { mark /black cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch } def /shiftin {xpos /xposhold exch store /xpos xpos 3 add store} def /shiftout {/xpos xposhold store} def /texttop 51 store /textleft 3 store /cmacro {aqua 0.25 setgray (znhL7) stringmacro /xpos xpos 1.7 sub store /ypos ypos .1 sub def } def % left title /dmacro {black (pL1hz) stringmacro /xpos xpos 1.7 add store /ypos ypos .1 add def} def % normal text after centered title /fmacro % try and fake | {mark /gsave cvx /currentpoint cvx /moveto cvx 0.1 /setlinewidth cvx 0 0.65 /rlineto cvx /stroke cvx /grestore cvx ] cvx printlist exch 3 index exch put % stuff into gonzo printlist exch 1 add exch % increment gonzo list count } def } def setpagefonts % -2 50.5 (optional header here \274) cl %% Set document opening conventions. Note DOCVIEW limited. [/CropBox [0 0 520 620] % set the wierd size /PAGES pdfmark [ {Catalog} << /ViewerPreferences << /FitWindow true /CenterWindow true >> /PageLayout /OneColumn % continous /Pagemode /UseNone % no thumbs /View [/XYZ null null 1 ] % force 100% >> /PUT pdfmark %%%%%%%%%%%%%%%%% START DEMO ART (not in use) %%%%%%%%%%%%%%%% %%% Hand patching Info: % next available variable is /GS3 % transparency gstate is object 2 % contents stream is object 18 gets q /GS3 gs (xstuff) Q % be sure to q Q bracket to localize % resources stream is object 19 gets /GS3 2 0 R /transoverlay { % make a new graphics state [ /_objdef {newgsstate} /type /dict /OBJ pdfmark % fill the new overlay graphics state - See PDF manual for details [ {newgsstate} << /Type /ExtGState /ca 0.5 % fill transparency is 0.5 /CA 0.5 % stroke transparency is 0.5 /BM /Normal /AIS false /OP false /OPM 1 /op true >> /PUT pdfmark % start a Begin Picture graphics overlay subroutine... [ /BBox [0 0 1000 1000 ] /_objdef {overlaypix} /BP pdfmark % fill the Begin Picture graphics overlay Xobject subroutine... 0 0.5 1 setrgbcolor % on the aqua side of blue 4 4 6 6 rectfill % complete the Begin Picture graphics overlay Xobject... [ /EP pdfmark } def % Write a two squares program... /twosquares { gsave translate 1 0.5 0 setrgbcolor % red side of orange 2 2 6 6 rectfill % do background opaque box [ {overlaypix} /SP pdfmark % show foreground transparent box grestore} def % Distill the two squares program. Initially use a BARE Distiller Job % Options that has no compression, no embedded fonts, and little else save /snap1 exch store %%% transoverlay % create new objects %%% 14 17.5 twosquares snap1 restore %%%%%%%%%%%% END DEMO %%%%%%% %%%%%%%%%%%% PHOTO INSERTS %%%%%%%%%% % When photos are needed, they are inserted here. Comment out otherwise. %%%%%%%%% photo links %%%%%%%%% % combined autopos jpeg conversion and hotlink: /autofigure1 {save /af1 exch store xpos ypos yinc add translate 6 0.65 923 526 .025 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/flu84501.jpg) % url first (C:\\windows\\desktop\\aaraw_pix\\flu84501.jpg) jpegimageprocwithlink af1 restore} store /autofigure2 {save /af2 exch store xpos ypos yinc add translate 8.5 -2 790 672 .020 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/tek40841.jpg) % url first (C:\\windows\\desktop\\aaraw_pix\\tek40841.jpg) jpegimageprocwithlink af2 restore} store /autofigure3 {save /af3 exch store xpos ypos yinc add translate 12 0.6 530 816 .018 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/sencri01.jpg) % url first (C:\\windows\\desktop\\aaraw_pix\\sencri01.jpg) jpegimageprocwithlink af3 restore} store /autofigure4 {save /af4 exch store xpos ypos yinc add translate 12 -0.4 422 612 .024 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/abspar01.jpg) % url first (C:\\windows\\desktop\\aaraw_pix\\abspar01.jpg) jpegimageprocwithlink af4 restore} store /jpegimageprocwithlink { % hoffset voffset hres vres save /snap2 exch def /infilename exch store % grab passed pix file /inurllink exch store % grab link filename /photoscale exch store /vpixels exch store /hpixels exch store translate % adjust position for final figure ??? inurllink setareaurl % autolink sizing /DeviceRGB setcolorspace % pick color model 0 0 translate % set page position hpixels vpixels scale % magnify unit square photoscale dup scale /infile infilename (r) file def % establish input read file /Data {infile /DCTDecode filter} def % define a data source << % start image dicationary /ImageType 1 % always one /Width hpixels % JPEG width in pixels /Height vpixels % JPEG height in pixels /ImageMatrix [hpixels 0 0 vpixels neg 0 vpixels ] /DataSource Data % proc to get filtered JPEG /BitsPerComponent 8 % color resolution /Decode [0 1 0 1 0 1] % per red book 4.10 >> image % call the image operator ypos snap2 restore /ypos exch def } def /setareaurl { % for auto include routine /cururlname exch store mark % start pdfmark /Rect [ 0 0 hpixels photoscale mul vpixels photoscale mul ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def %%%%%%%%%%% data for quantization figures %%%%%%% /raw [0.0198613 3.75812 0.0300583 0.968559 0.0400088 0.625545 0.0500071 0.473332 0.0598378 0.508493 0.0701048 0.618866 0.080067 0.574973 0.0900779 0.328987 0.0999211 0.358846 0.109939 0.13398 0.119912 0.183206 0.129936 0.374792 0.14006 0.286128 0.150091 0.206733 0.160075 0.190605 0.169949 0.196913 0.17999 0.136811 0.189984 0.223428 0.200178 0.130515 0.209919 0.279305 0.21986 0.179522 0.230087 0.167779 0.239816 0.127177 0.250051 0.18394 0.260079 0.22457 0.269779 0.120137 0.279989 0.142624 0.290027 0.124499 0.299737 0.111797 0.309994 0.123014 0.319982 0.268029 0.329976 0.207562 0.339971 0.0887317 0.349912 0.141557 0.359975 0.0943557 0.369923 0.0895733 0.379933 0.198241 0.389968 0.204985 0.399985 0.107935 0.409949 0.0945179 0.419974 0.125101 0.429965 0.0976423 0.440214 0.0904647 0.449999 0.108261 0.459981 0.0657491 0.470024 0.206909 0.479727 0.0390659 0.489996 0.0464662 0.50005 0.208427 0.509765 0.0436721 0.520046 0.0589122 0.53008 0.0933284 0.540058 0.122129 0.550131 0.108932 0.55981 0.0608129 0.570111 0.0552627 0.579854 0.0621947 0.590107 0.139442 0.59986 0.0498109 0.610232 0.103161 0.619883 0.129033 0.630016 0.0849617 0.640199 0.0601919 0.649749 0.0799222 0.660031 0.0541167 0.669983 0.113527 0.679712 0.0480973 0.690061 0.089419 0.700078 0.107595 0.709859 0.0710718 0.720131 0.041575 0.730196 0.123105 0.740089 0.0584097 0.749848 0.0861482 0.75993 0.0515622 0.769942 0.0761598 0.779974 0.118253 0.789996 0.0481484 0.799986 0.0874933 0.809957 0.0973124 0.820064 0.0534035 0.830362 0.025697 0.83973 0.0399598 0.850034 0.049165 0.859829 0.0851767 0.869827 0.0404494 0.880229 0.0435597 0.889938 0.0723645 0.899933 0.0190775 0.910168 0.0616833 0.919942 0.0725692 0.929991 0.0399983 0.940013 0.102806 0.950018 0.0518368 0.960034 0.0318331 0.970059 0.0823362 0.980036 0.0436783 0.989837 0.0463608 1.00013 0.0562829 ] def /ex54 [ 5.87906 19.9758 5.38078 23.2179 6.61461 22.45 6.48865 23.8991 7.79373 21.6975 7.66747 18.3412 7.16927 15.7147 7.0433 23.5588 7.89268 23.6885 6.44363 24.0582 6.31744 20.4902 5.81917 24.1383 7.16713 21.0382 6.66901 18.9723 6.54259 11.4618 6.04431 22.422 6.99837 23.9206 7.72186 17.6438 7.22366 19.559 7.0974 19.865 8.16101 21.0954 7.66296 21.6132 8.38593 23.3011 8.45734 21.8227 8.33099 20.4936 7.83295 23.6901 9.12148 21.6428 8.99521 24.1041 9.0123 22.5552 10.0761 24.016 9.94987 23.6423 9.4516 18.8 10.3011 18.3618 10.175 15.7533 9.67651 15.8403 10.7406 22.2248 11.2952 23.4363 8.38531 18.1067 9.44916 24.1021 8.95065 19.521 8.82462 16.3613 8.32649 22.8011 9.67415 22.9247 9.1758 23.1169 9.04961 18.7033 10.0041 21.3686 9.50554 20.3098 9.37965 23.1915 10.229 20.7535 9.73083 24.3928 10.7951 23.4553 10.6687 20.0753 10.1704 22.7069 10.9646 20.4496 10.8385 20.1683 11.4042 19.4907 12.0175 23.4256 11.5192 22.1005 12.5835 16.0818 12.4572 16.8864 11.9588 13.1062 12.809 19.7136 12.6826 18.5011 12.1842 20.9156 13.2483 19.5923 13.1218 24.0439 13.8034 21.8302 10.6676 23.761 10.8927 22.8588 11.957 21.8607 11.4587 19.2204 11.3322 17.3188 12.5117 19.7264 12.0132 20.9341 13.1763 23.3152 13.2472 20.7672 13.1206 23.1287 13.4724 23.3126 13.3461 23.9651 13.9117 18.537 13.8022 22.5502 14.2414 20.9416 14.4669 13.1742 13.1752 23.9257 13.6145 24.4108 13.8398 22.6699 ] store /ex54good [ 6.54259 11.4618 11.9588 13.1062 14.4669 13.1742 10.175 15.7533 9.67651 15.8403 10.0041 21.3686 ] store /ex54orig [ 9.88396 24.4257 ] store /ex54want [ 10 0 ] store /shook [ 0.00934937 1.51076 0.0210324 0.978672 0.0312886 0.477679 0.0406482 0.318167 0.0493669 0.337353 0.0617085 0.203131 0.0692016 0.259957 0.0798052 0.229666 0.0885358 0.271299 0.100559 0.1726 0.109939 0.13398 0.118677 0.119296 0.131049 0.187404 0.140698 0.134313 0.149444 0.129195 0.158846 0.106101 0.170589 0.0965049 0.179351 0.0914561 0.189653 0.129042 0.201417 0.0546426 0.210828 0.108576 0.218951 0.100261 0.230727 0.120773 0.241057 0.103841 0.24984 0.0973585 0.259094 0.114175 0.268537 0.0808775 0.281232 0.051974 0.289386 0.0641827 0.301193 0.0942731 0.310907 0.0954356 0.31907 0.0730116 0.330889 0.0677774 0.339699 0.0797174 0.350554 0.0727672 0.360616 0.0859002 0.369923 0.0895733 0.379679 0.0823565 0.391137 0.0758395 0.399965 0.0916116 0.411197 0.0716472 0.419389 0.052739 0.430883 0.0744991 0.441523 0.0643956 0.450642 0.0651337 0.461231 0.0500311 0.470357 0.0682797 0.479727 0.0390659 0.491163 0.0464662 0.500383 0.0701265 0.509765 0.0436721 0.520046 0.0589122 0.529436 0.0621049 0.540979 0.065531 0.549818 0.0659652 0.55981 0.0608129 0.570111 0.0552627 0.579854 0.0621947 0.589296 0.0497526 0.59986 0.0498109 0.610207 0.0454799 0.620493 0.0516502 0.630849 0.0588497 0.639051 0.034206 0.649639 0.0456603 0.660009 0.0522574 0.670628 0.0426991 0.679712 0.0480973 0.69034 0.0477716 0.699467 0.0308037 0.711012 0.0686215 0.720131 0.041575 0.729513 0.0498212 0.739846 0.0430787 0.750499 0.0405623 0.76086 0.0438831 0.770257 0.0497878 0.780553 0.0441616 0.789662 0.0457397 0.800267 0.0325654 0.809451 0.0440074 0.820078 0.0403837 0.830362 0.025697 0.840997 0.0332166 0.85014 0.0337785 0.860449 0.0360605 0.869889 0.015046 0.880467 0.0360463 0.890767 0.0317396 0.899933 0.0190775 0.910273 0.0316686 0.919661 0.0263476 0.929956 0.0388174 0.939357 0.032368 0.949701 0.027215 0.960034 0.0318331 0.970334 0.0351219 0.979745 0.0379512 0.990337 0.0386641 1.00065 0.0439439 ] store %%%%%%%%%%%%% ordinary tracking figures /figureoneauto { /figadvance 13 store save /snap2 exch store xpos 2 add ypos figadvance sub translate % /linestring 20000 string def figure1 snap2 restore /ypos ypos figadvance sub yinc sub % 7 add store % temp bug removal? } store /figure1x { /circproc {gsave /arraynum exch store /circvalue exch store /circshade exch store translate newpath 0 0 0.8 0 360 arc /font1 /StoneSans-Bold 0.9 gonzofont /font2 /Helvetica-Bold 0.7 gonzofont gsave circshade setgray fill grestore line2 0.33 setgray stroke font1 0 -0.3 circvalue cc newpath black font2 0 -1.5 arraynum cc 0 0 ( ) cc % eliminate strange string reuse bug? grestore } store % 32 9 showgrid line1 [{0 0 mt 1 2 rlineto 1 -2 rlineto stroke} 4 8 ] xrpt [{1 2 mt 2 2 rlineto 2 -2 rlineto stroke} 8 4 ] xrpt [{3 4 mt 4 2 rlineto 4 -2 rlineto stroke} 16 2 ] xrpt 7 6 mt 8 2 rlineto 8 -2 rlineto stroke { [-null- (52) (51) (41) (50) (30) (31) (40) (21) (42) (10) (22) (02) (00) (20) (32) (01) (12) (11) (21)] } pop 0 8 0.85 ( ) (00) circproc 15 8 0.7 (52)(01) circproc 7 6 0.7 (51) (02) circproc 23 6 0.7 (41) (03) circproc 3 4 0.75 (50) (04) circproc 11 4 0.75 (30) (05) circproc 19 4 0.75 (31) (06) circproc 27 4 0.75 (40) (07) circproc 1 2 0.75 (21) (08) circproc 5 2 0.75 (42) (09) circproc 9 2 0.75 (10) (10) circproc 13 2 0.75 (22) (11) circproc 17 2 0.75 (02) (12) circproc 21 2 0.75 (00) (13) circproc 25 2 0.75 (20) (14) circproc 29 2 0.75 (32) (15) circproc 0 -.3 0.75 (01) (16) circproc 2 -.3 0.75 (12) (17) circproc 4 -.3 0.75 (11) (18) circproc 6 -.3 0.75 (21) (19) circproc 8 -.3 0.85 ( ) (20) circproc 10 -.3 0.85 ( ) (21) circproc 12 -.3 0.85 ( ) (22) circproc 14 -.3 0.85 ( ) (23) circproc 16 -.3 0.85 ( ) (24) circproc 18 -.3 0.85 ( ) (25) circproc 20 -.3 0.85 ( ) (26) circproc 22 -.3 0.85 ( ) (27) circproc 24 -.3 0.85 ( ) (28) circproc 26 -.3 0.85 ( ) (29) circproc 28 -.3 0.85 ( ) (30) circproc 30 -.3 0.85 ( ) (31) circproc font2 0 5.85 ((reserved)) cc 26.5 7.6 (xx = array address)cc 0 0 ( ) cc % get rid of string bug } store /figure1 { save /snap3 exch def /linestring 1000 string store 9 1 translate % position on page %%%%%%%%%%%%%%%%%%% /sdat [ 11.98 10.02 11.38 10.47 10.7 10.13 11.65 10.41 11.68 10.1 11.82 10.38 11.07 10.13 11.13 10.16 10.95 10.44 9.97 10.1 11.53 10.04 12.0 10.28 11.35 10.49 11.2 9.47 9.24 9.75 10.3 10.03 11.42 9.65 9.91 9.41 8.61 9.69 11.01 9.62 12.3 9.38 11.13 9.74 9.76 9.4 8.93 9.68 9.77 9.72 10.33 10.0 9.66 9.34 9.69 9.62 8.33 9.66 9.83 9.93 11.37 9.69 11.07 9.97 9.71 9.55 9.49 9.82 9.94 9.58 7.78 9.86 9.1 10.14 10.73 9.9 10.17 10.17 10.74 9.76 8.24 9.52 6.75 9.8 9.16 10.08 7.76 9.83 8.03 10.11 11.37 10.15 9.75 9.46 9.43 9.74 7.95 9.77 9.14 10.05 11.05 9.81 10.8 9.48 11.96 9.24 8.28 9.52 7.41 9.8 7.55 9.83 8.36 10.11 7.94 9.45 8.08 9.73 7.69 9.49 5.22 9.77 7.5 10.05 8.58 9.8 8.27 10.08 8.46 9.43 7.47 9.71 7.87 9.74 8.53 10.02 11.58 9.76 11.4 9.7 11.83 9.66 11.44 9.7 9.71 9.97 10.87 10.25 11.64 10.01 9.81 9.63 8.69 9.91 8.75 9.95 9.08 10.22 12.21 10.5 11.57 10.26 10.94 9.57 10.73 9.85 8.71 9.88 9.89 10.16 11.86 9.97 9.43 9.91 8.8 9.94 9.59 10.22 9.57 9.57 9.77 9.85 8.6 9.6 6.62 9.88 8.63 10.16 8.75 9.92 8.55 10.19 11.42 10.47 9.09 9.54 8.28 9.82 7.82 9.85 8.58 10.13 11.75 9.89 12.49 10.44 11.69 9.79 11.75 10.03 12.35 9.65 10.9 9.97 12.31 8.99 12.23 9.24 12.49 9.13 11.21 9.44 11.38 8.83 8.94 9.1 9.54 9.38 9.94 9.14 8.7 9.42 12.04 9.45 11.01 8.76 9.37 9.04 10.72 9.32 8.15 9.08 7.71 9.35 9.4 9.39 9.61 9.01 9.49 9.33 11.21 9.6 11.11 9.1 9.92 9.04 8.03 9.07 8.13 9.35 11.33 9.63 9.08 9.39 11.48 8.97 7.58 9.01 8.67 9.29 8.24 9.05 7.17 9.32 9.78 9.6 11.66 8.67 10.44 8.95 11.85 8.71 8.89 8.98 8.86 9.26 11.78 9.54 9.95 9.3 11.03 9.28 12.11 9.18 8.21 9.22 8.95 9.49 12.44 8.97 8.52 9.25 7.16 9.53 9.52 9.81 10.33 9.57 10.16 8.88 8.46 9.15 6.04 9.19 5.59 9.47 9.3 9.74 9.28 9.23 6.83 9.5 8.24 9.78 12.24 10.06 11.58 9.09 10.43 8.85 7.67 9.13 8.34 9.4 8.25 9.16 6.68 9.44 9.05 9.72 11.67 9.49 9.74 9.53 11.95 9.8 12.31 9.84 9.26 9.15 9.79 8.91 6.2 9.19 6.45 9.46 10.28 9.74 8.69 9.22 6.67 9.5 8.63 9.78 11.48 9.54 8.31 8.85 5.26 9.12 6.86 9.4 11.27 9.68 10.02 8.88 4.95 9.16 3.11 9.44 7.46 9.71 10.29 9.2 7.54 9.47 8.28 9.75 11.89 10.03 8.69 9.06 10.53 9.34 9.57 8.82 5.65 9.1 5.75 9.37 9.75 9.65 8.54 9.13 6.32 9.41 8.24 9.69 11.18 9.72 9.94 9.09 11.48 9.03 10.96 9.07 9.26 9.64 12.02 9.54 8.09 9.3 7.86 9.58 7.97 9.62 9.3 9.89 12.24 9.65 9.16 9.24 9.82 9.52 8.92 9.28 7.6 9.55 9.84 9.83 11.54 9.64 8.44 9.3 8.73 9.58 9.73 9.33 8.09 9.61 9.85 9.89 9.83 8.96 7.54 9.24 8.82 9.51 6.32 9.27 5.18 9.55 8.63 9.83 7.76 9.59 8.59 9.86 10.04 9.17 6.6 9.21 6.82 9.49 8.43 9.25 6.3 9.52 8.32 9.8 10.84 9.56 11.78 9.55 10.32 9.52 11.98 9.14 12.38 9.41 11.8 9.73 12.24 9.39 10.69 9.38 12.33 9.94 9.9 9.64 11.25 8.43 10.49 8.71 9.45 8.74 9.96 9.02 11.36 9.06 11.21 9.0 11.02 8.71 9.4 8.74 10.34 9.02 11.9 8.37 12.24 8.64 8.73 8.68 10.53 8.96 9.35 8.71 9.37 8.99 11.52 8.34 9.66 8.65 11.45 8.97 12.43 8.95 11.22 8.61 9.75 8.88 11.17 9.16 10.05 8.92 9.83 9.2 12.36 9.47 10.43 8.54 9.7 8.82 7.73 8.86 8.45 9.13 10.5 8.89 9.35 9.17 12.32 8.76 8.77 8.79 9.33 8.83 8.97 9.11 10.16 8.58 7.91 8.85 9.1 9.13 10.02 8.89 9.3 9.17 8.44 8.51 6.84 8.79 9.12 9.07 6.66 8.83 6.81 9.1 9.71 9.14 9.89 8.45 9.46 8.73 9.45 8.49 6.83 8.76 8.05 9.04 9.41 8.8 8.51 9.08 11.68 9.07 11.94 8.7 11.47 8.73 11.83 9.01 11.46 9.31 11.69 8.69 9.44 8.97 10.24 9.28 9.95 8.94 9.7 9.22 12.25 9.5 9.8 8.97 10.86 9.24 9.96 8.63 8.74 8.9 7.76 8.94 8.0 9.22 9.91 9.25 11.05 8.56 10.74 8.84 9.99 8.6 7.67 8.88 8.87 9.16 9.33 8.91 8.52 9.19 10.92 9.47 11.41 8.85 11.84 9.13 11.39 8.99 12.23 8.46 10.76 8.43 % patch dots follow 4.3 9.3 5 9.4 6.3 8.8 6.5 9.7 5.8 9.7 6 9.2 6 9.6 7.2 8.8 7.2 9 7.2 9.7 7.3 9.9 8 8.6 9 8.5 10.5 9.6 10.7 10 11 10.3 ] store % Actual dots plotted = 334 + patches. % 100 100 10 setgrid % only standalone 1.15 dup scale 10 10 showgrid 0.4 0.8 0.8 setrgbcolor 1 setlinecap 1 setlinejoin line3 0 0 mt 10 u 10 r 10 d 10 l 0.25 0.25 0.25 setrgbcolor gsave 0 0 mt 0 10 rlineto 10 0 rlineto 0 -10 rlineto closepath clip gsave -3.2 -0.8 translate 0.87 dup scale 0 2 sdat length 2 sub {/cposn exch store sdat cposn 1 add get sdat cposn get 1 0 0 setrgbcolor 0.2 setgray 0.9 settint 0.40 setgray mt dot } for grestore grestore /cstretch 0 store /sstretch 0.015 store black /font1 /Helvetica-Bold 0.9 gonzofont font1 5 -1.3 (amplitude) cc gsave -0.8 5 translate 90 rotate 0 0 (distortion) cc grestore ypos snap3 restore /ypos exch def } def %%%%%% /figure2 { %figadvance has to go in figuretwoauto save /snap3 exch def -0.5 2.5 translate % reposition on page INTERACTS WITH FIGADVANCE 0 1 0 setrgbcolor % green grid /linestring 1000 string store /sdatproc { 0.0 0.7 0.1 setrgbcolor [ 0.4 7.33 0.38 6.36 -0.32 7.12 -0.04 7.33 -0.38 7.07 -0.07 7.26 -0.2 4.68 0.07 5.15 0.11 6.17 -0.27 4.26 0.01 6.32 -0.23 4.79 0.05 2.95 -0.29 6.05 -0.02 6.3 0.02 7.29 -0.09 7.37 -0.15 6.89 -0.12 6.19 0.16 5.06 -0.18 7.0 0.1 7.32 0.13 7.29 -0.71 7.44 -0.54 5.7 -0.26 7.38 -0.88 6.82 -0.6 4.84 -0.56 5.38 -0.29 5.67 -0.63 6.12 -0.49 7.26 -0.45 6.66 -0.17 7.01 -0.51 7.05 ] makedots 0.6 0.2 1.0 setrgbcolor [ 0.65 7.03 0.69 6.23 0.97 6.68 0.63 6.72 0.62 6.51 0.6 7.45 0.8 6.74 1.08 7.27 0.74 6.98 0.74 6.97 1.05 7.33 0.71 6.69 0.38 7.38 0.04 6.4 0.32 6.16 0.36 5.3 0.63 7.17 0.02 7.15 0.3 5.41 0.01 6.4 0.29 5.16 0.33 7.08 -0.05 7.19 0.23 7.39 0.26 5.94 0.47 5.9 0.13 7.29 0.41 5.73 0.44 7.34 0.13 6.76 0.4 5.73 0.44 6.52 0.72 7.49 0.07 7.3 0.1 7.49 0.38 4.95 0.66 7.44 ] makedots 0.6 0.4 0.0 setrgbcolor [ 1.63 6.68 0.93 5.94 1.21 6.41 1.25 7.01 0.87 6.21 0.91 6.32 1.19 5.19 1.05 5.6 1.33 6.22 1.36 5.73 0.99 5.61 1.26 7.47 1.02 4.35 1.3 2.75 1.33 6.82 0.96 6.06 1.24 6.51 1.27 6.22 1.41 6.99 0.6 6.37 0.54 6.21 0.58 6.38 0.85 6.71 0.72 6.05 0.38 7.2 0.65 5.61 0.69 4.44 0.97 5.07 0.63 5.68 0.9 7.44 0.94 7.24 ]makedots 0.0 0.6 0.5 setrgbcolor [ 1.94 5.77 2.22 6.47 1.88 6.61 2.19 7.1 1.88 6.99 1.91 7.36 2.19 7.2 1.85 6.98 1.5 6.84 1.44 7.42 1.3 6.69 1.57 6.66 1.33 7.31 1.61 4.16 1.89 6.58 1.27 6.45 1.55 4.73 1.58 6.33 1.86 6.88 1.27 6.28 1.54 5.29 1.58 5.83 1.86 7.0 1.2 7.36 1.24 7.32 1.52 4.83 1.79 7.44 1.72 6.96 1.66 7.1 1.7 7.36 1.69 7.14 1.63 6.09 0.94 7.5 1.19 7.27 ]makedots 1.0 0.0 0.9 setrgbcolor [ 2.77 7.47 2.19 5.69 2.47 6.39 2.5 5.62 2.13 6.29 2.16 4.87 2.44 3.68 2.47 6.99 2.1 6.96 2.38 7.43 2.41 6.96 2.3 7.28 2.61 6.33 2.27 5.22 2.55 4.32 2.59 6.34 2.21 6.99 2.53 6.05 1.86 5.69 2.17 7.05 1.52 7.32 1.79 5.86 1.83 4.38 2.11 5.13 1.77 6.23 1.97 7.29 1.91 7.2 1.94 4.78 2.22 5.62 2.26 7.34 1.88 6.26 1.92 7.41 2.19 6.71 ]makedots 0.3 0.5 0.0 setrgbcolor [ 3.08 6.71 3.36 7.4 3.2 6.33 3.47 7.16 3.13 7.36 3.17 7.34 3.45 6.83 3.17 7.46 3.44 7.49 3.1 7.36 2.44 7.31 2.71 7.35 2.75 4.87 3.03 7.12 2.41 7.35 2.69 5.99 2.72 7.09 2.68 6.84 2.72 7.03 2.66 6.77 2.59 7.22 2.86 4.34 3.14 6.88 3.18 7.38 2.52 6.65 2.8 5.26 2.84 5.32 3.11 6.18 2.52 7.09 2.8 6.44 2.83 5.51 3.11 6.94 2.49 7.14 2.77 4.86 2.53 7.25 2.19 7.45 2.44 6.93 ]makedots 0.0 0.5 1.0 setrgbcolor [ 3.64 7.35 3.3 7.22 3.58 6.56 3.76 7.24 3.44 6.46 3.72 7.27 3.48 7.12 3.75 5.15 3.38 7.25 3.41 4.44 3.69 3.51 3.73 5.53 4.01 7.05 3.35 6.95 3.67 5.83 3.53 6.9 3.8 6.46 3.84 6.79 3.78 6.81 3.0 7.19 2.97 6.5 3.25 7.11 3.11 6.04 3.15 6.8 3.42 6.27 3.05 6.49 3.08 3.17 3.36 4.46 3.4 6.24 3.02 5.79 3.06 6.77 3.33 6.1 3.2 6.17 3.47 7.04 3.51 7.39 3.45 7.05 2.75 7.44 ]makedots 1.0 0.1 0.3 setrgbcolor [ 4.34 6.3 4.61 7.2 4.65 7.42 4.59 7.15 4.7 7.4 3.89 7.33 3.73 6.72 4.0 3.61 4.28 6.52 4.04 7.22 4.32 6.81 3.66 6.66 3.94 5.38 3.98 5.13 4.25 6.11 3.66 7.44 3.94 6.92 3.97 5.78 4.25 7.24 3.91 5.82 4.12 5.7 4.43 7.33 4.05 6.71 4.09 5.35 4.37 6.42 4.09 6.24 4.02 6.0 4.06 7.23 4.34 7.37 3.67 6.43 3.33 7.09 3.61 7.22 3.65 7.09 3.58 7.28 3.76 7.26 3.69 7.43 ]makedots 0.0 0.7 0.0 setrgbcolor [ 4.58 7.35 4.89 6.06 4.56 6.0 4.83 5.44 4.87 6.67 4.81 7.43 5.01 7.15 4.73 7.42 5.01 5.81 4.67 5.29 4.95 4.82 4.98 4.94 5.26 6.8 4.64 7.41 4.92 5.63 4.25 6.6 4.29 7.06 4.56 6.64 4.22 4.58 4.5 5.64 4.54 6.9 4.16 7.17 4.47 7.29 4.36 7.28 4.4 6.74 4.68 6.43 4.34 3.63 4.61 5.07 4.37 7.09 4.65 5.26 4.27 6.35 4.31 5.98 4.59 5.46 4.0 7.29 ]makedots 0.4 0.3 1.0 setrgbcolor [ 5.59 6.81 5.9 6.88 5.56 7.13 5.84 6.87 5.14 5.55 5.08 7.33 5.12 6.93 5.32 7.37 4.98 6.64 5.26 3.82 5.53 6.82 5.29 6.04 5.57 5.79 4.92 6.85 5.19 5.84 5.23 3.83 5.51 5.32 5.23 5.46 5.5 7.18 5.16 5.83 5.2 6.85 5.48 7.09 5.34 6.4 5.62 7.5 4.81 7.33 4.65 7.07 4.93 6.14 4.59 6.91 4.86 7.21 4.9 5.77 4.9 7.0 4.56 7.36 4.83 6.93 ]makedots 0.7 0.3 0.0 setrgbcolor [ 6.15 6.63 5.87 7.2 6.15 5.63 5.81 5.65 6.09 5.32 6.12 5.13 6.4 7.02 6.06 6.39 6.26 7.28 5.92 6.94 6.2 6.79 6.23 5.51 6.51 7.41 6.17 6.43 5.36 7.43 5.51 7.44 5.82 6.75 5.5 6.91 5.54 6.08 5.82 5.82 5.48 3.44 5.75 5.04 5.51 6.75 5.79 4.91 5.41 6.78 5.45 6.19 5.73 5.79 5.93 7.45 5.59 5.32 5.87 6.59 5.63 6.95 5.9 5.34 5.56 6.13 5.84 5.86 5.14 6.82 ]makedots 0.0 0.6 0.4 setrgbcolor [ 7.04 7.5 7.15 7.2 7.09 7.43 6.46 7.26 6.12 6.97 6.4 4.49 6.67 7.28 6.43 6.23 6.71 6.08 6.33 6.83 6.37 4.92 6.65 6.23 6.37 6.64 6.3 7.44 6.23 7.41 6.51 5.31 6.55 5.76 6.82 5.74 6.45 7.15 6.48 3.87 6.76 5.59 6.8 6.77 6.48 6.19 6.42 6.79 6.45 6.5 6.73 6.95 5.79 7.0 6.07 6.14 5.73 7.34 6.04 6.11 5.9 7.47 6.18 6.79 6.21 7.19 6.15 5.33 6.15 7.25 6.09 7.43 6.12 7.21 ]makedots 0.9 0.1 1.0 setrgbcolor [ 7.29 7.27 7.26 7.18 7.4 6.53 7.4 6.23 7.06 6.33 7.34 6.24 7.1 7.48 7.37 4.5 7.65 6.77 7.31 6.19 7.49 6.95 6.68 7.19 6.96 7.05 6.62 5.82 6.89 6.95 6.93 6.63 6.8 6.9 7.07 6.24 6.79 6.03 7.07 6.0 6.73 3.87 7.01 5.57 6.77 5.63 7.04 3.61 7.32 7.46 6.67 7.25 6.7 5.31 6.98 5.09 7.02 7.24 6.84 7.45 7.16 6.44 6.82 7.17 7.09 7.13 6.4 6.67 6.37 7.3 ]makedots 0.4 0.5 0.0 setrgbcolor [ 8.3 6.97 7.54 6.99 7.71 7.12 7.37 6.89 7.65 4.65 7.69 4.84 7.96 4.92 7.59 7.18 7.62 3.54 7.9 5.44 7.94 6.42 7.62 6.36 7.56 7.43 7.59 6.95 7.87 7.45 7.76 7.33 7.8 6.47 8.08 6.65 7.74 5.22 8.01 6.78 8.05 6.63 7.71 7.03 7.04 6.54 7.32 5.84 7.35 6.05 7.63 7.38 6.98 7.16 7.02 6.9 7.29 4.53 7.57 7.39 7.29 7.02 7.26 7.27 7.47 7.44 7.41 5.97 7.37 7.37 ]makedots 0.0 0.5 0.8 setrgbcolor [ 8.55 6.85 8.54 6.92 8.2 7.43 8.48 7.42 8.51 5.78 8.66 7.29 8.63 5.12 8.9 7.37 8.56 6.9 7.94 6.75 8.21 6.14 7.93 6.24 8.21 6.29 7.87 4.98 8.15 6.45 7.91 6.19 8.18 4.55 7.84 6.49 8.12 6.39 8.05 7.12 8.33 6.67 8.3 7.32 8.05 6.91 8.32 7.08 8.36 7.49 7.98 5.47 8.26 6.96 8.02 5.46 8.3 3.73 7.96 5.48 8.23 5.51 8.27 6.33 7.54 6.99 7.65 7.38 7.69 7.42 7.96 7.49 7.62 7.08 ]makedots 1.0 0.1 0.5 setrgbcolor [ 9.55 7.28 8.79 6.18 8.83 6.08 9.1 6.22 8.76 5.77 9.04 7.15 8.9 5.93 8.94 4.5 9.22 4.86 8.6 7.37 8.88 3.59 9.15 5.69 8.91 6.5 9.19 5.24 8.85 7.26 9.13 7.36 8.87 6.98 8.85 6.6 9.12 7.3 8.99 7.17 9.3 7.34 8.18 7.28 8.46 6.72 8.5 6.68 8.43 5.98 8.29 6.98 8.57 6.52 8.61 5.32 8.89 6.97 8.27 6.34 8.55 3.98 8.82 7.23 8.58 6.78 8.86 6.94 8.52 7.17 8.54 7.26 8.52 6.56 8.66 7.4 ]makedots 0.2 0.6 0.0 setrgbcolor [ 9.8 6.75 9.8 7.41 9.77 5.22 10.05 7.5 9.71 7.47 9.88 6.62 9.32 7.17 9.53 7.16 9.19 6.04 9.47 5.59 9.5 6.83 9.44 6.68 9.19 6.2 9.46 6.45 9.5 6.67 9.12 5.26 9.4 6.86 9.16 4.95 9.44 3.11 9.71 7.46 9.1 5.65 9.37 5.75 9.41 6.32 9.27 6.32 9.55 5.18 9.21 6.6 9.49 6.82 9.52 6.3 8.79 6.84 8.83 6.66 9.1 6.81 8.76 6.83 ]makedots 0.3 0.3 1.0 setrgbcolor [ 10.04 6.29 10.08 4.67 10.36 5.1 10.02 4.64 10.29 6.46 10.05 6.92 10.33 5.84 10.19 5.38 10.47 5.91 10.51 7.32 10.13 5.0 10.41 6.84 10.17 6.14 10.44 5.06 10.1 7.19 10.38 7.45 10.1 7.11 9.44 6.85 9.71 6.44 9.75 4.93 10.03 6.74 9.41 6.52 9.69 4.36 9.96 7.5 9.72 6.79 10.0 7.02 9.66 7.4 9.86 5.66 10.14 7.41 9.52 6.69 9.8 4.79 9.83 6.04 10.11 6.42 9.77 6.74 9.77 6.73 ]makedots 1.0 0.2 0.0 setrgbcolor [ 10.91 7.16 11.05 7.48 11.09 7.36 11.02 5.75 10.99 7.38 10.67 7.33 10.33 6.74 10.61 6.39 10.64 7.3 10.33 7.2 10.6 7.48 10.64 7.47 10.26 6.95 10.3 6.49 10.58 5.31 10.78 7.3 10.44 6.28 10.72 6.05 10.76 5.96 10.69 6.07 10.44 7.06 10.72 7.46 10.75 6.48 10.38 6.52 10.41 4.77 10.69 3.24 10.73 6.4 11.0 7.45 10.35 5.79 10.63 6.1 10.66 5.26 10.8 7.17 10.78 7.14 10.08 6.13 10.36 6.5 10.02 6.58 10.33 7.42 ]makedots 0.0 0.6 0.3 setrgbcolor [ 11.22 6.79 11.5 7.15 11.16 7.28 11.3 7.27 11.33 4.31 11.61 5.03 11.65 6.41 11.27 4.66 11.55 6.65 11.31 5.62 11.58 4.51 11.24 7.26 11.24 7.46 11.45 7.04 11.38 6.98 11.42 6.71 11.7 5.95 10.89 6.57 10.83 6.71 10.69 7.26 10.97 7.05 10.73 7.28 11.0 4.02 11.28 6.31 10.66 5.93 10.94 3.77 11.22 7.33 10.98 4.98 11.25 5.52 10.91 6.4 10.91 6.71 11.11 6.91 11.05 6.47 11.09 6.23 11.37 6.8 11.03 7.15 ]makedots 0.7 0.1 1.0 setrgbcolor [ 12.23 7.39 12.16 6.71 12.28 7.1 11.92 6.63 11.58 6.05 11.86 5.86 11.9 5.52 12.17 7.41 11.83 6.25 11.58 7.16 11.89 6.42 11.52 7.14 11.55 5.33 11.83 4.13 11.87 6.67 11.49 6.8 11.77 7.12 11.8 6.21 11.7 7.37 11.97 7.33 12.01 6.03 11.95 6.4 12.01 7.16 11.67 5.73 11.94 4.82 11.98 6.09 12.26 7.36 11.6 6.84 11.88 7.28 11.64 7.4 11.92 5.21 11.25 7.01 11.22 6.15 11.5 6.58 11.16 7.12 11.33 6.54 11.61 7.07 11.27 7.2 11.58 7.05 ]makedots 0.5 0.4 0.0 setrgbcolor [ 12.47 5.57 12.75 6.2 12.79 7.17 12.41 6.42 12.45 6.95 12.72 6.15 12.59 5.22 12.86 6.04 12.9 5.99 12.52 5.79 12.56 5.2 12.84 4.29 12.5 7.17 12.14 4.79 12.42 6.88 11.8 6.96 12.08 5.31 12.12 6.0 12.39 6.51 11.98 7.36 12.26 4.46 12.53 6.78 12.29 7.33 12.57 6.79 11.92 6.3 12.19 4.6 12.23 3.93 12.51 4.85 12.17 5.9 12.16 6.86 12.34 7.28 ]makedots 0.0 0.6 0.6 setrgbcolor [ 13.48 6.98 13.42 7.11 13.0 7.4 13.04 6.94 12.97 6.79 13.18 6.79 12.84 6.28 13.11 6.29 12.87 7.27 13.15 4.42 13.43 6.8 13.15 6.22 12.81 5.16 13.08 4.22 13.12 5.37 13.4 6.84 13.26 6.99 12.92 7.39 13.2 6.9 13.23 6.71 12.5 6.86 12.82 6.67 12.47 5.58 12.75 6.26 12.79 7.14 ]makedots 1.0 0.0 0.7 setrgbcolor [ 13.73 5.27 14.01 6.14 14.04 5.86 13.67 6.41 13.7 5.65 13.98 4.9 13.84 6.91 14.15 6.51 13.81 5.86 14.09 5.3 14.13 7.43 13.28 7.23 13.12 6.95 13.4 3.86 13.67 6.45 13.43 6.76 13.71 6.24 13.06 6.41 13.33 4.82 13.37 3.84 13.65 4.86 13.51 5.96 13.54 7.26 13.82 6.91 13.17 7.47 13.45 6.31 13.48 4.22 13.76 5.33 13.06 7.49 13.04 7.19 13.15 7.44 ]makedots 0.3 0.5 0.0 setrgbcolor [ 14.73 7.37 14.32 6.89 13.98 6.88 14.25 6.93 14.29 5.03 14.57 7.26 14.23 6.65 14.29 6.97 13.95 6.55 14.22 5.9 14.26 6.56 14.2 6.9 14.09 7.35 14.13 7.16 14.4 4.51 14.68 7.03 14.06 7.1 14.34 5.93 14.38 6.55 14.65 7.37 14.4 6.93 14.06 6.05 14.34 5.5 14.37 5.0 14.65 6.75 14.03 7.05 14.31 5.06 13.65 7.02 13.96 6.69 13.62 6.48 13.89 7.12 13.79 7.39 14.07 6.36 13.73 6.99 14.01 7.09 13.73 6.03 14.01 6.84 14.04 6.5 13.67 7.45 13.7 6.72 13.98 6.15 ]makedots 0.2 0.4 1.0 setrgbcolor [ 14.87 7.12 15.18 7.42 15.12 7.21 14.98 6.03 15.26 6.97 15.02 7.07 15.29 5.4 14.92 7.25 14.95 5.24 15.23 4.68 15.27 6.81 15.07 7.28 15.34 7.03 14.54 5.67 14.85 7.36 14.47 6.9 14.51 6.04 14.79 6.79 14.65 7.5 14.37 7.04 14.65 4.32 14.93 6.9 14.69 5.74 14.96 5.37 14.31 6.73 14.59 5.47 14.35 7.36 14.62 2.32 14.9 4.09 14.94 6.47 14.56 5.92 14.6 7.38 14.87 6.93 14.74 5.65 15.01 6.7 14.32 7.41 14.29 6.11 ]makedots 1.0 0.1 0.2 setrgbcolor [ 15.88 7.35 15.43 7.31 15.57 7.05 15.61 7.05 15.23 7.08 15.51 7.28 15.27 6.68 15.54 3.8 15.82 6.64 15.86 7.41 15.2 7.14 15.48 6.02 15.52 6.44 15.79 7.31 15.54 6.79 15.2 6.4 15.48 5.95 15.51 5.24 15.79 6.98 15.45 5.93 15.66 5.73 15.59 7.11 15.63 6.5 15.91 7.49 15.59 7.37 15.63 5.74 15.9 7.48 15.56 6.04 14.9 6.86 14.94 6.5 15.21 5.37 14.87 6.61 15.15 6.76 15.19 7.19 14.87 5.94 15.15 6.81 15.18 6.26 14.84 6.97 15.12 6.48 15.33 6.93 15.3 7.3 14.98 7.29 15.3 6.74 14.96 6.99 15.23 6.64 ]makedots 0.0 0.7 0.1 setrgbcolor [ 16.12 6.88 16.44 6.17 16.1 6.55 16.37 6.17 16.27 7.35 16.55 5.97 16.21 5.87 16.49 5.61 16.52 6.31 15.51 7.37 15.79 4.91 16.07 7.32 15.83 5.97 16.1 5.68 15.73 6.51 15.76 3.92 16.04 5.22 16.08 7.06 15.9 5.84 15.94 5.68 16.22 5.53 15.84 6.94 15.6 7.34 15.88 2.78 16.15 4.63 15.91 7.06 16.19 5.52 15.46 7.4 15.43 6.46 15.54 5.9 ]makedots 0.5 0.2 1.0 setrgbcolor [ 16.69 5.54 16.66 7.21 16.86 6.88 16.52 6.55 16.8 3.9 17.08 6.86 16.83 6.56 17.11 6.48 16.46 7.23 16.73 6.32 16.77 5.41 17.05 6.6 16.79 7.44 16.45 7.12 16.73 6.89 16.77 4.86 17.05 6.87 16.43 7.42 16.7 5.86 16.74 7.37 16.88 7.29 16.88 7.24 16.08 7.23 16.35 6.28 16.19 5.98 16.47 4.97 16.5 7.3 16.13 6.35 16.4 6.67 16.44 5.88 16.12 6.35 16.4 7.33 16.16 7.07 16.44 5.53 16.1 6.36 16.37 6.03 ]makedots 0.6 0.4 0.0 setrgbcolor [ 17.38 7.47 17.41 7.11 17.69 5.74 17.35 6.19 17.63 5.98 17.66 6.46 17.8 7.33 17.46 7.28 17.74 7.23 17.78 6.69 16.93 7.18 16.9 6.89 17.11 7.45 17.05 7.22 17.36 7.11 16.77 7.45 17.04 5.26 17.08 4.82 17.36 4.71 16.98 6.99 16.74 7.17 17.02 2.45 17.29 4.49 17.05 6.74 17.33 5.17 17.19 6.57 17.47 6.63 17.13 4.65 17.41 6.13 17.17 6.9 17.44 5.55 16.71 7.31 16.75 7.05 16.69 5.24 16.8 6.64 ]makedots 0.0 0.6 0.5 setrgbcolor [ 18.0 6.69 17.66 6.85 17.94 4.45 18.22 7.21 17.97 6.71 18.25 6.68 17.88 7.17 17.91 6.21 18.19 7.3 17.91 6.03 17.85 7.36 17.77 7.27 18.05 5.25 18.09 6.27 18.36 6.39 17.99 7.41 18.02 5.35 18.3 6.72 18.02 5.6 17.96 6.7 17.99 7.0 17.67 7.31 17.33 5.84 17.61 4.86 17.64 7.04 17.27 6.77 17.54 7.1 17.58 6.18 17.26 7.03 17.58 6.15 17.24 7.37 17.51 7.12 17.44 6.4 17.72 5.68 17.76 6.69 17.38 6.95 17.66 7.4 17.42 7.44 17.69 5.39 17.41 7.11 17.69 5.81 17.35 6.64 17.63 6.51 17.66 6.86 ]makedots 1.0 0.0 0.9 setrgbcolor [ 18.83 7.22 18.67 7.39 18.94 6.27 18.6 6.72 18.88 6.71 18.92 5.92 18.19 6.58 18.22 6.02 18.5 5.98 18.16 5.12 18.44 6.39 18.47 6.71 18.34 7.18 18.61 6.59 18.3 6.56 18.33 4.74 18.61 4.89 18.65 7.25 17.99 7.15 18.27 2.87 18.55 4.97 18.31 5.61 18.58 3.93 18.38 6.85 18.7 6.52 17.83 6.49 18.0 6.65 17.66 7.16 17.94 5.0 17.98 7.0 18.25 7.03 ]makedots 0.4 0.5 0.0 setrgbcolor [ 19.08 6.8 19.26 6.53 18.92 6.73 19.19 4.53 19.47 7.41 19.23 5.46 19.51 5.64 19.13 7.4 19.17 5.12 19.44 6.58 19.16 5.7 19.1 7.29 19.14 7.4 19.31 7.17 19.34 6.87 19.62 7.15 19.28 6.27 19.28 7.12 19.25 7.42 18.47 7.38 18.75 6.66 18.92 6.82 18.58 5.26 18.86 4.41 18.9 5.43 19.17 6.93 18.52 6.49 18.8 7.0 18.56 6.84 18.83 4.59 19.11 7.39 18.52 7.37 18.55 6.74 18.83 5.41 18.49 6.79 18.77 6.71 18.8 6.88 18.97 7.17 19.01 6.92 18.95 5.92 18.94 6.96 18.92 6.97 ]makedots 0.0 0.5 1.0 setrgbcolor [ 20.08 6.85 20.06 6.88 20.17 6.32 19.5 7.21 19.48 7.02 19.76 6.44 19.44 6.84 19.48 4.88 19.75 5.08 19.79 7.2 19.41 4.09 19.69 5.8 19.45 6.13 19.73 4.7 19.59 7.32 19.87 6.91 19.59 5.78 19.87 6.1 19.9 7.06 19.52 4.68 19.8 6.37 19.56 5.41 19.84 3.96 19.14 6.31 18.8 7.32 19.08 5.28 19.12 7.02 19.39 7.1 19.26 7.1 19.19 5.83 19.23 6.48 19.51 6.71 ]makedots 1.0 0.1 0.4 setrgbcolor [ 20.4 7.09 20.33 5.94 20.37 6.49 20.65 6.68 20.31 6.77 20.3 7.44 20.51 7.22 20.17 7.42 20.45 5.71 20.48 5.11 20.76 5.53 20.42 5.04 20.7 6.68 20.73 7.05 20.42 6.33 20.39 7.02 20.07 6.95 19.72 6.03 20.0 5.34 20.04 6.0 20.32 7.42 19.97 5.91 19.97 6.82 20.18 7.16 19.84 5.73 20.11 5.19 20.15 4.59 20.43 6.48 19.77 7.07 19.81 6.23 20.09 3.94 20.36 7.16 20.12 7.31 19.81 6.78 20.09 5.68 19.74 7.03 20.02 7.11 20.06 6.11 20.2 7.24 ]makedots 0.1 0.7 0.0 setrgbcolor [ 21.34 7.29 21.31 6.37 21.42 7.49 20.62 6.84 20.89 7.02 20.55 6.85 20.87 7.1 20.76 7.45 21.07 6.9 20.73 6.31 21.01 5.86 20.73 4.81 21.01 5.23 21.04 6.13 20.67 4.33 20.94 6.15 20.7 4.87 20.98 3.28 20.64 6.17 20.92 6.31 20.84 7.47 20.78 6.85 20.81 6.2 21.09 5.23 20.75 6.95 21.03 7.2 21.06 7.42 20.22 7.24 20.4 7.0 20.4 5.86 20.67 7.43 20.06 6.97 20.33 5.02 20.37 5.56 20.65 5.86 20.31 6.35 20.45 7.37 20.48 6.83 20.76 7.21 20.42 7.18 ] makedots } store % Total count = 1282. /makedots {/curmat exch store 0 2 curmat length 2 sub {/cposn exch store curmat cposn get curmat cposn 1 add get mt dot } for } store % 100 100 10 setgrid % only when not standalone 1.15 dup scale 0.92 setgray 1 setlinewidth 0 setlinecap 0.5 0 mt 7 u 19.5 0 mt 7 u 2 setlinewidth 10 0 mt 7 u 20 7 showgrid black line1 10 -0.3 mt 7.8 u gsave 0 0 mt 7.5 pu 20 pr 7.5 pd closepath clip sdatproc grestore % get off clip /cstretch 0 store /sstretch 0.015 store /font1 /StoneSans-Bold 0.75 gonzofont font1 black line1 0 7.5 mt 20 r 0 -0.3 mt 7.8 u 20 -0.3 mt 7.8 u -0.3 0 mt 20.6 r 0 2.5 mt 0.3 l 0 5 mt 0.3 l 0 7.5 mt 0.3 l /kern 0.1 store 0.2 0.2 0.2 setrgbcolor 0 -1.5 (0.52) cc 10 -1.5 (0.53) cc 20 -1.5 (0.54) cc 10 -2.5 (amplitude) cc -1 0 0.2 sub(0.00|j%) cr -1 2.5 0.2 sub (0.05|j%) cr -1 5 0.2 sub (0.10|j%) cr -1 7.5 0.2 sub (0.15|j%) cr gsave -4.4 3.75 translate 90 rotate 0 0 (distortion 2-22) cc grestore % end ypos snap3 restore /ypos exch def } def %%%%%%% core defs for magsin plots /coredefs { /shakendelta28 [ [ [868 0 0 1730 0 0 0 868] 0.000000 0.0000000 3472 ] [ [860 13 2 1722 0 10 6 859] 1.510760 0.0093493 3472 ] [ [850 29 5 1701 6 22 8 851] 0.978672 0.0210324 3472 ] [ [845 43 7 1683 7 33 14 840] 0.477679 0.0312886 3472 ] [ [837 56 9 1668 7 43 20 832] 0.318167 0.0406482 3472 ] [ [830 68 11 1653 10 52 23 825] 0.337353 0.0493669 3472 ] [ [821 85 14 1631 11 65 30 815] 0.203131 0.0617085 3472 ] [ [815 95 16 1619 13 73 33 808] 0.259957 0.0692016 3472 ] [ [807 110 18 1601 14 84 39 799] 0.229666 0.0798052 3472 ] [ [800 122 20 1587 16 93 43 791] 0.271299 0.0885358 3472 ] [ [791 138 23 1567 18 106 49 780] 0.172600 0.1005590 3472 ] [ [784 151 25 1551 19 116 54 772] 0.1339800 0.109939 3472 ] [ [777 163 27 1536 21 125 58 765] 0.1192960 0.118677 3472 ] [ [768 180 30 1515 22 138 65 754] 0.1874040 0.131049 3472 ] [ [761 193 32 1499 24 148 70 745] 0.1343130 0.140698 3472 ] [ [754 205 34 1484 26 157 74 738] 0.1291950 0.149444 3472 ] [ [747 218 36 1468 26 167 80 730] 0.1061010 0.158846 3472 ] [ [738 234 39 1448 28 179 86 720] 0.0965049 0.170589 3472 ] [ [731 246 41 1434 29 188 91 712] 0.0914561 0.179351 3472 ] [ [723 260 43 1417 31 199 96 703] 0.1290420 0.189653 3472 ] [ [714 276 46 1397 32 211 103 693] 0.0546426 0.201417 3472 ] [ [707 289 48 1381 33 221 108 685] 0.1085760 0.210828 3472 ] [ [701 300 50 1367 35 229 112 678] 0.1002610 0.218951 3472 ] [ [691 316 53 1348 36 241 119 668] 0.1207730 0.230727 3472 ] [ [684 330 55 1330 37 252 125 659] 0.1038410 0.241057 3472 ] [ [677 342 57 1316 38 261 130 651] 0.0973585 0.249840 3472 ] [ [670 354 60 1300 40 270 135 643] 0.1141750 0.259094 3472 ] [ [663 367 62 1284 40 280 141 635] 0.0808775 0.268537 3472 ] [ [653 384 65 1263 42 293 148 624] 0.0519740 0.281232 3472 ] [ [647 395 67 1249 43 301 153 617] 0.0641827 0.289386 3472 ] [ [638 411 70 1229 44 313 160 607] 0.0942731 0.301193 3472 ] [ [630 424 72 1214 45 323 166 598] 0.0954356 0.310907 3472 ] [ [624 435 74 1200 46 331 171 591] 0.0730116 0.319070 3472 ] [ [615 451 77 1180 47 343 178 581] 0.0677774 0.330889 3472 ] [ [608 463 79 1165 48 352 183 574] 0.0797174 0.339699 3472 ] [ [600 477 82 1147 49 363 190 564] 0.0727672 0.350554 3472 ] [ [592 491 84 1130 50 373 196 556] 0.0859002 0.360616 3472 ] [ [585 503 87 1114 51 382 202 548] 0.0895733 0.369923 3472 ] [ [578 516 89 1098 51 392 209 539] 0.0823565 0.379679 3472 ] [ [569 531 92 1079 53 403 216 529] 0.0758395 0.391137 3472 ] [ [562 543 94 1064 54 412 221 522] 0.0916116 0.399965 3472 ] [ [553 558 97 1046 54 423 229 512] 0.0716472 0.411197 3472 ] [ [547 569 99 1032 55 431 234 505] 0.0527390 0.419389 3472 ] [ [538 584 102 1013 56 442 242 495] 0.0744991 0.430883 3472 ] [ [530 598 105 995 56 453 249 486] 0.0643956 0.441523 3472 ] [ [523 610 107 980 57 462 255 478] 0.0651337 0.450642 3472 ] [ [515 624 110 962 58 472 262 469] 0.0500311 0.461231 3472 ] [ [508 636 112 947 59 481 268 461] 0.0682797 0.470357 3472 ] [ [501 648 115 931 59 490 275 453] 0.0390659 0.479727 3472 ] [ [493 661 118 914 60 500 282 444] 0.0464662 0.491163 3472 ] [ [485 675 120 897 61 510 289 435] 0.0701265 0.500383 3472 ] [ [478 687 123 881 61 519 296 427] 0.0436721 0.509765 3472 ] [ [470 700 126 864 62 529 303 418] 0.0589122 0.520046 3472 ] [ [463 712 129 848 62 538 310 410] 0.0621049 0.529436 3472 ] [ [454 727 132 829 63 549 318 400] 0.0655310 0.540979 3472 ] [ [447 739 134 814 64 557 324 393] 0.0659652 0.549818 3472 ] [ [440 751 137 797 64 567 332 384] 0.0608129 0.559810 3472 ] [ [432 764 140 780 65 577 339 375] 0.0552627 0.570111 3472 ] [ [424 777 143 764 65 586 346 367] 0.0621947 0.579854 3472 ] [ [417 789 145 748 66 595 353 359] 0.0497526 0.589296 3472 ] [ [409 802 149 730 66 605 361 350] 0.0498109 0.599860 3472 ] [ [401 815 152 713 66 615 369 341] 0.0454799 0.610207 3472 ] [ [393 828 155 696 67 624 377 332] 0.0516502 0.620493 3472 ] [ [385 841 158 679 67 634 385 323] 0.0588497 0.630849 3472 ] [ [379 851 160 665 68 642 391 316] 0.0342060 0.639051 3472 ] [ [371 864 164 647 68 652 399 307] 0.0456603 0.649639 3472 ] [ [363 877 167 630 68 662 407 298] 0.0522574 0.660009 3472 ] [ [355 890 170 612 69 672 415 289] 0.0426991 0.670628 3472 ] [ [348 901 173 597 69 680 423 281] 0.0480973 0.679712 3472 ] [ [340 914 176 579 70 690 431 272] 0.0477716 0.690340 3472 ] [ [333 925 179 564 70 699 438 264] 0.0308037 0.699467 3472 ] [ [324 939 183 545 70 710 447 254] 0.0686215 0.711012 3472 ] [ [317 950 185 530 71 718 455 246] 0.0415750 0.720131 3472 ] [ [310 961 188 514 72 727 462 238] 0.0498212 0.729513 3472 ] [ [302 973 192 497 71 737 471 229] 0.0430787 0.739846 3472 ] [ [294 986 195 479 72 747 479 220] 0.0405623 0.750499 3472 ] [ [286 998 198 462 72 757 488 211] 0.0438831 0.760860 3472 ] [ [279 1009 201 446 73 766 495 203] 0.0497878 0.770257 3472 ] [ [271 1021 204 429 74 775 504 194] 0.0441616 0.780553 3472 ] [ [264 1031 207 414 74 784 512 186] 0.0457397 0.789662 3472 ] [ [256 1043 211 396 74 794 521 177] 0.0325654 0.800267 3472 ] [ [249 1054 213 381 75 803 528 169] 0.0440074 0.809451 3472 ] [ [241 1066 216 363 76 813 537 160] 0.0403837 0.820078 3472 ] [ [233 1077 220 346 76 823 546 151] 0.0256970 0.830362 3472 ] [ [225 1089 223 328 77 833 555 142] 0.0332166 0.840997 3472 ] [ [218 1099 225 313 78 842 563 134] 0.0337785 0.850140 3472 ] [ [210 1110 228 296 79 852 572 125] 0.0360605 0.860449 3472 ] [ [203 1120 231 280 80 862 580 117] 0.0150460 0.869889 3472 ] [ [195 1131 233 262 82 872 589 108] 0.0360463 0.880467 3472 ] [ [187 1141 236 245 83 883 598 99] 0.0317396 0.890767 3472 ] [ [180 1151 237 230 85 892 606 91] 0.0190775 0.899933 3472 ] [ [172 1162 238 213 88 902 615 82] 0.0316686 0.910273 3472 ] [ [165 1171 239 197 91 912 623 74] 0.0263476 0.919661 3472 ] [ [157 1181 239 180 95 922 633 65] 0.0388174 0.929956 3472 ] [ [150 1190 238 164 100 932 641 57] 0.0323680 0.939357 3472 ] [ [142 1200 235 147 107 943 650 48] 0.0272150 0.949701 3472 ] [ [134 1209 230 130 116 955 659 39] 0.0318331 0.960034 3472 ] [ [126 1218 223 113 127 966 669 30] 0.0351219 0.970334 3472 ] [ [119 1226 210 97 144 977 677 22] 0.0379512 0.979745 3472 ] [ [111 1234 188 80 170 989 688 12] 0.0386641 0.990337 3472 ] [ [103 1242 151 63 211 1001 698 3] 0.0439439 1.000650 3472 ] ] def /aa mark shakendelta28 {0 get 0 get 2 mul} forall ] store % double a /bb mark shakendelta28 {0 get 1 get} forall ] store /cc mark shakendelta28 {0 get 2 get} forall ] store /dd mark shakendelta28 {0 get 3 get} forall ] store /ee mark shakendelta28 {0 get 4 get} forall ] store /ff mark shakendelta28 {0 get 5 get} forall ] store /gg mark shakendelta28 {0 get 6 get} forall ] store /hh mark shakendelta28 {0 get 7 get 2 mul } forall ] store % double h % aa == bb == cc == dd == ee == ff == gg == hh == /amplitude 53 store /delaypattern [ (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) ] store /portpattern [ <2B> <07> <2B><2B> <2B> <2B> pop <07> <2B><69> <69><2B><69> <2B><69><2B> <07> <2B><69> <69><45> <07> <45><69><45> <69><45><69> <69><45> pop <07> <45> <45> <45><45> <07> <45> <64> <07> <86><86> <86> <86> pop <07> <86> <86> <86><86> <07> <86> ] store % 100 100 10 setgrid % 30 60 showgrid /hscale 30 3472 12 mul div store /vscale 4 store /phasea {gsave translate /port 0 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub port sub get 48 sub /state exch store delaypattern posn get cvn load amplitude get /stall exch store currentpoint exch pop /nowat exch store nowat 0 eq state 0 ne and {0 vscale rlineto} if nowat 0 ne state 0 eq and {0 vscale neg rlineto} if stall hscale mul 0 rlineto } for stroke grestore} store %%%%%%%%% /phaseb {gsave translate /port 1 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub port sub get 48 sub /state exch store delaypattern posn get cvn load amplitude get /stall exch store currentpoint exch pop /nowat exch store nowat 0 eq state 0 ne and {0 vscale rlineto} if nowat 0 ne state 0 eq and {0 vscale neg rlineto} if stall hscale mul 0 rlineto } for stroke grestore} store %%%%%%%%% /phasec {gsave translate /port 2 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub port sub get 48 sub /state exch store delaypattern posn get cvn load amplitude get /stall exch store currentpoint exch pop /nowat exch store nowat 0 eq state 0 ne and {0 vscale rlineto} if nowat 0 ne state 0 eq and {0 vscale neg rlineto} if stall hscale mul 0 rlineto } for stroke grestore} store /halfwave {gsave translate /port 3 store line1 1 0 0 setrgbcolor 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub port sub get 48 sub cvi /state exch store delaypattern posn get cvn load amplitude get /stall exch store currentpoint exch pop cvi /nowat exch store % state == % nowat == % stall == nowat 0 eq state 0 ne and {0 vscale rlineto} if nowat 0 ne state 0 eq and {0 vscale neg rlineto} if stall hscale mul 0 rlineto % currentpoint == == % (\n) print flush } for stroke grestore} store %%%%%%%%%%%% /AminusC {gsave translate /Cport 2 store /Aport 0 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Cport sub get 48 sub cvi 2 div /Cstate exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Aport sub get 48 sub cvi 2 div /Astate exch store /nustate Astate Cstate sub store delaypattern posn get cvn load amplitude get /stall exch store currentpoint pop nustate vscale mul lineto stall hscale mul 0 rlineto % currentpoint == == % (\n) print flush } for stroke grestore} store %%%%%%%%%%% /BminusA {gsave translate /Bport 1 store /Aport 0 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Aport sub get 48 sub cvi 2 div /Astate exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Bport sub get 48 sub cvi 2 div /Bstate exch store /nustate Bstate Astate sub store delaypattern posn get cvn load amplitude get /stall exch store currentpoint pop nustate vscale mul lineto stall hscale mul 0 rlineto % currentpoint == == % (\n) print flush } for stroke grestore} store %%%%%%%%%%% /CminusB {gsave translate /Cport 2 store /Bport 1 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Bport sub get 48 sub cvi 2 div /Bstate exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Cport sub get 48 sub cvi 2 div /Cstate exch store /nustate Cstate Bstate sub store delaypattern posn get cvn load amplitude get /stall exch store currentpoint pop nustate vscale mul lineto stall hscale mul 0 rlineto } for stroke grestore} store } def %%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%% /figure3 {/figadvance 10 store save /snap3 exch def /linestring 1000 string store %%%%%%%%%%%%%%%%%%% electronics begin bestgray line1 coredefs -3.8 -1.2 translate % position on page % 30 12 showgrid /vscale 3 store 1 0 1 setrgbcolor 1 1 1 setrgbcolor % nasty bug dont know why dribbles down 0 10.3 phaseb 1 0 1 setrgbcolor 0 9 phasea 0 0 phaseb 0 4.5 phasec 30 0 mt 3 u % patch end black /font2 /Helvetica-Bold 1 gonzofont -1 1 (DC) cr % we have a cc conflict!!!! -1 5.5 (DB) cr -1 10 (DA) cr % halfwave % AminusC % BminusA % CminusB end ypos snap3 restore /ypos exch def } def %%%%%%%%%%%%%%%%%%%%%%% /figure4 {/figadvance 15 store save /snap3 exch def /linestring 1000 string store %%%%%%%%%%%%%%%%%%% electronics begin bestgray line1 coredefs -3 0.5 translate % position on page % 30 12 showgrid /vscale 4 store %0 9 phasea 1 0 0 setrgbcolor 30 0 mt 3 u % patch end %0 0 phaseb %0 4.5 phasec 1 0 1 setrgbcolor 0 9.2 2 add AminusC 0 0.2 BminusA 0 4.7 1 add CminusB black /font2 /Helvetica-Bold 1 gonzofont /overstrikeht 0.85 store -1 0 (DC - DA) cr % we have a cc conflict!!!! -1 4.5 1 add (DB - DC) cr -1 9 2 add (DA - DB) cr % halfwave % AminusC % BminusA % CminusB end ypos snap3 restore /ypos exch def } def /figure5 { save /snap3 exch def /linestring 1000 string store %%%%%%%%%%%%%%%%%%% electronics begin /circ1b {gsave currentpoint newpath 0.20 0 360 arc % whitefill gsave beige 0.88 setgray fill grestore black line1 stroke grestore} def %for circle bestgray line1 coredefs -4.5 -1 translate % position on page % 30 12 showgrid /font2 /Helvetica-Bold 1 gonzofont /overstrikeht 0.70 store /yinc 1.2 store /anet {gsave translate 0 6 mt 1.5 r 6 d 1.5 l circ1b 0 6 mt circ1b 1.5 1.5 vresistor 1.5 4.5 vresistor 1.5 3 mt dot 1.5 3 mt 1.5 r circ1b font2 -0.7 5.5 (DA) cr % no cc here! -0.7 -0.5 (D|oB|o) cr font1 3.8 3.5 (phase a\noutput) cl grestore } store /bnet {gsave translate 0 6 mt 1.5 r 6 d 1.5 l circ1b 0 6 mt circ1b 1.5 1.5 vresistor 1.5 4.5 vresistor 1.5 3 mt dot 1.5 3 mt 1.5 r circ1b font2 -0.7 5.5 (DB) cr % no cc here! -0.7 -0.5 (D|oC|o) cr font1 3.8 3.5 (phase b\noutput) cl grestore } store /cnet {gsave translate 0 6 mt 1.5 r 6 d 1.5 l circ1b 0 6 mt circ1b 1.5 1.5 vresistor 1.5 4.5 vresistor 1.5 3 mt dot 1.5 3 mt 1.5 r circ1b font2 -0.7 5.5 (DC) cr % no cc here! -0.7 -0.5 (D|oA|o) cr font1 3.8 3.5 (phase c\noutput) cl grestore } store -2 0 mt 10.7 pu 33.2 pr 10.7 pd closepath 0.88 setgray fill black 1.5 3 anet 12 3 bnet 22.5 3 cnet font1 9.5 0.8 (All resistors 2.2K.) cl end ypos snap3 restore /ypos exch def } def /figuretwoauto { /figadvance 12 store save /snap2 exch store xpos 8 add ypos figadvance sub translate beige figure2 snap2 restore /ypos ypos figadvance sub yinc sub store } store /figurethreeauto { /figadvance 11 store save /snap2 exch store xpos 8 add ypos figadvance sub translate beige figure3 snap2 restore /ypos ypos figadvance sub yinc sub store } store /figurefourauto { /figadvance 13 store save /snap2 exch store xpos 8 add ypos figadvance sub translate beige figure4 snap2 restore /ypos ypos figadvance sub yinc sub store } store /figurefiveauto { /figadvance 10 store save /snap2 exch store xpos 8 add ypos figadvance sub translate beige figure5 snap2 restore /ypos ypos figadvance sub yinc sub store } store /figure2x { 0.50 settint /font0 /StoneSans-Bold 6 gonzofont font0 0 1 1 setrgbcolor 10 3 (54) cc 20 25 showgrid line3 0 1 1 setrgbcolor [{-0.5 0 mt 20.5 r} 10 3] yrpt [{0 -0.5 mt 25.5 u} 10 3] xrpt 0 25 mt 20 r black 0 0 0 setrgbcolor 0 2 ex54 length 2 sub {/posn2 exch store ex54 posn2 get ex54 posn2 1 add get moveto dot} for 1 0 1 setrgbcolor 0 2 ex54good length 2 sub {/posn2 exch store ex54good posn2 get ex54good posn2 1 add get moveto dot} for 1 0.5 0 setrgbcolor ex54want 0 get ex54want 1 get mt dot 1 0 0 setrgbcolor ex54orig 0 get ex54orig 1 get mt dot /font1 /StoneSans-Bold 0.9 gonzofont font1 0.3 0.3 0.3 setrgbcolor 0 -1.5 (0.535) cc 10 -1.5 (0.540) cc 20 -1.5 (0.545) cc -0.9 0 0.3 sub (0.00%) cr -0.9 10 0.3 sub(0.05%) cr -0.9 20 0.3 sub (0.10%) cr % 11.55 18.2 (= raw quant) cl % 11.55 17.2 (= best neighbor) cl /font2 /StoneSans-Bold 1.1 gonzofont font1 10 -2.7 (Amplitude) cc gsave -5.2 10 translate 90 rotate 0 0 (Unfiltered THD 2|j-|j22)cc grestore /yinc 1.2 store 24.3 11.5 (Nearby\nquantized\nAmplitude 54\noptions) cc } store %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /burpwide 29.5 store /burplebox3 {save /burp1 exch store xpos ypos translate -1 .2 mt 3.5 yinc mul .4 add pd burpwide pr 3.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox2 {save /burp1 exch store xpos ypos translate -1 .2 mt 2.5 yinc mul .4 add pd burpwide pr 2.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox2.5 {save /burp1 exch store xpos ypos translate -1 .2 mt 3 yinc mul .4 add pd burpwide pr 3 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox4 {save /burp1 exch store xpos ypos translate -1 .2 mt 4.5 yinc mul .4 add pd burpwide pr 4.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox4.5 {save /burp1 exch store xpos ypos translate -1 .2 mt 5 yinc mul .4 add pd burpwide pr 5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox5w {save /burp1 exch store xpos ypos translate -1 .2 mt 5.5 yinc mul .4 add pd burpwide pr 5.5 yinc mul .4 add pu closepath 0.9 setgray fill true {special5 } if burp1 restore } def /burpcom {save /burpx exch store /bht exch store save /burp1 exch store xpos ypos translate -1 .2 mt bht yinc mul .4 add pd burpwide pr bht yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore} store /burpwidew 32 store /burpcomw {save /burpx exch store /bht exch store save /burp1 exch store xpos 1 sub ypos translate 0 .2 mt bht yinc mul .4 add pd burpwidew pr bht yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore} store /burplebox3.5 {4 burpcom} store /burplebox5 {5.5 burpcom} store /burplebox5.5 {6 burpcom} store /burplebox6 {6.5 burpcom} store /burplebox6.5 {7 burpcom} store /burplebox7 {7.5 burpcom} store /burplebox7.5 {8 burpcom} store /burplebox8 {8.5 burpcom} store /burplebox8.5 {9 burpcom} store /burplebox9 {9.5 burpcom} store /burplebox9.5 {10 burpcom} store /burplebox10 {10.5 burpcom} store /burplebox11 {12 burpcom} store /burplebox12 {12.5 burpcom} store /burplebox11w {11.5 burpcomw} store /burplebox12.5 {13 burpcom} store /burplebox13 {13.5 burpcom} store /burplebox13.5 {14 burpcom} store /burplebox14 {14.5 burpcom} store /burplebox14.5 {15 burpcom} store /burplebox15{15.5 burpcom} store /burplebox15.5{16 burpcom} store /burplebox18 {18.5 burpcom} store /burplebox18.5 {19 burpcom} store /burplebox22{22.5 burpcom} store /burplebox25.5{26 burpcom} store /burplebox27{27.5 burpcom} store /burplebox34 {34.5 burpcom} store /burplebox34w{34.5 burpcomw} store /burplebox34.5w{35 burpcomw} store /burplebox38w{38.5 burpcomw} store /burplebox38.5w{39 burpcomw} store /burplebox40w{40.5 burpcomw} store /burplebox40{40.5 burpcom} store /burplebox42.5{43 burpcom} store % nearly a full page /burplebox17 {save /burp1 exch store xpos ypos translate -1 .2 mt 17.5 yinc mul .4 add pd burpwide pr 17.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox20 {save /burp1 exch store xpos ypos translate -1 .2 mt 20.5 yinc mul .4 add pd burpwide pr 20.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox23 {save /burp1 exch store xpos ypos translate -1 .2 mt 23.5 yinc mul .4 add pd burpwide pr 23.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox26.5 {save /burp1 exch store xpos ypos translate -1 .2 mt 27 yinc mul .4 add pd burpwide pr 27 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox30 {save /burp1 exch store xpos ypos translate -1 .2 mt 30.5 yinc mul .4 add pd burpwide pr 30.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox36 {save /burp1 exch store xpos ypos translate -1 .2 mt 36.5 yinc mul .4 add pd burpwide pr 36.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def %%%%%%%%%%% figure 1 routine % autopositions on box6 %%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%% TWO PATTERNS %%%%%%%%%%%%%% /ivoryrndcolor [230 230 205 40] store % random pattern colors [red blue green variance ] /magentarndcolor [230 100 230 120]store /makepatternstrings { [230 210 190 80] buildpixels magentarndcolor /accentpatstring exch store ivoryrndcolor buildpixels makeimagestring /bodypatstring exch store } store /burppatstrings { ivoryrndcolor buildpixels makeimagestring /bodypatstring exch store magentarndcolor buildpixels makeimagestring /accentpatstring exch store } store /DeviceRGB setcolorspace % pick color model /hpixels 50 store % size of pattern image /vpixels 50 store /issize hpixels vpixels mul store % makestring converts a stack top array into a string... /makestring {dup length string dup /NullEncode filter 3 -1 roll {1 index exch write} forall pop} def % /buildpixels makes three nearby colors given [r b g texture] all 0-255 integers /buildpixels {aload pop /texture exch store /b0 exch store /g0 exch store /r0 exch store 123 srand /r1 r0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /g1 g0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /b1 b0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /r2 r0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /g2 g0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /b2 b0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /r3 r0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /g3 g0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /b3 b0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store } store % /makeimagestring creates a sting usable for a pattern image /makeimagestring { 12345 srand % make repeatable /iarray mark issize { r1 g1 b1} repeat ] store % fill all with color 1 issize 2 div cvi { iarray issize % fill half with color 2 random 3 mul cvi [ r2 g2 b2 ] putinterval} repeat issize 2 div cvi { iarray issize % fill third with color 3 random 3 mul cvi [ r3 g3 b3 ] putinterval} repeat iarray makestring } store % /rndimage shows the random string as a patternable image /bodyrandimage { gsave 5 dup scale << % start image dicationary /ImageType 1 % always one /Width hpixels % width in pixels /Height vpixels % height in pixels /ImageMatrix [hpixels 0 0 vpixels neg 0 vpixels ] /DataSource bodypatstring % proc to get string data /BitsPerComponent 8 % color resolution /Decode [0 1 0 1 0 1] % per red book 4.10 >> image % call the image grestore } def /accentrandimage { gsave 5 dup scale << % start image dicationary /ImageType 1 % always one /Width hpixels % width in pixels /Height vpixels % height in pixels /ImageMatrix [hpixels 0 0 vpixels neg 0 vpixels ] /DataSource accentpatstring % proc to get string data /BitsPerComponent 8 % color resolution /Decode [0 1 0 1 0 1] % per red book 4.10 >> image % call the image grestore } def % using a separate pattern dictionary for each pattern... /bodypatdict << /PatternType 1 % Tiling pattern /PaintType 1 % Colored /TilingType 1 /BBox [0 0 50 50] /XStep 5 /YStep 5 /PaintProc { begin bodyrandimage end} >> store /accentpatdict << /PatternType 1 % Tiling pattern /PaintType 1 % Colored /TilingType 1 /BBox [0 0 50 50] /XStep 5 /YStep 5 /PaintProc { begin accentrandimage end} >> store /burpbackmain { save /snapbb exch store save /snapb exch store % show the body background bodypatdict matrix % Identity matrix makepattern % Instantiate the pattern /bodypat exch def 4 0 % for the actual slide size 12 8 /Pattern setcolorspace bodypat setcolor rectfill % Fill rectangle with pattern snapb restore 4 0 12 8 line1 black rectstroke save /snapy exch store % show the accent accentpatdict matrix % Identity matrix makepattern % Instantiate the pattern /accentpat exch def 18.5 0 12 8 4 copy /Pattern setcolorspace accentpat setcolor rectfill % Fill rectangle with pattern snapy restore 18.5 0 12 8 line1 black rectstroke snapbb restore } store /figure3x {save /snap3 exch store translate % 34 8 showgrid makepatternstrings burppatstrings % burpbackstrings burpbackmain snap3 restore } store %%%%%%%%%%%%%%% end figure3 %%%%%%%%%%%% first special plot /special1code { /a01 [ 11.98757334830098 % p1 delay 0.02494857340377088 % p1 width 11.96309297293453 % p2 delay 0.04880748072357122 % p2 width 11.940266741737353 % p3 delay 0.07053366579209097 % p3 width 11.920110003436285 % p4 delay 0.08917718733052737 % p4 width 11.903448622759931 % p5 delay 0.10392320715383363 % p5 width 11.890997400038934 % p6 delay 0.1141272527930397 % p6 width 11.883303463712295 % p7 delay 0.11934332976518647 % p7 width 5.940346750117669 % quadrant delay ] store /a10 [ 11.870255884662251 % p1 delay 0.24926326067621396 % p1 width 11.627261913532986 % p2 delay 0.48772075225425126 % p2 width 11.401006709297277 % p3 delay 0.7050052291468631 % p3 width 11.201126478014806 % p4 delay 0.8916211348287959 % p4 width 11.036121661040383 % p5 delay 1.0393583630906704 % p5 width 10.912994009526542 % p6 delay 1.1416713778561558 % p6 width 10.836964879593466 % p7 delay 1.1939991529573461 % p7 width 5.405629193521989 % quadrant delay ] store /a20 [ 11.730827315951456 % p1 delay 0.4971341380973975 % p1 width 11.247686685343746 % p2 delay 0.9732376712143491 % p2 width 10.798693242131715 % p3 delay 1.407947044520391 % p3 width 10.402477789378082 % p4 delay 1.78228682672421 % p4 width 10.075528131993294 % p5 delay 2.079475909290011 % p5 width 9.831551570148512 % p6 delay 2.285806430413743 % p6 width 9.680871958761386 % p7 delay 2.391516582063389 % p7 width 4.8149587039683155 % quadrant delay ] store /a30 [ 11.582072392748948 % p1 delay 0.7421737945018947 % p1 width 10.862633911787377 % p2 delay 1.454218311923288 % p2 width 10.194732255409651 % p3 delay 2.106545777255711 % p3 width 9.605233324537401 % p4 delay 2.6708278536717955 % p4 width 9.118304754762583 % p5 delay 3.1210612368032926 % p5 width 8.754459346379754 % p6 delay 3.435090920436508 % p6 width 8.529472562792705 % p7 delay 3.5965061939786693 % p7 width 4.226667363010421 % quadrant delay ] store /a40 [ 11.424050411047465 % p1 delay 0.9828418379051129 % p1 width 10.473248533619292 % p2 delay 1.9280479848577236 % p2 width 9.590640663430097 % p3 delay 2.7980351182823426 % p3 width 8.810545720192863 % p4 delay 3.555566231331163 % p4 width 8.164652806450142 % p5 delay 4.164668715768244 % p5 width 7.680713770893433 % p6 delay 4.592711162444033 % p6 width 7.380758970713202 % p7 delay 4.813962276129942 % p7 width 3.6395557969349425 % quadrant delay ] store /a50 [ 11.25647168216318 % p1 delay 1.2174139856738683 % p1 width 10.080431345631026 % p2 delay 2.391612373063623 % p2 width 8.987846411116894 % p3 delay 3.4787553647023585 % p3 width 8.01966536065963 % p4 delay 4.433803253978574 % p4 width 7.214999377113287 % p5 delay 5.210430981795014 % p5 width 6.609527274825396 % p6 delay 5.762766698554145 % p6 width 6.232831441964791 % p7 delay 6.050997667516469 % p7 width 3.0524467812417413 % quadrant delay ] store /a53 [ 11.204229246524123 % p1 delay 1.2863028469519246 % p1 width 9.962015674530373 % p2 delay 2.528117843985992 % p2 width 8.807469507353026 % p3 delay 3.680145761308111 % p3 width 7.783358489290968 % p4 delay 4.695379940110421 % p4 width 6.930993065963889 % p5 delay 5.5244810879620445 % p5 width 6.288586696196958 % p6 delay 6.117000009644471 % p6 width 5.888323429144677 % p7 delay 6.427466502066167 % p7 width 2.876129898966852 % quadrant delay ] store /a60 [ 11.078495962518918 % p1 delay 1.4438411449625086 % p1 width 9.684772040454877 % p2 delay 2.840939034126027 % p2 width 8.38774096372643 % p3 delay 4.143446978421139 % p3 width 7.234097294409224 % p4 delay 5.300789342760972 % p4 width 6.270187484640822 % p5 delay 6.2573120579578045 % p5 width 5.540415121300725 % p6 delay 6.9509377594411745 % p6 width 5.083782352079723 % p7 delay 7.31917029639942 % p7 width 2.4640721668002356 % quadrant delay ] store /a70 [ 10.888278735987464 % p1 delay 1.6594599780251222 % p1 width 9.286332677429444 % p2 delay 3.270497867115676 % p2 width 7.791694139706859 % p3 delay 4.783840563470704 % p3 width 6.455843532587245 % p4 delay 6.147367771354908 % p4 width 5.331869368850619 % p5 delay 7.300805550943892 % p5 width 4.473484564450537 % p6 delay 8.165497800155037 % p6 width 3.9315873351224724 % p7 delay 8.640550109600042 % p7 width 1.8728900051999772 % quadrant delay ] store /a80 [ 10.681702836852158 % p1 delay 1.8602538062958054 % p1 width 8.88398269670934 % p2 delay 3.6714981402848607 % p2 width 7.200946234572324 % p3 delay 5.385275030570618 % p3 width 5.687867904890517 % p4 delay 6.9536645196485765 % p4 width 4.403487202517624 % p5 delay 8.324602905316311 % p5 width 3.4104122823979494 % p6 delay 9.417450259887687 % p6 width 2.774084338047487 % p7 delay 10.068107274017336 % p7 width 1.2766645679914034 % quadrant delay ] store /a90 [ 10.447373907519674 % p1 delay 2.038123534960869 % p1 width 8.472609797490058 % p2 delay 4.0258541900581655 % p2 width 6.615791805649657 % p3 delay 5.91534811864263 % p3 width 4.935247854465985 % p4 delay 7.666864442425741 % p4 width 3.4934960493166684 % p5 delay 9.260584158941057 % p5 width 2.358772151850779 % p6 delay 10.696787617357046 % p6 width 1.6101420251774101 % p7 delay 11.792019752288254 % p7 width 0.6709845938560051 % quadrant delay ] store /a95 [ 10.307313139895288 % p1 delay 2.111222840209404 % p1 width 8.256837177571334 % p2 delay 4.169598534647832 % p2 width 6.323664766096179 % p3 delay 6.124919743159786 % p3 width 4.567759372280754 % p4 delay 7.93736307227887 % p4 width 3.052826978493542 % p5 delay 9.604367560734132 % p5 width 1.8471062124079367 % p6 delay 11.250122874450298 % p6 width 1.0294512420668695 % p7 delay 13.056647531415762 % p7 width 0.36079895429200803 % quadrant delay ] store /a96 [ 10.275153279505902 % p1 delay 2.1233556309882146 % p1 width 8.2115482104066 % p2 delay 4.1930336081984905 % p2 width 6.264803529331843 % p3 delay 6.157765833137692 % p3 width 4.495281237426013 % p4 delay 7.976346292010689 % p4 width 2.9669207635656676 % p5 delay 9.646432050857882 % p5 width 1.7477032094150075 % p6 delay 11.320166050312238 % p6 width 0.9148247359680965 % p7 delay 13.409077457751365 % p7 width 0.2975881111242984 % quadrant delay ] store /a97 [ 10.240457024341477 % p1 delay 2.134077471317074 % p1 width 8.164867772841955 % p2 delay 4.213452442998779 % p2 width 6.205523779081837 % p3 delay 6.185452328837567 % p3 width 4.423234605472523 % p4 delay 8.006618220218015 % p4 width 2.8821971876470442 % p5 delay 9.672069264487952 % p5 width 1.6500883956263123 % p6 delay 11.355113654260407 % p6 width 0.8016574526230471 % p7 delay 13.831443290493283 % p7 width 0.23374710975272705 % quadrant delay ] store /a98 [ 10.201940773921007 % p1 delay 2.1427535621580062 % p1 width 8.1160304405589 % p2 delay 4.229503836724113 % p2 width 6.145502859365315 % p3 delay 6.205687104545131 % p3 width 4.351688442224891 % p4 delay 8.024338941005154 % p4 width 2.7990882078968866 % p5 delay 9.67371438320096 % p5 width 1.555079224439453 % p6 delay 11.330237907918856 % p6 width 0.69116413541866 % p7 delay 14.364207461243552 % p7 width 0.169062719379113 % quadrant delay ] store /a99 [ 10.156863627959598 % p1 delay 2.1480428640811766 % p1 width 8.06339164056924 % p2 delay 4.238341714779558 % p2 width 6.0840316757476 % p3 delay 6.213675963725404 % p3 width 4.280754974385665 % p4 delay 8.02161284750413 % p4 width 2.718452103604484 % p5 delay 9.636460505287125 % p5 width 1.4642999953711353 % p6 delay 11.197329413972475 % p6 width 0.5860923925256714 % p7 delay 15.087472750976061 % p7 width 0.10317752951067405 % quadrant delay ] store /a100 [ 10.097664622565073 % p1 delay 2.146284244870163 % p1 width 8.002396397096308 % p2 delay 4.23222417093767 % p2 width 6.019120165289753 % p3 delay 6.1964902984829 % p3 width 4.21068681625524 % p4 delay 7.977592739007122 % p4 width 2.6425485752095525 % p5 delay 9.523271990574841 % p5 width 1.3819874635530311 % p6 delay 10.855567612314722 % p6 width 0.4941631819604595 % p7 delay 16.184573443763554 % p7 width 0.03542827811961047 % quadrant delay ] store /range [ (01) (10) (20) (30) (40) (50) (53) (60) (70) (80) (90) (95)(96)(97) (98)(99)(100) ] store /procit1 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 13 get 2.5 mul lineto } def /procit2 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 11 get 2.5 mul lineto } def /procit3 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 9 get 2.5 mul lineto } def /procit4 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 7 get 2.5 mul lineto } def /procit5 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 5 get 2.5 mul lineto } def /procit6 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 3 get 2.5 mul lineto } def /procit7 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 1 get 2.5 mul lineto } def /procit1d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 12 get 2.5 mul lineto } def /procit2d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 10 get 2.5 mul lineto } def /procit3d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 8 get 2.5 mul lineto } def /procit4d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 6 get 2.5 mul lineto } def /procit5d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 4 get 2.5 mul lineto } def /procit6d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 2 get 2.5 mul lineto } def /procit7d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 0 get 2.5 mul lineto } def /procit8d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 14 get 2.5 mul lineto } def % 40 100 10 setgrid 40 40 showgrid line1 0 30 mt range {procit7d} forall 40 0 lineto 0 0 lineto closepath 0 settint 0.8 setgray fill 0 30 mt range {procit6d} forall 40 0 lineto 0 0 lineto closepath 0.1 settint 0.8 setgray fill 0 30 mt range {procit5d} forall 40 0 lineto 0 0 lineto closepath 0.2 settint 0.8 setgray fill 0 30 mt range {procit4d} forall 40 0 lineto 0 0 lineto closepath 0.27 settint 0.8 setgray fill 0 30 mt range {procit3d} forall 40 0 lineto 0 0 lineto closepath 0.43 settint 0.8 setgray fill 0 30 mt range {procit2d} forall 40 0 lineto 0 0 lineto closepath 0.5 settint 0.8 setgray fill 0 30 mt range {procit1d} forall 40 0 lineto 0 0 lineto closepath 0.6 settint 0.8 setgray fill 0 15 mt range {procit8d} forall 40 0 lineto 0 0 lineto closepath 0.7 settint 0.8 setgray fill 0 0 mt range {procit1} forall 40 0 lineto closepath 0.6 settint 0.6 setgray fill 0 0 mt range {procit2} forall 40 0 lineto closepath 0.5 settint 0.6 setgray fill 0 0 mt range {procit3} forall 40 0 lineto closepath 0.43 settint 0.6 setgray fill 0 0 mt range {procit4} forall 40 0 lineto closepath 0.27 settint 0.6 setgray fill 0 0 mt range {procit5} forall 40 0 lineto closepath 0.2 settint 0.6 setgray fill 0 0 mt range {procit6} forall 40 0 lineto closepath 0.1 settint 0.6 setgray fill 0 0 mt range {procit7} forall 40 0 lineto closepath 0 settint 0.6 setgray fill black 0 0 mt range {procit1} forall stroke 0 0 mt range {procit2} forall stroke 0 0 mt range {procit3} forall stroke 0 0 mt range {procit4} forall stroke 0 0 mt range {procit5} forall stroke 0 0 mt range {procit6} forall stroke 0 0 mt range {procit7} forall stroke 0 30 mt range {procit1d} forall 0 30 mt range {procit2d} forall 0 30 mt range {procit3d} forall stroke 0 30 mt range {procit4d} forall stroke 0 30 mt range {procit5d} forall stroke 0 30 mt range {procit6d} forall stroke 0 30 mt range {procit7d} forall stroke 0 15 mt range {procit8d} forall stroke 0.3 0.3 0.3 setrgbcolor line3 1 setlinecap 1 setlinejoin 0 0 mt 40 u 40 r 40 d 40 l [{ 0 0 mt 0.4 l} 10 5 ] yrpt [{ 40 0 mt 0.4 r} 10 5 ] yrpt [{ 0 0 mt 0.4 d} 10 5 ] xrpt [{ 0 40 mt 0.4 u} 10 5 ] xrpt /cstretch 0.02 store /sstretch 0 store /font0 /StoneSans-Bold 1.5 gonzofont /font1 /StoneSans-Bold 1.2 gonzofont /font2 /StoneSans-Bold 1 gonzofont /font: /StoneSans-Bold [0.6 0 0 0.6 0 0.6] gonzofont /font; /StoneSans-Bold [1.5 0 0 1.5 0 0.2] gonzofont /yinc 2 store font0 20 43.7 (BEST EFFICIENCY N |;=|0 28\nMAGIC SINEWAVE) cc font1 /yinc 1.5 store 0 -2.2 (0.0) cc 20 -2.2 (0.5) cc 40 -2.2 (1.0)cc 20 -4.3 (AMPLITUDE) cc 41 -0.5 (0) cl 41 9.5 (4) cl 41 19.5 (8) cl 41 29.5 (12) cl 41 39.5 (16) cl 45.5 21 (DELAY\nTIME IN\nDEGREES) cc font2 26.5 1.2 (PULSE WIDTHS) cc 1.5 17 (PULSE DELAYS) cl 2.6 32.6 (0|:o) cc 27.4 32.6 (90|:o) cc % generate actual magic sinewave /makemagic {gsave translate 0.25 dup scale line3 /ht 17 store /dht 6 store 0 setlinecap 0 setlinejoin dht setlinewidth 0 0 mt a50 0 get pr 0 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add 0 mt a50 2 get pr 0.1 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add 0 mt a50 4 get pr 0.2 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add 0 mt a50 6 get pr 0.3 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add 0 mt a50 8 get pr 0.4 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add 0 mt a50 10 get pr 0.5 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add 0 mt a50 12 get pr 0.6 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add a50 12 get add a50 13 get add 0 mt a50 14 get pr 0.7 settint 0.8 setgray stroke %% pulses a50 0 get 0 mt ht pu 0 a50 1 get pr ht pd closepath 0 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add 0 mt ht pu 0 a50 3 get pr ht pd closepath 0.1 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add 0 mt ht pu 0 a50 5 get pr ht pd closepath 0.2 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add 0 mt ht pu 0 a50 7 get pr ht pd closepath 0.3 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add 0 mt ht pu 0 a50 9 get pr ht pd closepath 0.4 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add 0 mt ht pu 0 a50 11 get pr ht pd closepath 0.5 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add a50 12 get add 0 mt ht pu 0 a50 13 get pr ht pd closepath 0.6 settint 0.6 setgray fill 1 setlinecap 1 setlinejoin black 0 0 mt a50 0 get 0 rlineto 0 ht pu a50 1 get 0 rlineto 0 ht pd a50 2 get 0 rlineto 0 ht pu a50 3 get 0 rlineto 0 ht pd a50 4 get 0 rlineto 0 ht pu a50 5 get 0 rlineto 0 ht pd a50 6 get 0 rlineto 0 ht pu a50 7 get 0 rlineto 0 ht pd a50 8 get 0 rlineto 0 ht pu a50 9 get 0 rlineto 0 ht pd a50 10 get 0 rlineto 0 ht pu a50 11 get 0 rlineto 0 ht pd a50 12 get 0 rlineto 0 ht pu a50 13 get 0 rlineto 0 ht pd a50 14 get 0 rlineto 0.45 setlinewidth stroke grestore} def 3.5 33 makemagic } store % end special1code definition %%%%%%%%%%% special2 code /special2code { /ad01 [ 7.434338157133027 % delay a=60-p5e 0.11880195485247924 % delay b=p5e-p5s 0.019577960879085587 % delay c=p1e-p1s 14.855161666700834 % delay d=p2s-p1e 0.021983040440492374 % delay e=p2e-p2s 0.0911673899925809 % delay f=p3s-p2e 0.0353778304366692 % delay g=p3e-p3s 7.4235919995647634 % delay h=30-p3e ] store /ad10 [ 6.840486668588909 % delay a=60-p5e 1.1877031146444991 % delay b=p5e-p5s 0.19606479817654332 % delay c=p1e-p1s 13.542825252098737 % delay d=p2s-p1e 0.1524725715290529 % delay e=p2e-p2s 0.9104569599226266 % delay f=p3s-p2e 0.4224088615298953 % delay g=p3e-p3s 6.7475817735097365 % delay h=30-p3e ] store /ad20 [ 6.179615738852249 % delay a=60-p5e 2.368314508230462 % delay b=p5e-p5s 0.39486570406405263 % delay c=p1e-p1s 12.090328683781834 % delay d=p2s-p1e 0.2773208755122525 % delay e=p2e-p2s 1.8107046591154443 % delay f=p3s-p2e 0.8802494355140809 % delay g=p3e-p3s 5.998600394929625 % delay h=30-p3e ] store /ad30 [ 5.51798715656065 % delay a=60-p5e 3.537987411554724 % delay b=p5e-p5s 0.5996610353231375 % delay c=p1e-p1s 10.6414917563349 % delay d=p2s-p1e 0.378916570008613 % delay e=p2e-p2s 2.6949373104326213 % delay f=p3s-p2e 1.3768763200109077 % delay g=p3e-p3s 5.252142439774445 % delay h=30-p3e ] store /ad40 [ 4.8560795807034935 % delay a=60-p5e 4.692317283738298 % delay b=p5e-p5s 0.8138114048538583 % delay c=p1e-p1s 9.195452323744191 % delay d=p2s-p1e 0.46036801366636126 % delay e=p2e-p2s 3.5594981265840886 % delay f=p3s-p2e 1.9150363136688284 % delay g=p3e-p3s 4.50743695304088 % delay h=30-p3e ] store /ad50 [ 4.194298075500072 % delay a=60-p5e 5.825866502969745 % delay b=p5e-p5s 1.0408488460292488 % delay c=p1e-p1s 7.751463747608284 % delay d=p2s-p1e 0.5238895562340744 % delay e=p2e-p2s 4.403346953313516 % delay f=p3s-p2e 2.496487356236706 % delay g=p3e-p3s 3.7637989621083534 % delay h=30-p3e ] store /ad53 [ 3.995843046736013 % delay a=60-p5e 6.160868086216446 % delay b=p5e-p5s 1.112006440311525 % delay c=p1e-p1s 7.318567062952312 % delay d=p2s-p1e 0.5397256759732585 % delay e=p2e-p2s 4.652707315620958 % delay f=p3s-p2e 2.679463155973238 % delay g=p3e-p3s 3.5408192162162493 % delay h=30-p3e ] store /ad60 [ 3.5330039078836606 % delay a=60-p5e 6.9314513603008905 % delay b=p5e-p5s 1.2842465239317846 % delay c=p1e-p1s 6.308872401421397 % delay d=p2s-p1e 0.5713975364200223 % delay e=p2e-p2s 5.228837780084575 % delay f=p3s-p2e 3.1216051264200075 % delay g=p3e-p3s 3.0205853635376627 % delay h=30-p3e ] store /ad70 [ 2.8725257224432425 % delay a=60-p5e 7.998916501222098 % delay b=p5e-p5s 1.5460427838912807 % delay c=p1e-p1s 4.8671218102361 % delay d=p2s-p1e 0.6062046544537196 % delay e=p2e-p2s 6.042997615507133 % delay f=p3s-p2e 3.789041064453741 % delay g=p3e-p3s 2.2771498477926854 % delay h=30-p3e ] store /ad80 [ 2.2131268407607223 % delay a=60-p5e 9.012727944067371 % delay b=p5e-p5s 1.8200962344110607 % delay c=p1e-p1s 3.4258327180993433 % delay d=p2s-p1e 0.6400219482894229 % delay e=p2e-p2s 6.85987852874419 % delay f=p3s-p2e 4.495547368289273 % delay g=p3e-p3s 1.532768417338616 % delay h=30-p3e ] store /ad90 [ 1.55474755544018 % delay a=60-p5e 9.946227643338275 % delay b=p5e-p5s 2.048752785780998 % delay c=p1e-p1s 1.9853102905593687 % delay d=p2s-p1e 0.736140589142309 % delay e=p2e-p2s 7.705915111477708 % delay f=p3s-p2e 5.236535369142075 % delay g=p3e-p3s 0.7863706551190859 % delay h=30-p3e ] store /ad95 [ 1.225355348586767 % delay a=60-p5e 10.367111550363887 % delay b=p5e-p5s 2.0303138224619843 % delay c=p1e-p1s 1.2665437513423114 % delay d=p2s-p1e 0.9241283097125574 % delay e=p2e-p2s 8.155346335065047 % delay f=p3s-p2e 5.619630049711802 % delay g=p3e-p3s 0.4115708327556433 % delay h=30-p3e ] store /ad98 [ 1.026684367555248 % delay a=60-p5e 10.596415552349142 % delay b=p5e-p5s 1.807508982542501 % delay c=p1e-p1s 0.837605401539733 % delay d=p2s-p1e 1.2493523058395936 % delay e=p2e-p2s 8.441202830348274 % delay f=p3s-p2e 5.855882255842914 % delay g=p3e-p3s 0.18534830398259316 % delay h=30-p3e ] store /ad100 [ 0.8921862350266565 % delay a=60-p5e 10.732271751681054 % delay b=p5e-p5s 1.3169014782635031 % delay c=p1e-p1s 0.5554591355065241 % delay d=p2s-p1e 1.8052854865738012 % delay e=p2e-p2s 8.644568525896716 % delay f=p3s-p2e 6.020358566571353 % delay g=p3e-p3s 0.032968820480391514 % delay h=30-p3e ] store /range [ (01) (10) (20) (30) (40) (50) (53) (60) (70) (80) (90) (95) (98)(100) ] store /procit1 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 1 get 2.5 mul lineto } def /procit2 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 2 get 2.5 mul lineto } def /procit3 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 4 get 2.5 mul lineto } def /procit4 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 5 get 2.5 mul lineto } def /procit5 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 6 get 2.5 mul lineto } def /procit6 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 3 get 2.5 mul lineto } def /procit7 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 1 get 2.5 mul lineto } def /procit1d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 0 get 2.5 mul lineto } def /procit2d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 3 get 2.5 mul lineto } def /procit3d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 7 get 2.5 mul lineto } def /procit4d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 6 get 2.5 mul lineto } def /procit5d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 4 get 2.5 mul lineto } def /procit6d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 2 get 2.5 mul lineto } def /procit7d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 0 get 2.5 mul lineto } def /procit8d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 14 get 2.5 mul lineto } def % 40 100 10 setgrid 40 40 showgrid line1 % delays 0 37.5 mt range {procit2d} forall 40 0 lineto 0 0 lineto closepath 0.15 settint 0.8 setgray fill 0 18.75 mt range {procit1d} forall 40 0 lineto 0 0 lineto closepath 0 settint 0.8 setgray fill 0 18.75 mt range {procit3d} forall 40 0 lineto 0 0 lineto closepath 0.3 settint 0.8 setgray fill % pulses 0 0 mt range {procit1} forall 40 0 lineto 0 0 lineto closepath 0.0 settint 0.6 setgray fill 0 0 mt range {procit4} forall 40 0 lineto 0 0 lineto closepath 0.5 settint 0.6 setgray fill 0 0 mt range {procit5} forall 40 0 lineto 0 0 lineto closepath 0.6 settint 0.6 setgray fill 0 0 mt range {procit2} forall 40 0 lineto 0 0 lineto closepath 0.15 settint 0.6 setgray fill 0 0 mt range {procit3} forall 40 0 lineto 0 0 lineto closepath 0.3 settint 0.6 setgray fill black line1 0 18.75 mt range {procit1d} forall stroke 0 37.5 mt range {procit2d} forall stroke 0 18.75 mt range {procit3d} forall stroke stroke % width outlines 0 0 mt range {procit1} forall stroke 0 0 mt range {procit2} forall stroke 0 0 mt range {procit3} forall stroke 0 0 mt range {procit4} forall stroke 0 0 mt range {procit5} forall stroke 0.3 0.3 0.3 setrgbcolor line3 1 setlinecap 1 setlinejoin 0 0 mt 40 u 40 r 40 d 40 l [{ 0 0 mt 0.4 l} 10 5 ] yrpt [{ 40 0 mt 0.4 r} 10 5 ] yrpt [{ 0 0 mt 0.4 d} 10 5 ] xrpt [{ 0 40 mt 0.4 u} 10 5 ] xrpt /cstretch 0.02 store /sstretch 0 store /font0 /StoneSans-Bold 1.5 gonzofont /font1 /StoneSans-Bold 1.2 gonzofont /font2 /StoneSans-Bold 1 gonzofont /font: /StoneSans-Bold [0.6 0 0 0.6 0 0.6] gonzofont /font; /StoneSans-Bold [1.5 0 0 1.5 0 0.2] gonzofont /yinc 2 store font0 20 45 (DELTA FRIENDLY N |;=|0 28\nMAGIC SINEWAVE) cc font1 /yinc 1.5 store 0 -2.2 (0.0) cc 20 -2.2 (0.5) cc 40 -2.2 (1.0)cc 20 -4.3 (AMPLITUDE) cc 41 -0.5 (0) cl 41 9.5 (4) cl 41 19.5 (8) cl 41 29.5 (12) cl 41 39.5 (16) cl 46.5 21 (DELAY\nTIME IN\nDEGREES) cc font2 23.5 4.7 (PULSE WIDTHS) cc 1.5 22.5 (PULSE DELAYS) cl % generate actual magic sinewave /makemagicold {gsave translate 0.25 dup scale line3 /ht 12 store /dht 6 store 0 setlinecap 0 setlinejoin dht setlinewidth 0 0 mt a50 0 get pr 0 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add 0 mt a50 2 get pr 0.1 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add 0 mt a50 4 get pr 0.2 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add 0 mt a50 6 get pr 0.3 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add 0 mt a50 8 get pr 0.4 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add 0 mt a50 10 get pr 0.5 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add 0 mt a50 12 get pr 0.6 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add a50 12 get add a50 13 get add 0 mt a50 14 get pr 0.7 settint 0.8 setgray stroke %% pulses a50 0 get 0 mt ht pu 0 a50 1 get pr ht pd closepath 0 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add 0 mt ht pu 0 a50 3 get pr ht pd closepath 0.1 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add 0 mt ht pu 0 a50 5 get pr ht pd closepath 0.2 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add 0 mt ht pu 0 a50 7 get pr ht pd closepath 0.3 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add 0 mt ht pu 0 a50 9 get pr ht pd closepath 0.4 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add 0 mt ht pu 0 a50 11 get pr ht pd closepath 0.5 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add a50 12 get add 0 mt ht pu 0 a50 13 get pr ht pd closepath 0.6 settint 0.6 setgray fill 1 setlinecap 1 setlinejoin black 0 0 mt a50 0 get 0 rlineto 0 ht pu a50 1 get 0 rlineto 0 ht pd a50 2 get 0 rlineto 0 ht pu a50 3 get 0 rlineto 0 ht pd a50 4 get 0 rlineto 0 ht pu a50 5 get 0 rlineto 0 ht pd a50 6 get 0 rlineto 0 ht pu a50 7 get 0 rlineto 0 ht pd a50 8 get 0 rlineto 0 ht pu a50 9 get 0 rlineto 0 ht pd a50 10 get 0 rlineto 0 ht pu a50 11 get 0 rlineto 0 ht pd a50 12 get 0 rlineto 0 ht pu a50 13 get 0 rlineto 0 ht pd a50 14 get 0 rlineto 0.45 setlinewidth stroke grestore} def /makemagic {gsave translate 0.8 dup scale line3 /ht 3 store /dht 1.5 store 0 setlinecap 0 setlinejoin dht setlinewidth 0 0 mt ad70 0 get pr 0 settint 0.8 setgray stroke ad70 0 get ad70 1 get add ad70 2 get add 0 mt ad70 3 get pr 0.15 settint 0.8 setgray stroke ad70 0 get ad70 1 get add ad70 2 get add ad70 3 get add ad70 4 get add ad70 5 get add ad70 6 get add 0 mt ad70 7 get pr 0.3 settint 0.8 setgray stroke % pulses ad70 0 get 0 mt ht 2 mul pu ad70 1 get pr ht 2 mul pd closepath 0 settint 0.6 setgray fill ad70 0 get ad70 1 get add 0 mt ht 2 mul pu ad70 2 get pr ht 2 mul pd closepath 0.15 settint 0.6 setgray fill ad70 0 get ad70 1 get add ad70 2 get add ad70 3 get add 0 mt ht 2 mul pu ad70 4 get pr ht 2 mul pd closepath 0.30 settint 0.6 setgray fill ad70 0 get ad70 1 get add ad70 2 get add ad70 3 get add ad70 4 get add 0 mt ht 2 mul pu ad70 5 get pr ht 2 mul pd closepath 0.5 settint 0.6 setgray fill ad70 0 get ad70 1 get add ad70 2 get add ad70 3 get add ad70 4 get add ad70 5 get add 0 mt ht 2 mul pu ad70 6 get pr ht 2 mul pd closepath 0.6 settint 0.6 setgray fill % outlines black line1 1 setlinecap 1 setlinejoin 0 0 mt ad70 0 get pr ht pu ad70 1 get pr ht pd ht pu ad70 2 get pr ht pd ad70 3 get pr ht pu ad70 4 get pr ht pd ht pu ad70 5 get pr ht pd ht pu ad70 6 get pr ht pd ad70 7 get pr stroke 0 0 mt ad70 0 get pr ht 2 mul pu ad70 1 get ad70 2 get add pr ht 2 mul pd ad70 3 get pr ht 2 mul pu ad70 4 get ad70 5 get add ad70 6 get add pr ht 2 mul pd stroke % p3 poker 17.8 -0.45 mt 1.65 -2.5 rlineto black line1 stroke 11.5 -0.45 mt -1.65 -2.5 rlineto black line1 stroke grestore } def 12 31 makemagic font2 11 30.5 (0|:o) cc 37.5 30.5 (30|:o) cc 28.5 28.3 (p2) cc 18.9 28.3 (p1) cc 18 31.8 (p5) cc 28.8 31.8 (p4) cc 32.7 31.8 (p3) cc 18 34.2 (p6) cc 30.2 34.2 (p7) cc } store % end special 2 def % ---------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % //// REVISED DIPDRAW PROC ///// electronics begin % dipdraw - draws a dip integrated circuit. (old code to be improved) % Enter with currentpoint set to pin 1 and scale % set so that 1.0 = distance between pins. Then % do a numpins-(name)-(hipins)-(lopins) dipdraw % Pin callouts preceeded by / will be complemented. % main dipdraw entry: /dipdraw { save /dipsnap exch def /hipins exch def /lopins exch def /chipname exch def /numpins exch def mark 0 0 0 0 0 0 0 0 0 0 0 0 % temp patch /howlong {numpins 2 div cvi 1 add} def /howhigh {4 numpins 36 ge {1 add} if} def /stub {howhigh 1.4 sub 2 div} def % internal service subs start here: /pinproc {numpins 2 div cvi{newpath 0 cpos 0.37 0 360 arc gsave 1 setgray fill grestore 0.067 setlinewidth stroke pin# 5 string cvs dup stringwidth pop 2 div neg cpos 0.2 sub moveto show 1 0 translate /pin# pin# dir add def} repeat } def /stretchprint { dup stringwidth pop 2 div neg exch length 1 sub stretch mul 2 div sub 0 moveto callout (/) anchorsearch true eq {currentpoint exch stretch add exch moveto pop dup /callout exch def stringwidth pop callout length 1 sub stretch mul add /barwide exch def 0.033 setlinewidth gsave currentpoint 0.55 add moveto barwide 0 rlineto stroke grestore} if stretch 0 callout ashow pop} def /pincallouts{0 vpos translate {workstring ( ) search true eq {/callout exch def pop /workstring exch def callout stretchprint 1 0 translate}{dup /callout exch def stretchprint exit } ifelse}loop} def % actual dipdraw process starts here: % ........ the outline: gsave 1 setlinecap 1 setlinejoin currentpoint translate newpath -1 howhigh 2 div 0.7 -90 90 arc 0 stub rlineto howlong 0 rlineto 0 howhigh neg rlineto howlong neg 0 rlineto closepath gsave grayshade setgray fill grestore grayshade dup 1 ne {0.33}{0} ifelse setgray 0.36 setlinewidth stroke newpath -.55 .45 0.15 0 360 arc fill black % ........ pin circles and numbers: /Helvetica-Bold findfont [0.4 0 0 0.55 0 0] makefont setfont gsave /pin# 1 def /dir 1 def /cpos 0 def pinproc grestore gsave /pin# numpins def /dir -1 def /cpos howhigh def pinproc grestore % pin callouts: /Helvetica findfont [0.35 0 0 0.6 0 0] makefont setfont /stretch 0.033 def gsave /workstring hipins def /vpos 0.6 def pincallouts grestore gsave /workstring lopins def /vpos howhigh 1.05 sub def pincallouts grestore % device number: grayshade 1 ne {0.33}{0} ifelse setgray /Helvetica-Bold findfont [1.4 0 0 1 0 0] makefont setfont /stretch 0.05 def gsave numpins 2 div 1 sub 2 div howhigh 2 div 0.33 sub translate chipname dup /callout exch def stretchprint grestore black % end cleanup: grestore grestore cleartomark dipsnap restore} def end % get out of electronics? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /special1 {save /s1snap exch store 4.5 2.5 translate 0.8 dup scale special1code s1snap restore} store /special2 {save /s1snap exch store 4.5 17 translate 0.8 dup scale special2code s1snap restore} store /special5 {gsave 4 -5.85 translate line1 black 0.3 0 mt 0.3 l 5.2 u 0.3 r 13.2 0 mt 0.3 r 5.2 u 0.3 l 15.3 0 mt 0.3 l 5.2 u 0.3 r 18.3 0 mt 0.3 r 5.2 u 0.3 l grestore } store /xkernon {/kernsave kern store /kern 0.18 store } def /xkernoff {/kern kernsave store} def /pagenum 1 store /startnewpage { black beige 0.35 setgray 21 -2.5 (|3\320|j|j) ggnum 10 string cvs mergestr (|j.|j) mergestr pagenum 10 string cvs mergestr (|j|j\320) mergestr cc aqua showpage %% start next page /pagenum pagenum 1 add store 50 50 10 setgrid % create grid setpagefonts font1 textleft texttop } def /su {surl font6} store /to {tinton1 font6} store /tx {tintoff font1} store /tabs [7 20] store /overstrikeht 0.52 store % /font7 /helvetica [0.7 0 0 0.7 0 0.5] gonzofont font1 aqua 0.33 setgray font0 20 47.3 0.7 add % 1 sub (The |j|jSaga |j|jof |j|jthe)cc 20 45.3 0.7 add %1 sub (Dripping |j|jStalactite) cc black font2 textleft 43 0.3 add % this one only need |h below (|/aqua |/staytint1 |3Don Lancaster Synergetics, Box 809, Thatcher, AZ 85552 copyright c2004 as |/surl |6GuruGram|1|/gurgrm01 |/tinton1 |6#34 |/surl http://www.tinaja.com|/tinaja |/surl don@tinaja.com|/maildon (928) 428-4073 |/aqua |/black |a|0S|b|1|jome |/su Applied Mathematics|1|/math01 in the form of |/to playing with long strings of funny |/to numbers|/tx can end up anything from an obsessive fascination to a stunning |/su energy|/magsn01 |/su efficiency breakthrough|1|/magsn01 . |h Let us first gather together several of our more obscure |/su Guru's Lair|1|/tinaja "fun with numbers" resources. Followed up by the discovery timeline on how a two decade long obsessive fascination with applied math led to the |/su Magic Sinewave|1|/msintro1 energy efficiency breakthrough\274 |/su Barker Codes & Correllation|/hackar3 |j\320|1 These codes give a strong value when multiplied by themselves in phase and a weak value when multiplied by themselves when timeshifted or against external noise. Which becomes super important when you are extracting signals from deep noise, for |/su GPS|1|/resbn90 , for spread spectrum, or when otherwise having several signals simultaneously communicating interference free over the same channel. (Go to |/to Hardware Hacker 54|/tx in the linked archive.) |h |/su Digital Filters|/muse105 |j\320|1 Digital filters can do things that analog cannot because they can look both |/to backward|/tx and |/to forward|/tx through time. They are often rather simple to implement, consisting only of delay, scaling, and summing. The only little trick is picking the right scaling |/to coefficients|/tx ahead of time to get your desired results. Also see |/su MUSE107.PDF|1|/muse107 for a more detailed design example. |h |/su Equally Tempered Music|/assycb |j\320|1 There is only |/to one|/tx magic combination of 8-bit data values that can give you the equally tempered music scale without generating at least one sour note. This is the magic sequence |/to 116-123-130-138-146-155-164- |/to 174-184-195-207-219-232|/tx . Also see my |/su CMOS Cookbook|1|/cmoscb for further details. |h |/su Fractal Ferns|1|/psinscrt |j\320|1 These fantastic self-replicating, self-repeating, and self-scaling patterns assert themselves often in nature. With coastlines and mountains being typical. Curiously, |/to the shorter the ruler you use to measure a coastline, the |/to longer it gets!|/tx As per Mandelbrot and company. And |/su the fern|1|/thefern is by far the most simple and spectacular demo. Also see our |/su PostScript|1|/post01 library. Especially our fern |/su Fractal Image Converter|1|/fern2img .) cl startnewpage (|/su Pseudorandom Number Generators|1|/atg1 |j\320|1 Otherwise known as |/to noise that repeats|/tx , these are made from long shift registers with carefully selected feedback taps. Any short sequence of output numbers appears to behave pretty much like truly random output. (See |/to Ask the Guru 1|/tx in the linked archive.) Lots more in my |/su Apple Assembly Cookbook|1|/assycb and my |/su CMOS Cookbook|1|/cmoscb . |h |/su Cubic Splines|1|/cubic01 |j\320|1 These efficiently generate smooth continuous curves from very sparse control data points. They get used for everything from |/su PostScript Fonts|1|/aafont01 to computer graphics |/su to machine tool cutting paths|1|/flut01 . One popular form is called a |/to Bezier|1|/tx curve. An |/su Intro Tutorial|1|/hack62 is found here. |h |/su Active Filters|1|/activecb |j\320|1 By making a subtle change in the math of classic active filters, new "equal component value" designs evolve that are much easier to use and separate their frequency and damping determining elements. These use opamps to replace inductors and are extremely versatile. |h |/su n-connectedness|1|/muse152 |j\320|1 Some simple yet subtle math shows you |/to how to connect |/to everything to everything else|/tx . And has extremely diverse uses from letting a microcomputer port drive a surprisingly high number of different LEDS to unusual "string art" to web usage patterns to explaining why organizations become unwieldy even if only a few new members are added. |h |/su Binary Chain Codes|1|/chaincode |j\320|1 These unusual sequences have the unique property that a short sample of them reveals that sample's |/to position|/tx in the entire code. Leading to all sorts of robotic and automation absolute position sensing apps. Chain codes often close on themselves for continuous sequencing. Only an |/to n|/tx bit sample is needed to find where you are in a code of length |/to 2|8n|/tx . |h |/su Wavelets|1|/wave01 |j\320|1 Wavelets are an exceptionally powerful new math tool. One causing revolutionary developments in most everything from cardiology through seismology. But most significantly to new methods of video and still picture compression. Wavelets can uniquely supply both the big picture and fine detail at the same time. Here's an |/su intro|1|/emergop2 . |h |/su Basis Functions|1|/basis |j\320|1 Also known as |/to Bernstein Polynomials|/tx or |/to high resolution |/to cubic splines|/tx , these are the secret to changing the size or distorting an image. And doing so without artifacts and actually |/to improving|/tx the final appearance. Extensive use examples |/su here|1|/swingtlt and |/su here|1|/imagimag . |h |/su Binomial Coefficients|1|/muse102 |j\320|1 These see lots of statistical use such as "How many combinations of six coins are there that will have two heads and four tails?" And sure got important in my earlier |/su Magic Sinewave|1|/magsn01 work where the question in disguise was "How many six bit words are there with only two ones in them? Per this |/su example|1|/onesword . |h |/su Breshenham's Algorithm|1|/vectstep |j\320|1 Converting from vectors to steps is important for everything from rasterizing computer graphics to |/su generating machine tool paths|1|/flut01 . One of the most fundamental graphic routines. ) cl startnewpage (|/su Shuffling right along|1|/muse152 |j\320|1 There's a subtle gotcha in the "obvious" shuffling algorithm that introduces bias errors. Here's the correct way to, say, shuffle a deck of cards or |/su rotate the position|1|/bouncy of |/su advertising banners|1|/advt01 . More sourcecode |/su here|1|/assycb . |h |/su Nonlinear Graphic Transformations|1|/vectstep |j\320|1 Remapping of ordinary graphics onto unusual shapes has all sorts of interesting uses. The real biggie here is perspective, but other examples include spherical, cylindrical, rootbeer, scribble, isometric, glyph path, and star wars transforms. Lots of additional examples |/su here|1|/pssecrets . |h |/su Chebycheff Polynomials|1|/muse151 |j\320|1 These are simply a fancy way to manipulate trig multi angle identities. As such, they see all sorts of interesting uses in everything from my |/su Magic Sinewves|1|/magsn01 (see below) to |/su Active Filters|1|/activecb . They are surprisingly simple to generate, and often produce the "best" of all possible solutions. |h |/su Image Correction|1|/aafont01 |j\320|1 By selectively lengthening or shortening a |/su bitmap|1|/expbmp pixel line, |/su image distortion|1|/swingtlt can be either eliminated or enhanced. Similarly, by |/su comparing|/dodgebur |/su individual bitmap pixels|1|/dodgebur against a |/to mask|/tx , adjustments can be made in brightness, contrast, gamma, hue, knockout, or |/su transparency|1|/pstrans . |h |/su Fibonacci's Sunflowers|1|/muse89 |j\320|1 The numeric sequence |/to 1-2-3-5-8-13-21-34-55-89\274|/tx occurs repeatedly in nature, since things tend to expand or contract in proportion to their present size. Tutorial and sourcecode shows how to draw sunflower-like patterns in |/su PostScript|1|/post01 using an incredibly magic angle of |/to 138.58776|/tx degrees. |h |/su Gaussian Elimination|1|/muse89 |j\320|1 This is a standard method to solve |/to n|/tx linear equations in |/to n|/tx unknowns, and is based on zeroing certain matrix values and making others unity. Such rearrangements ultimately let the answers pop out by inspection. It largely replaces older |/su Determinant|1|/muse106 methods. |h |/su Fourier Series|1|/muse90 |j\320|1 Relating time to frequency is crucial for advanced engineering analysis. The most profound and fundamental tool for this is the |/to classic Fourier |/to Series|/tx and its newer |/to Discrete Fourier Transform|/tx and |/to Fast Fourier Transforms|/tx . Extensively used for the |/su analysis|1|/ggsigview of our |/su Magic Sinewaves|1|/magsn01 discussed below. |h |/su RMS Power Calculations|1|/muse112 |j\320|1 Until recently, low cost methods of measuring true electronic power of unusual waveforms did not exist at all. Which led to all sorts of |/su "not even wrong"|1|/pseudo01 claims about circuit |/su energy efficiency|1|/energfun and |/su "overunity"|1|/bashpseu hogwash. Additional info is also found |/su here|1|/muse113 and consulting services |/su here|1|/info01 . |h |/su Heap Sorting|1|/heapsort |j\320|1 The heapsort data structure comes remarkable close to looking exactly like a pile of cowshit. But this arcane and hard to understand algorithm sorts high quantity items much faster than |/su conventional approaches|1|/presort . Growing at |/to n|jlog|j(n)|/tx rather than |/to (n)|82|1|/tx . |h |/su Taylor Series|1|/muse148 |j\320|1 This math tool is most useful to create or eliminate nonlinearities. It approximates a real-world response with a level, a slope, a parabola, a cubic, and as many additional terms as are needed. Also useful to |/su draw a curve through|/powerfit |/su n data points|1|/powerfit . |h ) cl startnewpage (|c The |jMagic |jSinewave |jTimeline |d My |/su Magic Sinewave|1|/magsn01 story starts in 1981 with a 6502 programming class I was teaching at |/to EAC|/tx . I had encouraged several students to try and feed long binary sequences to an |/to Apple IIe|/tx speaker to see if they couldn't get |/su anything interesting|1|/assycb out of the two-state speaker in the way of nice sounding timbers or even chords. |h Every once in a while, a fairly pure low tone would come out that only had minor buzz or whine on top of it. Which got me to thinking about whether conventional digital sinewave synthesis could somehow be improved. |h I felt that an ideal digital sinewave synthesizer for power electronics should\274 |6|/shiftin |/aqua |/burplebox9.5 |/staytint1 |h \267 Offer lots of precisely controllable amplitudes. |h \267 Be totally digital and low end microcontroller friendly. |h \267 Completely zero out as many low harmonics as desired. |h \267 Use the fewest switching events for highest efficiency. |h \267 Have no harmonics stronger than the fundamental. |h \267 Include an optional |/su three phase|/deltams1 |/to compatibility. |h |1|/shiftout |/aqua |/black Such a selection of |/su Magic Sinewaves|1|/magsn01 would be enormously useful to dramatically improve the |/su energy efficiency|1|/energfun of ac induction motors, electric vehicles, pv solar panels, power quality conditioning, brushless servo motors, telecomm, battery inverters, and aerospace power. As per |/su this tutorial|1|/msintro1 . |h I first started off by "brute force" investigating |/to all of the possible|/tx shorter binary sequences. Not surprisingly, things got rather ugly beyond |/to n=32|/tx with its |/to over |/to four billion|/tx states to be explored. Shorter sequences did give an occasionally useful amplitude with somewhat decent close in harmonics. But these were very few and far between. |h Ferinstance, there are only |/to nine|/tx useful 30-bit words of differing amplitudes having no third or fifth harmonic. From over a billion possible total words. All of which strongly suggested that |/to very long|/tx binary sequences would be needed if anything new was going to be discovered. A choice of a 420 bit word seemed to lead to several interesting possibilities. By using quarter wave symmetry, we'd only have to work with a mere 105 bits per quarter. |h And 105 happens to be the product of |/to 3|/tx , |/to 5|/tx , and |/to 7|/tx . Which suggests that we should be able to find lots of solutions having none of these harmonics present. Nor any of their 9, 15, 21\274 product harmonics. We can write 35 bit equations that force the third harmonic to zero. And 21 bit equations that force the fifth to zero. And 15 bit equations that force our seventh to zero. ) cl startnewpage (These 71 equations force certain bits to be |/to dependent|/tx on one another. Which means we can get down around |/to 105|j-|j71|j=|j34|/tx independent bits that we'll have to exhaustively search. |h Fortunately, there are some other tricks we can pull. We are dealing with |/to binary|/tx numbers here. If |/to k = w + x + y + z|/tx and w through z are in binary, then k can only assume |/to sixteen|/tx different values. Further, if k is also binary, it can only assume the |/to five|/tx values of |/to 0|j+|j0|j+|j0|j+|j0, 0|j+|j0|j+|j0|j+|j1, 0|j+|j0|j+|j1|j+0, 0|j+|j1|j+|j0|j+|j0|/tx or |/to 1|j+|j0|j+|j0|j+|j0|/tx . |h All of which fairly quickly gets you down to only a few thousand sequences to explore. I picked out the best hundred of these and |/su published them all|1|/sinquest in |/su Circuit|/askguru |/su Cellar|1|/askguru back in early 1997. |h While these sequences sure seemed interesting at the time, they remained far from optimal. Because of their still having fairly high distortion, way too many efficiency-robbing switching transitions, high amplitude jitter, several missing values, strong filtering requirements, and fairly high storage needs. |h |c The |jDripping |jStalactite |d So, I doggedly continued exhaustively exploring higher bit lengths. 768 bits seemed to have some advantages. But it still gave only erratic and mediocre results at best. At that point, I decided to focus on |/to contiguous|/tx groups of ones that gave |/to fewer|/tx pulses and thus higher efficiency. This also vastly reduced the patterns to be explored. |h Why higher efficiency? Because the fewer the switching events, the fewer the dynamic switching losses. These dynamic losses typically account for around |/to one-half|/tx of the total controller losses in most power electronics systems. |h I also created a mythical |/to minimum visual pollution theorem|/tx guideline. One that said that if a pulse pattern didn't "look" nice and sinewaveish, then it probably wasn't worth bothering over. Thus, you reasonably would expect pulses to get consistently |/to wider|/tx as they approached 90 degrees of a sinewave quadrant. And you would expect them to be pretty much evenly spaced as well. |h This theorem ended up getting slightly violated later on with our |/su delta friendly|1|/deltams1 magic sinewaves, but at this point it was a useful guideline. And again very much reduced the patterns to be tested. |h By working in |/to quadrants|/tx , all even harmonics and any dc term could automatically be eliminated. The number of states to be explored got further reduced. A full sinewave thus is created by |/to mirroring|/tx the quadrant for the first half cycle, and both |/to mirroring|/tx and |/to flipping|/tx for the second. |h Working by quadrants also greatly reduces the storage needs for each amplitude value. Ultimately, as few as five to eight 8-bit stored values were required for each amplitude. Thus easily fitting inside a smaller microcomputer. ) cl startnewpage (As the various bit patterns were tried, a consistent data structure kept showing up. One that looked exactly like a |/to dripping stalactite|/tx \274 |/figureoneauto Each dot represented the distortion and amplitude gotten from a single trial of selected pulse positions. At the time, I did not have the faintest clue |/to why|/tx such an unusual shape was evolving. But, as a |/su caver|1|/nss , I knew a lot about stalactites. |h Much later it became obvious that we were looking at necessary |/su quantization|/msquant |/su errors|1|/msquant . Caused by whole integer approximations to needed exact values. |h At any rate, two features of the stalactites became apparent: There were often |/to drips|/tx at the bottom that were consistently a lot better than the rest of the gang. |h "Better" being lower distortion and closer to the target amplitude. Repeated careful testing revealed that, yes, these were real. And, the missing |/to tip|/tx of the stalactite seemed to "point" to a yet-to-be-discovered super duper |/to zero|/tx distortion result. Our holy grail. |h It seemed that if any |/su magic solutions|1|/magsn01 were to ultimately be found, they would involve |/to extremely long|/tx binary words. Our current production |/su evaluation chips|1|/mschips typically use binary words of |/to 41,664|/tx bits and even higher! Clearly, the "filtered exhaustive search" method that got us this far wasn't going to hack it. |h So, I tried a different tack and temporarily "went analog". I grabbed one of the most promising drips and then tried to optimize it. At the time, I was hoping for nothing more than a decibel or two of improvement at best. I went with what I named my |/to "shake the box"|/tx scheme. |h In which I would take a pulse edge and make a |/to one-tenth|/tx degree change in its position, seeking an optimum. I'd then repeat for the other pulses. Followed by a |/to one-hundredth|/tx degree change and then a |/to one-thousandth|/tx degree change. I'd then continue till things did not get any better. |h This approach turned out to be identical to a standard math "tough equation" solving process called |/to Newton's Method|/tx \274 ) cl startnewpage (|6|/shiftin |/aqua |/burplebox8 |/staytint1 |h To solve a nasty math problem by Newton's Method, first guess at a good answer. Calculate that guess. |h Then make a small change in one of the variables to improve your results. Continue for all variables. |h Repeat with progressively smaller changes until you get acceptably close enough to a true solution. |h |1|/shiftout |/aqua |/black Lo and behold, doing so with the drips quickly lead to\274 |h |c The |j3:17 |jam |jEphitany |d Not only was the drip distortion reduced, but it disappeared entirely! Starting with seven pulses per quadrant, I ended up with astonishing low distortion levels for the first |/to twenty-six|/tx harmonics! |/to The holy grail was found!|/tx |h Or was it? |6|/shiftin |/red |/burplebox3 |/staytint1 |h Any time you find a "too good to be true" result, STOP IMMEDIATELY and TRY TO PROVE YOURSELF WRONG! |h |1|/shiftout |/aqua |/black I sent the result to another mathematician who agreed that this, against all odds, was real. So, it was off to the races. How many |/su Magic Sinewaves|1|/magsn01 were there? Were there better ones? Had we already achieved the best possible efficiency? |h It seemed way too early for any solid theory, so I started a brute force exploration. Similar to hunting for \274 |h |c Canyons |jin |jthe |jBajada |d I tried to visualize the |/su Magic Sinewave|1|/magsn01 space as terrain common to the Basin and Range desert Southwest. In which you had an upland sloping |/to bajada|/tx that was so heavily brush covered so you should not see very far. |h In the bajada were some deep canyons, and at the bottom of the deep canyons, streams representing a continuum of Magic Sinewave solutions. You would take a guess where to start and wander around till you found a canyon. Then you would descend to stream level. Finally, you would work up and down the stream, while extracting magic sinewaves of sequential amplitude values. |h The question was how many canyons were there and which were the very best? By taking our one drip solution and then simply fattening or shrinking the pulses slightly, a series of Magic Sinewaves of amplitudes 0 to 100 was quickly found. I ended up calling these the |/to normal|/tx series. |h ) cl startnewpage (I next tried to improve my exploration tools. I was up against the 32 bit math limit of the |/su PostScript|1|/post01 analysis utilities I was using, so I created some |/su JavaScript|/magsn01 |/su calculators|1|/magsn01 that were both more interactive and had 64 bit math precision. |h This additional eight or so decimal places of "daylight" reduced the "zero" values so low that only the fussiest of mathematicians could object that these were not "proven" true zero solutions. An engineer, of course, would shrug this off as "What else could they be?". |h Moving the pulse guesses towards 90 degrees found a whole new "canyon" and a new class of magic sinewaves with an even more amazing property: |/to Two more |/to harmonics were zeroed!|/tx Seven pulses per quadrant zeroed out the first |/to twenty |/to eight|/tx harmonics! I called these the |/to best efficiency|/tx series and strongly believe that |/to none more efficient exist or are possible|/tx . |h With "efficiency" in this case being defined as |/to the maximum number of zeroed |/to harmonics for the minimum number of pulse edges.|/tx |h This once again seemed "too good to be true". Because a sampled data system of |/to n|/tx events per cycle tends to have strong odd harmonics at |/to n|j-|j1|/tx and |/to n|j+|j1|/tx . But the mystery was resolved with some smoke and mirrors: Two "invisible" pulses of zero width and |/to zero energy|/tx were really present at 0 and 180 degrees. You actually had 7-1/2 pulses per quadrant and 30 pulses per cycle total. But could pretend two of the pulses simply weren't there! |h |c "Best Efficiency" Properties |d While I still didn't yet have the exact math for the best efficiency magic sinewaves of |/to n|/tx pulses per quadrant, their properties could easily be stated\274 |6|/shiftin |/aqua |/burplebox13 |/staytint1 |h The waveform appears somewhat similar to a 100 percent pulsewidth modulated carrier of frequency 4n. |h The first 4n harmonics are ZERO with a true solution and very low when quantized to properly chosen integers. |h The first two uncontrolled harmonics at 4n|j+|j1 and 4n|j+|j3 are large but never larger than the fundamental. |h Higher harmonics are quite low in energy and very high in frequency. Spectrum is thus spread out for separation. |h Each and every pulse edge performs ONE useful task, thus guaranteeing the highest possible efficiency. |h |1|/shiftout |/aqua |/black A intro summary of additional properties is |/su found here|1|/msintro1 . A tutorial of these findings also |/su appears here|1|/stepsynt . Along with evaluation chips |/su here|1|/mschips . ) cl startnewpage /squash1 {1.3 0 translate 0.85 1 scale} store % trick to fit equations /unsquash1 {1 0.85 div 1 scale -1.3 0 translate} store (Other |/su Magic Sinewaves|1|/magsn01 were found and explored. By sharing one wider pulse at 90 and 270 degrees, you could create a class of |/to bridged|/tx magic sinewaves. |h More important were |/su Delta Friendly|1|/deltams1 magic sinewaves that were fully three phase compatible. Three phase power requires that all triad harmonics be zero and that only three half bridge drivers be used if rewiring is to be avoided. |h Special and rather arcane tricks are needed to lock |/to pairs|/tx of pulse edges together. The bottom line is that |/to highly useful three phase solutions exist.|/tx They only zero out |/to 3n/4|/tx harmonics compared to the |/to 4n|/tx of a best efficiency solution. But they analyze |/to much|/tx faster and need only |/to one half|/tx of the storage words per amplitude. |h The early |/su JavaScript calculators|1|/magsn01 tended to be rather slow on longer sequences, so they were modified to calculate only |/to differential changes|/tx rather than doing a full |/su Fourier Series|1|/hack64 for each and every box shaking. |h This resulted in a dramatic speedup. Solutions to 384 pulses have been posted to |/su my website|1|/tinaja . Counts beyond 1000 pulses per cycle seem possible. Ultra long sequences might ease filtering and audio whine at the cost of extra switching losses and extra storage. Yet still be significantly more efficient than classic PWM. |h Rewriting the calculators for each new length got to be painful, so I wrote a new |/su PostScript program that generates JavaScript programs!|1|/strconv More details on this per our |/su consulting services|1|/msinprop . |h At this point, it was time to start thinking about switching from analysis to synthesis. And at long last looking into the actual\274 |h |c Magic |jSinewave |jMath |jEquations |d Equations for a seven pulse per quadrant best efficiency magic sinewave are\274 |6|/shiftin |/aqua |/burplebox15 |/staytint1 |/squash1 |h cos|j( 1*p1s )|j-|jcos|j(1* p1e )|j+|j\274|j+|jcos|j( 1*p7s )|j-|jcos|j( 1*p7e ) = ampl|j*|jpi/4 cos|j( 3*p1s )|j-|jcos|j( 3*p1e )|j+|j\274|j+|jcos|j( 3*p7s )|j-|jcos|j( 3*p7e ) = 0 cos|j( 5*p1s )|j-|jcos|j( 5*p1e )|j+|j\274|j+|jcos|j( 5*p7s )|j-|jcos|j( 5*p7e ) = 0 cos|j( 7*p1s )|j-|jcos|j( 7*p1e )|j+|j\274|j+|jcos|j( 7*p7s )|j-|jcos|j( 3*p7e ) = 0 cos|j( 9*p1s )|j-|jcos|j( 9*p1e )|j+|j\274|j+|jcos|j( 9*p7s )|j-|jcos|j( 3*p7e ) = 0 cos|j(11*p1s)|j-|jcos|j(11*p1e)|j+|j\274|j+|jcos|j(11*p7s)|j-|jcos|j(11*p7e)|j = 0 cos|j(13*p1s)|j-|jcos|j(13*p1e)|j+|j\274|j+|jcos|j(13*p7s)|j-|jcos|j(13*p7e)|j = 0 cos|j(15*p1s)|j-|jcos|j(15*p1e)|j+|j\274|j+|jcos|j(15*p7s)|j-|jcos|j(15*p7e)|j = 0 cos|j(17*p1s)|j-|jcos|j(17*p1e)|j+|j\274|j+|jcos|j(17*p7s)|j-|jcos|j(17*p7e)|j = 0 cos|j(19*p1s)|j-|jcos|j(19*p1e)|j+|j\274|j+|jcos|j(19*p7s)|j-|jcos|j(19*p7e)|j = 0 cos|j(21*p1s)|j-|jcos|j(21*p1e)|j+|j\274|j+|jcos|j(21*p7s)|j-|jcos|j(21*p7e)|j = 0 cos|j(23*p1s)|j-|jcos|j(23*p1e)|j+|j\274|j+|jcos|j(23*p7s)|j-|jcos|j(23*p7e)|j = 0 cos|j(25*p1s)|j-|jcos|j(25*p1e)|j+|j\274|j+|jcos|j(25*p7s)|j-|jcos|j(25*p7e)|j = 0 cos|j(27*p1s)|j-|jcos|j(27*p1e)|j+|j\274|j+|jcos|j(27*p7s)|j-|jcos|j(27*p7e)|j = 0 |1|/unsquash1 |/shiftout |/aqua |/black ) cl startnewpage /overstrikechar (-) store % fake an omega? /overstrikeht 0.11 store % dash already has some height (Our first equation sets the fundamental amplitude, while the rest of the equations zero out the total harmonic distortion through the first |/to 4n|/tx harmonics. My "shake the box" or |/to Newton's Method|/tx works just fine for an iterative solution. |h One tiny detail: You may get a slightly wrong amplitude on your first pass. Simply repeat with an adjusted amplitude request. For instance, if you want |/to 0.400|/tx and get |/to 0.396|/tx , try again asking for |/to 0.404|/tx . The process usually will rapidly converge. |h We see that we have fourteen equations in fourteen unknowns. Thus\274 |6|/shiftin |/aqua |/burplebox3.5 |/staytint1 |/squash1 |h Each pulse edge (indirectly) performs ONE useful task. |h Maximum harmonics are zeroed by minimum pulse edges. |h |1|/unsquash1 |/shiftout |/aqua |/black You could think of one pulse edge variable as (indirectly) setting the amplitude and the other thirteen pulse edge variables as zeroing out all the odd harmonics |/to 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25,|/tx and |/to 27|/tx . And all the even harmonics are eliminated by way of quadrant symmetry. Apparently giving us the |/to best possible |/tx energy efficiency solution|/tx to low harmonic elimination. |h We might ask an obvious question here: Wouldn't it have been simpler and two decades faster to just write and solve these equations in the first place? |h Well, applied math sometimes does not work out that way. There was not the least reason to suspect that |/to any|/tx solutions existed at all to the above equations. Let alone ones that would lead to a major breakthrough in |/su energy efficiency|1|/energfun . |h |c Digging |jDeeper |d It can be useful to try and |/to transform|/tx our above equations into other forms. This might give us insight into what is really coming down, might get us a step closer to actually proving that no more efficient |/su Magic Sinewave|1|/msinprop solutions exist, or may let us try to solve our equations using some fast non-iterative method. |h We seem to have fourteen nonlinear trigonometric multiple angle equations in fourteen unknowns. The ugliest feature of this nasty mess is obviously the multiple angle part. Any trig book should give us a few |/to identities|/tx such as\274 |6|/shiftin |/aqua |/burplebox3.5 |/staytint1 |h cos|j(|j30|o|j) = 4|jcos|j(0|o|j)|83|6 - 3|jcos|j(0|o|j) |h cos|j(|j50|o|j) = 16|jcos|j(0|o|j)|85|6 - 20|jcos|j(0|o|j)|83|6 + 5|jcos|j(0|o|j) |h |1|/shiftout |/aqua |/black These particular funny equations can be related to the |/to first kind Chebycheff |/to Polynomials|/tx . They get rid of the multiple trig angles by replacing them with fundamental angle equations. More detail on the process |/su appears here|1|/stepsynt . |h ) cl startnewpage (Chebycheff Polynomials are widely used to solve all sorts of sticky problems, especially with |/su Active Filters|1|/activecb . They share this interesting property\274 |6|/shiftin |/aqua |/burplebox4.5 |/staytint1 |h When Chebycheff Polynomials are a good solution to a problem, they often can be proven the BEST POSSIBLE. |h Thus driving the Cheby to the Leby. |h |1|/shiftout |/aqua |/black Once you are down to the single angle equations, you can then use |/to x = cos|j0|o|/tx to |/to eliminate all the trig entirely!|/tx And doing so does lead to some profoundly "bare metal" power equations. Per |/su these details|1|/stepsynt . |h Unfortunately, the "bare metal" power equations seem to be even harder to solve than our above trig equations. Despite their |/su elegant simplicity|1|/elesimp . |h The odds seem very high that a best efficiency |/su Magic Sinewave|1|/msinprop is in fact the most efficient at maximizing zeroed harmonics for minimum pulse edges. And that a simple "closed form" direct solution to the underlying math is very unlikely. |h Tools to analyze Magic Sinewave spectra can be |/su found here|1|/ggsigview . Along with a full development proposal |/su here|1|/msinprop . And evaluation chips |/su here|1|/mschips . |h |c The |jWhole |jGang |d To wrap things up, let's see if we can't coax a color coded bunch of dripping stalactites to pose for a group portrait\274 |/figuretwoauto The number of stalactites is set by the |/to fastest changing|/tx variable. In this |/su Delta|/deltams1 |/su Friendly|1|/deltams1 example, pulse edges |/to P2S - P1E|/tx will have the fastest rate of change. |h The |/su rate of variable change|1|/vismagsn (and your best achievable distortions) in turn will be decided by how finely you are |/su quantizing|1|/msquant as set by your clock cycles to output cycles ratio. As you can see, the stalactites will combine into a selectable continuum of "good" and "best" values. |h ) cl startnewpage (In this particular |/su three phase|1|/deltams1 example, the value chosen for amplitude 0.53 gave a total |/to unfiltered|/tx 2-22 harmonic distortion of just over |/to 0.06|/tx percent. Harmonics 2 through 22 were all a minimum of -65 decibels down from the fundamental. Most were |/to much|/tx lower. Per this |/su Analysis Tool|1|/ggsigview . |h Those mysterious "drips" are simply the best available quantized approximation to a perfect |/su Magic Sinewave|1|/magsn01 solution! For the highest possible |/su Energy Efficiency|1|/energfun . |h |c For More Help |d Additional "fun with numbers" applied math resources appear in our |/su Math Stuff|1|/math01 and |/su Tech Musings|1|/muse01 libraries. |/su Custom Assistance|1|/info01 is also available. |h Our |/su Magic Sinewave|1|/magsn01 library holds bunches of additional |/su energy efficiency|1|/energfun breakthrough support. Including these two intros |/su here|1|/msintro1 and |/su here|1|/deltams1 , a development proposal |/su here|1|/msinprop , a tutorial |/su here|1|/stepsynt , visualizations |/su here|1|/vismagsn , jitter and distortion analysis |/su here|1|/msquant , lots of calculators |/su here|1|/magsn01 , seminars & workshops |/su here|1|/info01 , analysis tools |/su here|1|/ggsigview , and our latest release of evaluation chips |/su here|1|/mschips . |h The |/to MS28D-04X|/tx magic sinewave chips are newly available at $19.63 each plus shipping. Sourcecode and one hour of consulting is separately available for $89 additional. |h You can order your samples and sourcecode |/su here|1|/maildon . They should also be shortly available on |/su eBay|1|/ebay . |h Licensing arrangements for your own chip production using our sourcecode or any of its derivatives or variants are available and are quite reasonably priced. You can |/su email me|1|/maildon for further details. |h Additional |/su Magic Sinewave|1|/magsn01 services, programming, seminars, training and project development are available |/su here|1|/msinprop and |/su here|1|/maildon . |h Further |/surl |6GuruGrams|1|/gurgrm01 columns await your ongoing support as a |/surl |6Synergetics|/advt01 |/su Partner|1|/advt01 . ) cl startnewpage %%%%%%%%%%%%%%%%%%%% % EOF