aboutsummaryrefslogtreecommitdiff
path: root/vendor/cfitsio/cfitsio.ps
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/cfitsio/cfitsio.ps')
-rw-r--r--vendor/cfitsio/cfitsio.ps15233
1 files changed, 15233 insertions, 0 deletions
diff --git a/vendor/cfitsio/cfitsio.ps b/vendor/cfitsio/cfitsio.ps
new file mode 100644
index 00000000..44d8a1f0
--- /dev/null
+++ b/vendor/cfitsio/cfitsio.ps
@@ -0,0 +1,15233 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.96.1 Copyright 2007 Radical Eye Software
+%%Title: cfitsio.dvi
+%%CreationDate: Wed Jul 18 13:51:13 2012
+%%Pages: 188
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: CMBX12 CMR12 CMR10 CMBX10 CMSL10 CMTT10 CMSY10 CMMI10
+%%+ CMTI10
+%%DocumentPaperSizes: Letter
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -o cfitsio.ps cfitsio.dvi
+%DVIPSParameters: dpi=600
+%DVIPSSource: TeX output 2012.07.18:1350
+%%BeginProcSet: tex.pro 0 0
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
+/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
+setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
+restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: texps.pro 0 0
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
+ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
+pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
+div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
+/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
+definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
+sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
+mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
+exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
+forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
+end
+
+%%EndProcSet
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.1: CMTI10 1.00B
+%%CreationDate: 1992 Feb 19 19:56:16
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 68 /D put
+dup 72 /H put
+dup 85 /U put
+dup 97 /a put
+dup 98 /b put
+dup 101 /e put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+readonly def
+/FontBBox{-163 -250 1146 969}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F
+21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6
+06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF
+55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5
+B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86
+0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9
+1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961
+7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A
+7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402
+356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B
+19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2
+C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F
+244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B
+AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95
+5C43C8942435D0AAA3D9055FF808F2C3C887A3C469BBD98F026D0A59E26BA9F9
+C2144CFE49A9AD892D4D31764F0AE3A10644AE3966B0A790684B14D11FA49785
+EC5565D2B2E584CBFD85125F3FAC133338DE35361943DCE9AF05FCF2840CE512
+998D42CBEC52B57B79DD63F00985881E8463396ADA47189A94DDF951A78866F0
+B8A3D9197E39335277EF2294308DA70065D910943A34F7D5F2090FB4AA42ED70
+CBA469A9F64B95A6FBA4BC89DBC93765E3AE4723162DF3F9D6BDE77DD5870ADE
+C8900D6346957B84C3CE88A8F9A12D46B8FCA50DF4433B0B8AED6A63B3DA102B
+6DF94E62408E24154BAAC66B2B249C695BC0FA37A28699D9C0F3EE94AA32E3C5
+8F8D7F803B5D25014D43A353D719B14B247A87898A960DF68C0C0BAF70C83917
+6E9F7B3ACC64DBAEF3FDCD3A80C0AB907EE342E543D607556CBE5A9089B86D1D
+E768F27D74A613F3ABF883222A8596B542EBF54E9DCE327B5682AEE5F6BCC38A
+2A052EC4018AE3189DC1963BA39ACDED8F0C60C83F8873FBBF0302010956C520
+A7F3F8ECD0F177EDF5F4D5522C5984A3678FF32EEEB570B69C142AB89467641F
+917155D646DAF3352E27BF2AA0746E062E48532256AF364EFC0F0AAE3766F75C
+5219ABA60BDFF177558536E000DE3263A4A6EAAA669F9F4E94BAB336391AF5FB
+280A5B39995483E788CE4820EF77AECD73B1AE89DAC3F13E333F2628CDBA431D
+2A5E547D4225E6BE13119660BEBC155823A51477647F7E07A23D7D24353F584B
+2B311C4529E0E408B4E89A467BC03794CF4E7AA0A717A8247D5B60F438417D01
+8155F17E09D4C4FECED18CE574D6849640E5E0592D771F026BCB0CE66FD13BC9
+5A89D07EE26021FD5DF14B96AEDC02AEC3E099088C1DAE4FCA2AE841B17F5C4A
+D251FB56462CF050AD3CA84DA12DC1D17F80301CCFDE6C35C81FA538A389E0B6
+8BFF0DDC4B97D49B485E8C6AF47F951C042D2C750748B4084B3F4AC18488EEC2
+900A9672A6CA2B06A0F091E8DD9DFE504A5C6DF1537AE7F54DCFD94EF5CC663A
+A80E1C64CF1CD751D28858CDACA6F7CD0463A86619E87B9C03C9448B44537E78
+5E60A25045FBDBEE678737FA45F029D92908443C7BB9FC87B7B280C314F39A96
+B5287BA21CB3EBCF7816BC0900095F3F9F11D7774BC1D1D4A7F8098C610E3FB2
+C2E2E9D9DAAA6CD1EE4F35CE854B7C79DF8318CCC10C52DE36E4AC5D75ED7D8A
+DD4E8A3B827DC8A7D437DD38B782929EA60CAC4930F9711087DDC18574B472FA
+B40DEFFED99BE0C0CA85E9FA2028152C8B6423CB94E797E3651043BE9636109E
+87B70592852FD5198A7D340C0E1C419D0EBAEAF483300E41A6F6B1DFEAB071CD
+A4E0A596509369A4EDB66ABC883443FC615AFFA74C672922D263B5F64E861C6D
+C44E9C0BBBBA305C9AB04FAEB77E0C25C0D67F77639F6022D028847E796879D2
+B6C4AB4313FF3568E407784F1E00503A5875DC68464A720C8E55BCD80269B4DE
+B3C05D49DD15B581554B61E9D6313D47C39991582BECB1EF6E959CC64167DA7E
+F98EB7F130EE821FF04BB4842D3B8F23E81C4DB8C4B340EC9807DA0CC2627ABE
+9F1505EDA580A499BDC35E348CA6A15FB197597A5A3E519DF0B4749D5DC67B8E
+2D93EA98498CA6129C0993C0A6945A5137CB4A1B4B38A008B1559D719681E6AC
+09FAA1D2337E266FDC02D77AE822DC13724A0620C5ABFDA9402D3DD4DCB80CA5
+28F875133862164328A59F7E58E36CA06F23E651D8BBAA490D145F3788A30BA9
+C5389826A4B2F17E2B301BE89C464D9888C1E798744E815C44E68B94BABB8FC4
+2872E1AFBB63CA489FB1504926C84C5F8AC7E6A93942C3B0C3250EEFAFF70449
+3734AA4932BBF7B098C8287D8DD2F0E75F0F7B184BE5A24A6C9EF1C7CE86D58E
+1018668396EF8842609FD4C207CF3D818DA21AB4FB96EDEDF11905E15153D319
+93EF1A3297FB71AC25E9FEE544D66A2E6D94D147408033B1784D060EA8BD6807
+1A2194884CBEFD552D52B7B8B63A2A9A1DE5C4B437262091089497D10E4C1678
+52664B16F1FA71371BDF96D038FF88F695A02B7057DB4D97CC9AF8534518BE9E
+FCE87619AD6BDAFBE6EE8FDDE427D3CCD32E4143AB09B27F559E7727CEF7F39F
+DFB7E07E86E3512757E64C82D0FA29EB1E00E4F213B12679E2307BA8A363BBF6
+B3411F4C50A8E51A11D6716CB5431B6B941B5548FCA3C85B3829F7EC05D881DE
+4D2E994F6C815589CB4F5188A581FD9BE70E9D01E8F36BFBB5732F89DA7651FE
+9F20A732F94035BDAB79728D559647EBC1A386F7BB3489D59BCB048910AB9D2F
+38F9B3B9C0648A9AFA41B4089CE3EF93E7E8E5140532EFD745AE3F000502344B
+5030FC71BAC616EF9349D5C8B336FA9A3624E1D2DDBE5C596702F778FD9FA98F
+5899447510DDCDE2599939667F9831B6D06ED3CE3167D15F9C502EB035A05B86
+D4AA82D68A8511BFD3312250273545C5C4355629DFEE31B5A1B078BC2C805305
+22A3F4865F9C978C6E71A5F5C858E21CBA36053277190DB9D89A4B985FB916D8
+DEC338E997F3226EAFA917AA18C1C9B055BB82DDDD50FFE00B93DA5C9C662760
+7326F16E661443A6EDCCC04FF913605AD63E022EB96C7C9A7FA60E185073E163
+0A61ADC0E39B114BE69EAA874209C8713E765D017A8D727648B0340295D56C13
+34A95D3D2F40CF4CD2BBE527C433E09F00BC1BD5C7425E4DB2A17204F0B8DBA2
+82CA3F37C424FC07B69C89635DFB3971894E946D928802471C2B1C40F49701FB
+485186D20A803C0BA76DFED4ECB2446FF25258118E593CD1EBC8ACA718B5C9D6
+C4F5AC941B28716B10B283FED21A16C94E92C431BFB9C8AC3D3F1EF7DC46ACCC
+A82ACCE510A3F687AAEDC6839800F48AC96A5B81A97FE4F37CAA586969AB3D58
+001C8134BE160EEEDB79A780D2AA57BEEBD2FBCD9A453066B6642C459A679A84
+5E3FB8F50F7C00EFDE6049D2C01893750C5F60F2DC98FC36F2E656774123DFF3
+E4EEE44D085083365124889B3103DFA03F5A5648446BDDAC9FA40C69D83D2D4D
+0D6017D7D840A4F7CD97EFF126F48B331CAF5DE0856F689FD0FC450005793C8A
+74EC6BEF32FF405AA2F4F6ADF624E0C72CEF916ABD6BDB7C0AEECEA855F07AA7
+E5BE6F7DCCE459F4F390965C9350A3060825CE22CC25905FEEE40E4973C0189E
+5021FF9FC2EAB4301790F255B617638A2C44F4D71A74EE96DA5178A9296D388C
+0D43CD188C0F78D9A57D78EBE390A2BCCD0AC3087AF4A1273443795EF08D0F11
+ABEA3A173746C05E538D88FBC0A3A1DC82A762F951E63A135F63BC3B7E05B8E6
+B89DF17BD32E871FE1C967B5DA4FCB9187747B6A30B551B9C4FE920C34E40A8B
+E268ED41382AD1DED7E79D18469F58305CE1275C4AFBE4770BCD87D06D7101F7
+5EBF74D9F3AFF9608BE5736BF1B2B33B4B3E3C8CFD3A91CECDFCD7E0A4A586FC
+699EE79D7756E49DD686C65451A58BEDCF0FEED1B23EB408845391FEE74A3628
+11837485BDE72131D0EF7D0EDA3E23BCEFAFF9DC2616CBC8E52523EA157DF140
+9498280EB11F1C42B05BA5281F7ACE1BF40F74F3D5D61A6B852461013F773915
+0BA29094461022A1F1AD4B62CD619E6BDE7CA645914ABDFE87758C039B3C3848
+04BAF878C215BBC35A1D259B2CC21AA2B7C7B43165398CF37779B31190DC8526
+41E02F9361CA8E7750A39478DEAA823069009007B53FCBABBA40A98C90E603F0
+C76E3383938422548A9A49CD8D9CABEFEC5D9DB27F60303DE67AAC2E79EBE12E
+48A2D6B687A720D73169236DFE597514C656AACF348201B76008714FEB551241
+5F2C86E06820109386E5588A7E67651C1EA9422DE9307BEEED35E87B6B61F0DE
+3EE5C5B7FD94350FBB081378191539122C6A73939BA7D47AF08E54C5CC4553DA
+420E9680BA4B954D9BBE82A8FC559C86861760F9B24103493A26FB55E2DC7880
+5ABD36590011431ED606491093B769CA74AA6F8B91076D6D8368BB39D4C7B435
+CC461A9E9FBDB28772E51AC2C563DD42C4A87F7A544C8B6D10D5D2504F9A4BBD
+D4F1A5A6DF8278AB6F3B10214AD75FEB1B5E32801D2631983E2735BE149FAFA1
+560E57087EAEC3E45526DF9C748F42E6540CCB14DE6DD11509F3F1BD6D5B3BFD
+3D59D2EDB6235DEEE1A893F522497EC38CEED07774E8B23AFC381D6432B87015
+A586224B9EC36C4498624E5CF2E9BE61FBFF52F479F4CD12A717C0FCC19182B5
+A5A9F8D415472F4C61E8965AE972EDAC4A17776B6EC1132CE29D6396D2B01B6D
+BEBA1ABD3273C62B3475E2DB8B57E61208AC63BFF8CCE2BA085321FE0C9F874C
+A645C234812D75E9C5C02D0B0E13D57725D105724BB2C5A916F6E82D57D005F3
+9F6B1F041A2B9675AF901B171E6E896F5B8FC545BC88E183AC5E5F1B2288CC5C
+7351BAD140CBFA03F2FD18298551BDB15024BCBE844B418B067208EA0A13B731
+58747D1B90BB00E37FD7DF9FFAAC80DBDD92E1301DDF1ADE62ACBF169FBFD927
+AA84D56E00D02D5B8A34FE3D2B1AAC470336AA02062F42F2C958307142F7C6E7
+BD440AC8D8C6A46DFB2B42A32BFA4255A47F3CB3F0733F294EB47AA59DD26A03
+C81A4BD18162EFCB77F3BBEC3E8B225E76BA51DE178468B529D146A544180542
+6EAE3A451781F5E38DF15BB377C9FE92096E976AFC14DADD11581D29222948F9
+FE23D981CEE4E5013025FF3E69E479D32A7A8D25A842FB288A0EC63E23E297E0
+168D22FEC35E333A2D67A37A4EED7B59A06F21F44DC6831CAFA473E48A66EDB5
+00FEC1D5399A06F51A8A67A6803FE34C1B1F2E4CA8D7EA3CFA8BD046D477777A
+D283296A8F181D671CBA5B9793DE178BFAF807A6F71E4FC6D69CE7CFEF11D0B6
+F8B23221E627475226706C19EF519D19B80633DDBF4A1AD9E271E547CCC846B3
+859CD96E495D12E3D5557A309F12949ACF5F373A29C0FD4A6456C737E6F08BDE
+0A0C692D66BCE059ADB9B91F8F81975308ECB3313B34093E06462C9DA76A4BB2
+1D8DEB5E4526CF73DA4D9D5CC7148E5FBABDF1D45F024469B6D84BB607BA975F
+1F6EE627044A93D108427B6C14528B5C6D1568E65F3450D7F4A37EE34D619138
+8B7914C63A362737025C0E57F928AB5741CB79D137249914A3CEEC0DECFF639C
+0F6B8125C643EDA71F2945FC7DB555E4ED2896C49E83D4515B0DA9A72764C792
+9D6A72F18F15C71BB655DD64E421EFF712865D45D2642C7E63501F3289D589FB
+B983626C60523142AFBEADD4019BB3C4D9C6ADD66012D0CA6AAB374FCB7FF77E
+89BF30C153007F48E06EE2278BFF6F0C9AD9BCE6AF9A9171A58EA65CBA2A6A82
+E35D45980D84DE7D9199344686C8F08090DF43D0051C15C4E19A9D1C76E4686D
+7412DAE7F6EF4E86230C43187D1997E98010F6C8E5E8941DC837C6E73E9C0947
+AD2B9E8333BE73BF30D56C31E2B76DE3F6C841F42B109270CBE04D10A9D64CE9
+0FB722EC4FCC3F1EB7CCAA2C6C6B3D285D786DAC189F440F32057CFC882A6257
+3068C55D4470801D8E2D6B5972D30B54C54E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 62 /greater put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
+990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
+6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
+DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
+59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
+D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
+8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
+6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
+1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
+03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
+95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
+74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
+3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
+47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
+AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
+42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
+40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
+B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
+9560176676ABB71BBD0EE56B4CC492C0652750227CEC7B86E4740EB7B8775564
+332769DD30794E501BBB0E4E5CB665F3628E10B1137CC8BC5C0A64A310B5E27E
+5FD6E3B04DA3914C15987E638A72790AF4073CE9CDBF6E3C749CB4DFF9C54951
+A58C386C54BC4E98B102B5E91E8567D2EEEF048F2CBD5D243701D20909290B4B
+A3083F632D8552D42DEE0C69A4B14D8B15AA082DECC12B2ECAE6F663E6D09F81
+EE2979EF41FBF12C9D8BF23B77E0A20088EBD107C5BF9DD6F03FFC3AB65B69A7
+54953327E1D4AEF5A146273392BBDB321D4CC9A8FFFCFE5C515B466E21546CC7
+C6209E5A76F916B03DB98BC6CED334F33E7B373D42761696F5A876CA6F93F16E
+15A07E2E102148CA4F62A99C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 15 /bullet put
+dup 102 /braceleft put
+dup 103 /braceright put
+dup 106 /bar put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
+27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
+5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
+0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
+DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
+71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
+4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
+515DB70A8D4F6146FE068DC1E5DE8BC57030ACE57A0A31C99BEDB251A0ECAD78
+253AB321023D15FF7F55A3CE81514C1E7E76240C1FB36CD4874DDB761CC325F5
+D588700B294849D690F93526EF438A42B9B5B0508584EA3766D35F5B8D51C458
+ECB9FBD23A49576EAB06BACB7EA6D300985500835F4FE597D4A1110C8EABE6FC
+CE3E1F95CFD3A42446F25355381D476B2FFB6EF247BF58A6FFC5EC0E4CC207BE
+46485F8E07350B37DCA8C1864E62614332A1D3C9DEDDD6492181949A2C3498C9
+EC2A81C1F4FF989A4654E375F509D24D969B97D2A9940FAF43BBB286E08559C0
+F8D9674B0A294B36D3A050F7DED8C80E1D230812F6B8387B17948FD29FF050E2
+AAC5EBE5D96AFD0879534E2F4BB81613A1571750F9CF4215199F93813D815B5D
+1C79E11A0FCBB627CDE569F88C741CD502627777BB058ECAC09B6ACCFACA69B9
+8F8168B0B5A1A6EB13E884B348FBB2ACF9EB180F6E27D57F8503710CE037A34A
+F8B157201657C825E2A4B4A7696B58B7A988C05E43E66F0FF277A7694C555C54
+AFB1D32F6DE102136FC810E1F3B5CEA42476EAC7AAFB390E3252B2169DCDEE6E
+328507BD0E24734A85AAA263E0D2F64BE1607455BC855785BC27F8B30FE917B4
+23AB3C812975355942E955501AF85A3C0CE836911AF679EA44AD6A7D042A6549
+0C471FE294E8490024D93ADCADED460FAB7FBCDC29EFEBD2A9A127E11869E659
+961B29206CE63944B6FA4B9315BCC528EB1E0223CE94C795A5D5231A7FC8545D
+6B287B965F8EEDDB67A6774129DD01D5A21694ABE320BB2553043D4C42ACFF91
+1009372CB03381035BEEEEFD05631E026A0980A72A67B3703323A4E7C94FFCEE
+8D0B7407F9CCC043D3D184BEA4728385D6AB2FB0641DD8F5BA7E04035D30D628
+7E97D31C1486DFD5B1D076B84B4ABA4829ED4310321F1F24B847C44E00185A69
+37711A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 11 /ff put
+dup 12 /fi put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
+B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99
+AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26
+7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF
+20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390
+B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D
+68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809
+D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E
+26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D
+F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26
+77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299
+BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E
+C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8
+30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5
+148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C
+E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D
+E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23
+337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598
+0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6
+472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E
+A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26
+30F7B5CE2041568C18D8F66D36C31B003C916EC14620F67D695D846F2EF97CB8
+0D569CB47D8939FE3C0009749B48D0D9856FA050F2D1BEBE2DD68DDBFEAFC2ED
+7A7BA881DF4859A0F43EF10EF5DC41B5E82C630F2E3E435E37DCD10B63D3C96A
+38C0C5AAE886D864E24FDD862D6957C084CC4A39623629F00DA0F035DACFEF70
+4D8DF7C197095975D874B919691A7E03C56534645AB63E6B829038B435E1D2AC
+2ACA8A5E4C2DBD300F7C786A9C196539C8BE8A6FFCC109193E97455DBB0B9E55
+941992A110EA4BC1B01B59EA538E6AE0749C24D452C351F13B1F64EF2D199563
+F88F92BB8C6C8EF4ADC5ECDA3C2BD22CCF84431E43BC5A630332184CE06454E5
+0F3A369D5B7B134E0CF54E4804F28162048BA9B8A03FD837E2C37D146EB0F14E
+7DD93363EA5C819AC95F2C1501909E9F4B3A09CCF2C609F0A6EE86D340A19408
+6F985E999EAE40D936E3B0BF5D646941E5CE26E1AFAE1EF59329EA2E24EDBE17
+8B9F15CEC308AB6169A683CB3D56DE572DA21974D80181D7BCC09E8E08FFE441
+0F93897DC162D782209CC451E553232680F997451B1CB2D8AA0CBF5DBB7EF923
+1C7AA87DDE43C47B188B502C42FD3F47D73811469BC954267ADDAA9CD18D49D3
+2FB55FC5555338B4522F0A7309E487DBAE445E3FB3489EF7E396835B3FED2044
+5CCCAC17D69B0A1434958B658891E8AB16A992B77357BD4BD58A9251F50AB71C
+B930D4652578C79C77D9083C420C895C83660D7FE13611BC7ABE5014C7CB5E37
+62E71B7D3E215A8A7E51F9E4F3AAAB983FF93E49CBC1EFBBB2FD7150FA3E4745
+5F8FC1DFD4A245586A56DE187584046746119E1F5770D83B0785427BDA36111A
+881107BD4CDA253D2972687F010989B6FA7EED5836B377EA92906BFF453EA308
+B4BF3287D966E98262724C896177F042966FA9666CD0C628C648AD6D8CBD23B6
+6124005200490FB59E771E158055E93489A2D4D2447AF36988086AD21E8737E7
+37B21FF521B78B92B5DAB8685B1249B8E82915B06DE48E1979EAEB8E02952345
+53EA9181FD43C6F136FEE9286525F50ACC9236F602B542A36B51D511CE03EA9D
+7F4E668FE9B7BB18A828DDD511C9AD2AF80B1D2F3D895D262C5FB883B36A4407
+671EDDD228337CCE4DEEB68FFF6D46D9C87F577F60445962A97BD61549A5F2B4
+F70E95DCCE8DA63DFB836F5A7901110B51B950872C8AFEC0495F51691B13DB31
+B84E89B8C7E6D0132A26A348C2804887685803DB72B8C3223AB655830BCBAC24
+2A3E989E13C38FD950B03977C2DE7BC27392A24DB30AD71D26E0969AE9D637C4
+4247FF262AA189818067A8D3FE7F042E4DC47CF6D21504A9F06E440F79851826
+ACDC43F89F482C220786BD85AF276D394B8D523C7675F57BE80E28F29A81EA0C
+9875EE70C69D47EAF98963FC3DD370FC270A606BBD9FC16DC1B93B1179D810AC
+F634883A2661B3B2DD26E0C24A6D8B3AD223FDC7251296A614D88F8860EE5031
+7E5CFCC7233D3397830A27DE6E5306EB074FA6698087E86A8E1F144F43FD3937
+0006B492CB5455EBEF58A9AA34FE66F5FF36B04A7CFAFE68F490854E2ED08EC3
+1E5DA648A76CF178AFC6C05813E88E1C84D9AF826DC9583A04EFEEBFCC351B65
+1C79FF12BD7D2879D8F4521E448757B3B2B9E7265FCD9D57D24A633E04676DAB
+AC9B44A4406714856791692D23208139BC39147D57E4B1A9CC0CAFDBE4F2F6F8
+87315413CC58B8ADA31B15A17226AE0AC8F047F7C7D9550D820B23994438FACB
+CC4C65A302F033D1ABF788848EE63E6DF1590B586DF40050A800AB7E535963A9
+18CD7F6DA52414A4EBBEBC24B83F824C0B85C3BD21401722E16307553617B597
+0DBDEFE85B9086F522FDA0C43FB27C14CB9621C75D8254B05E24C87D754B347C
+C9BEA9F2BCA71B37E3F6A67B0879BD67E8509B5786DBB025AE6159A7CE5143C8
+0903EB0D6E6E40C36474093076EA17C554021D4C95A9B1AB6FDC30F5BAB2DC99
+CF5699757E036207867F75F7FF2266A806E6581724493EF360694831C58925BB
+E271C8202068A9B9EECEFF854DB4D744102A902B913A1770A2A628B9B85048AF
+697CB3CBEEF4F8064DC93E093A6D9637179265FD5ACDD5E3A9C406E8BE70F30D
+EDAF394FCB91BDA810D1C5E4B472F60E900DFEB45AAF82983A714E860548B737
+BBE318EEBEE76B2063CEF47D7FA895A0237BA314DBF4E3A589B0DA21BD79F475
+52E5F674985E38B21D07175B9CADCD3B5FF64E5A4ABC1D21D9E50B6C33A1828A
+05E23D11398E7B56C1F8C5636575AB08CAD336F2DC2F9418BB0FBCC0166C5D85
+FC062E82DC0E55C41C6C682ED75A78195C6FB552B19637B53467429726264132
+943CA57A8C30D1E31A67387B679827443A52C4557DB9DD719D9FEC539CA09D07
+47495060C8BFF195E7770D0B2F4DA353D7E755C853A7B9E9DDE5AED20A7DBECE
+8569A8D9E5AF4D15388D65A10D055DE7EBC2E295073A86D082C2FFB2CCA7206A
+7577BFD6E506D29F19452C3B2AF45D5531C0E1419B434F30ED32657A9DEE4C73
+604C3E5F239137F49958F5CA638964DB763BBDE618818BD4EB23E57F1B250D11
+B185093107056D2D4B6D53AD2BA245E121E3E206770CC01D0E07DDB5D00CF858
+48F23AD1CCC23C42DD9F25AEDF3029ECFD31821A734F83B7C9F94AF3E6EBDEB5
+686B484475F0AA7350856F9BFAFA0EEB9BFFA02E5CD0D8FDD562909539F89BA4
+505A45D79CD2E7587EFC5E579EDFAD3661ABA956C7AABC46DED840EE00370EEF
+87C3C48F109BF3FE0CCDD17E2B9974F817A08A8BEC4CDDEBC43F32F685F33D20
+F3106584C83714D82D494C4721400FB88D7E5FACB331DFAA524553B401184571
+E7F2C4F954D586D03F4685CA6ADC774B8E24FFCEF33094842A5F226E7D681B27
+330F84BE13747EACEC6CA5D94F7A2C2E9C47EDD05B163A1A25FF78361F3FEB44
+20D6BD2DE10AD0F093365AF1C00CC88D15443A21EEAC4EAF1F50D5ACA6ADCD81
+D39D91A142999F33FCE4DC572BE9FBEA9F0BFA142976F2BCA7A6897135AC6E7E
+D0435DABB724E2193489F87A87D54384B3CBA6395E7DE36AF07DB326C77AC61B
+C9CD52C77A5A82A27C19D32D18B6FC17C1E6D38044A9DB4BCEFD8E05C1B5042B
+4697173EA5ADCE6780871152B742AA7CEE0220663CC5C3AC3292C660FFF93286
+1E50DB297296156955D18DA85931CCC9AB9E0BE2157ADC1343066050C7B735FE
+130364B736F6521BC4560D44437C0D45427C207AB54F70E2FB9A0C2EA2436191
+0F87B91BD3596F690335206069FA66A6BB08DE89C799966DA5C9857AC2F1339E
+E6EFF63FCAF48D50CC130AA95B9B1EDE2DE8E19A98E9A8C93E2EBF60889081E2
+5C5D4C9AB8F800A784F1174595874A39239E74F3F5F8816E024F631CAF136E99
+39FF5D4F7FB5A4CDE1B57DA67AEABD4A41FFFA0AA4B210351EC5EEC22B857397
+9CC04CDAEA7D7FF4BB3C3D771AF80E630D7AB58097BDD1A037E40194452DDCD7
+376AE54B39206F76767460B9AD86530743BC63884C46F4577ADC62F19D38232F
+1D80EC752DA6B4C8455A26574DF01D2D9686B7E75F19BE1A5A8758AB7B827ACF
+0F8D395E6C18A6D591E01863DDB7BB7179FAB3F2C82D24F46151CFB8AE22F53F
+4177189C80B26FA893E006321BBC6D9AC9817A1FBE4918F8A1B8658C35AC32D5
+335531F4F907143CF7F190991DB7E243F4CE9199E6E46F26F16E00325C395670
+330829D5AEDEA76337D4A9AD1C3A30AA28E56B40019C0836B4FC6BC22097FE3E
+86175F36C3A5A879B9C700C50FFFFB6B7BE1361211E1D3F3BEB39A2267875463
+CDD79C44BEE54CC30F78BD48BC1D2B3C96C6D2D1D2A8484703C4727657E6C544
+C27C4ECFCB7090EC465D3E0C34BED015A0B017EA94FE7903C021580B83AA25A8
+307E13BE4FE137FD505749F447C2FF77F3039DDDFC476D9553BE3D3884E81C4C
+03123E78FFAE5151D3CBB0473CDB4F083AA5FB0B1BA99A3AD5F49AA87B73282B
+5084873CA47BAA9D1E0385C9D4EA3498AACECDF6A6A0EC09EE0520C9FDE792C3
+07FABCBCEC2B7474A6241099D6362C9436F32FBAF1D6CC11D933D4A64E0CB9E2
+0943E082F4335F23E7E2C719ABFB70D7C9F48C6B88E980CA8A980958A308E898
+BCC7C4E085167F33BC36349C0CC23B004C805DF196581DB0C551C2B53C82E948
+EFFC164541AD80E6014A723760ED548F3FB0C47F4459D855211824B04D28D3DC
+18E204F3A43C5F8D489920CAEBE3FB9800061827656FEC3C43BAA4219978FBFF
+85507FF60CD5020365D73914861254547B36171070053498052CA13E1CCE5C70
+B9ED44737D747DC28DA6FBB7791082C572BF8362C3D3E34FFB285AAFFBC1311B
+ADF12AF9444E47D85B0169E851C2C35D8D089A5ACF6A2E9C94085ACDE361FAD2
+B54B901EF8ADD09B1835B37CC6A5509872AE193541685EEA1EEA3770A1FD6318
+DD7328E8CC51F099858659BFAA708541AB9E21CF1632458164B5E8659F6C23C6
+88C0FFE47B820388404D0E9FE6CB06195BF2B2444582D4B7B38F45E18B604639
+A0750219065C18492E2CDEF4BF96E2222A5D11DA68C6765565F9DBDED8F95F3E
+7F2EB79DCE1C679D0743C5BDB832AD24C9B747AC4FA27D1279419E732DEEB543
+BEE45F538A500AE50151C16C81346B88AC63D707E50958536C3CAE834A27E77B
+AD95CEBDCE16FAB65DF308A0D34EF798078BF8FB0D03DFC782449C0BEDBC4AD2
+5FDDF493FBDA5CA3641F4392487887D324A047904B1E033027143232A40D5014
+DE1EB3E58C535A317733EA1D93C33A252CF750A9EEAEDF6313B9CE44373A288C
+EA8DF423F248E3DAE7DC96A211659305C9B97946AFDB3ACFA2B79F05CCD03E05
+2E372943C4F676BB72472D3EA1B0F566757FC5CFFF8F81F128995EEF12CBA8C3
+5C0450BFF4B9C68E93C1638A70509FB6BD34ABFD2C0B7C0A238E98FD8FBEACC1
+2539AA00D2B64D7C19AA45C3F1B17B9050546D751B2B346E19DE3359F02F5F1A
+893148BA91ED8BD68A0BD5657F0001DB75E71F2A0160A7DDC39C773EBFB10458
+A1BA0DA0CF4976AA41063B2FBE875FF0DA96FBAFD6AF0DF9652AA0EEBC1AA768
+087B8CDD4883A044694186BBA78043EF79007FFCBCCA9606B0C132BBCF835ED5
+2A7F459264147B460E5C9A487911146939166679E6A193A4AC979653DD2B8522
+F6EB14CDED27F108C47D32E25D40FCCDA830D38B4AAEC9C6CDB212A1D8012AD8
+17BDFEEDEA83194DB3369B8E0FF2BC5BF2FB83EDD20248820FEFB41278A7DC96
+D47B40E6EE3F85FF38642B9C52CFA1F85FEF0DE3637BEBB66C1BDB2A8ACACB97
+9CDABA4F994E1656812B0321D999339A2384E07D19388ACB8FB4A86FC98A2E73
+3809461D8681C619766696A02A9099445CF756A6BD1ED778A4909D36839F7E91
+153C0BC25297495E3EC490B189AA7C7B64480362764F6B89753B0EFEF35C86F4
+65122B04CB43675EBE03A3026F4212D521AD81FC3E2D3575B1C6BBDF35E54199
+0FAA02480892DAE8DEB52A4E1C8E5995A67D2B3652CAFC5FB0BB108A40019896
+664ED1974AD21CABA4279BCC7D2E3DBFE7A70087CCBEA75FC65218C5ADF0D174
+436BB02AAD79BF172589C03D0C1D4DECCD14F98AE90A86B4A7BEEC0F1CDF724E
+0912CCC14AEDB5EC8E297CE357ECFAA0CE69B16F93EF2B214AA9BE98DED441D8
+8DF022DD63C0AB8143A082073AE8FDD50DC7DD5BFF35F9BECE79C5188BF11056
+D8D61F9D5FB03CAEFB421682269D8F6DC6637F277E0C97D7639553644B59FA30
+DB3DF2B7B6633BA02AF683654FC048412F29BBA8872987BBF26FE15E4AAFD133
+E2A61425C364F7A22C201039D5D765C1B14A06C1FB3C2BDC517FD2D0CD1280DE
+6973B6365CB32BA2D5B60E1CA37398A37B7951E74D201140CC5DAE4FC0D66418
+751EDA5A7D77D6CC9B4ED206B36A8CD4061E848500B284F1EFC5BC73CA717354
+5F1C96C3B176937070F8DEDAC70ACA1504A0557C7BCE23A8FCD4E179AE4C3375
+2A3099C9FAB588A0A47FA213030117F9455907169F00302E592A6B2D97CDF3F0
+E0441B0DB0FF1324F99FCF21119336CB7570B488B31A0F8FD3DB110733DDDAC0
+C9C994BD2AA5D5F4B3ED418205D8803C3EB6C591F7A5C34E00388A9E88DD8727
+C76F347D5B35F5D59EAAA48B62D575ED3CE9F3F61170A376AAEB825ECA1A20A7
+82C69F6BB354CA870717815F083067B7662A8950B85F64F693D58E17F1E35A39
+44E491D46C73775BA837DE6498334594C554C7FDFECC828E3728057E3AD3FFC0
+A1E63E94532B09CB28F5E50919A00A5AC50B0C6856A3697847314D8B9B8CCB52
+76E4A1FD2A075CB2E9B9929D1EC55F5EF9518437738BEC7B300C19038AD2DD8C
+6AC399A0D71867B943B1B197E884B9DA58D5C175E1AE398EBC0B5AEBCF2AB1FD
+A960D13F12E423B2DC17C8DA6DDD431219A0427EC28E1E4D708B4DB0C90B8A87
+738A2E4C6B8C49BE14091797A5CCE7A081485EBB8B2C629842DCBE25F5EAD1A0
+D546F57455B532A9DE145CDE4841B08B2DA52906FF16F53180FE42B2C53066DC
+0926AE1BAEF441FEEFA91F722FE6CF5E0B2A0875F71DD42095DFEB5851C82792
+C5574EA07DDBD8D702B6AC0C82311A0490D5B57463389672933EC83FE646DAE6
+AE8BEBD6B5CBA53FA936F88A4E4F556CBC56B47B8393457C9D5E9FD8BBF800E9
+87CBC0C77CDDD9EE7768EA4A23E2B92ADB37BE882CD842D55EF629F6AB8E9C80
+13BB6E37014B2DA56FC65071B345789BA7D3C193D3579C6FD98DF997D8F1903E
+D53670E6030D2ABA91DB82DA54B97D0D8D3C56E08A3C21DFC15FCC12DAF6CECF
+6D085C337F6CDCD044EB3E7F1D4C29344DE105C7CBA03E211E3244C2365A4ABA
+88D9E17389FE2161A6D9A2BFB14554B0071614A301741D6F604EC3788236D782
+152E3F41F8ACF4B04156EBA71CA125126C31FEDF066A474CCB8A76083B67EFA5
+9C34E8BC213AA01B1862D866CA2C7F9CA3444464EAF496186CBAF607A0E7A60E
+4D8959DE9DD6B42E3995F0D92A7AEF7C6E5C3BD7DB1DBCB1E6EA19B10709F709
+40DC949106E454D9225606EEC9231D1694F71E350B8A8895016AAE4B44367EDA
+F9E9FE18A201A08368AC00409F5FAFCE72DF38D27462875F0586E8631ECC090F
+CE3DDB814193A5C154DDBCC1CCAAC3658BC4BE562DD1A5C3098BB32EA36D01E0
+345A00F76E722736BE3762177A1EBC5390457316FC105A26440011C3A3505DAD
+DF4586C826B71A7E08291F1864BB50A422DCB42C15CC6EA2B93C5C8312EF4EAC
+025AE0A87C6E8C824D6E0564037A3F2DF3507923D31501B9B8FDEE3A06761DA8
+25D1F3E7E4BFB11DC9C1981C0B1E878DEECDA57A367FCDE89B88707A07F1017C
+CA88CB190F02CFD3541F27DE81A644E5B4318543740DF9D69CFA10EBAE0C487E
+577ABD2155ADBAE841DA9C2FD0CB6D3FB4C8A109B7862A04B9976FE920B94318
+21B7D6DF66D1812E0D07257A5E354946D59E9F162FA611B1CDC737E2B60D52B3
+C82ADEAAC401B6C2D6DB473992B9E45B08A20744D53FC385E3F6D30C997F3FBB
+7847C5B1ABB7AE53FD6616D7F23393E0AD34490AAFF9027168B5492145F5071F
+DE0E6DD8E31277B3D3588B36372E4EA4F0107CC391DD3D0D5FE8970AD5FC5789
+17DCE9CA706164456BB7A18A68638403621251B60213B46971CE3434C70487E0
+6CA529999AEF89CCEA57A711290764C6E168E75EB756E0337081EDD6CC70FFB2
+9632D22FB3A400774642B85F576F1B73CA52E7F5A23591229C0B0AE6408059E1
+0427DA5122C7BAAFABE4ACAEDF7F5BDC3FE21909E7B474A52EEF3D98BF267FF2
+B3803AEE0D1392F5418E84759FCE4310048C9124824A5976B09B56F8BED6EC68
+D640A56126260FB5BD6D5AC13BFD5D0B0AEF252CD5FC1FA48A926F55885C6382
+99B48123231F416C19CC5FF196D13371DD5D33CDB23ECE5256EE5760471EDCE4
+26AF7FA95D468F2609FD64C6DE142E4961EC3156ACE3DC207C04CB4019CDB4AC
+CE6013FD84D5B6887390A6C46F0F1A43FC0B1BA6AA6B5B44F23C9C360A20A1EF
+E94366DA2A92098D60AEBDACB8D7B4736E4E17C4818DBD5398D8384CBE7CC1D4
+A28B28BA328202F087E841206B35D89E26C2FDEA77DA957A5759CDEA30AAEE94
+F6F5FFC1B3820C5E907CD6587295DDE110226E4DB1E46BA8DAA93EA2D135B635
+23F6B1A98F3F165C0EA13B809CCE4D64B942137BD1D3F98EC2AD678F26CAB779
+D9F8291DD64A677011B4B9604B8E4AC1F22B96A98760DB2FF1F47EEFB880814F
+1200A077279EDF1BE39867C45DEC3596E4ACBDB1E200C27126AEC4366CB1A354
+F4660DF153B940679229990358B4942D6DFC7625273857445C967C24FC51C804
+3EDA0EDE8841235AF5F78B50368F80B3497E39F3EB0094F139D42BAA0831D6A4
+200538253A922BD5CD0FA548C2241F1442C1E35636014F7CE5C1D2294AEB4502
+F5248606EDEF0F33F998D05D95196AAF94039803898A673AFBB9873A1CC11045
+A01D174F8CCB0482F6EEF5D5879C16A4D7B573D84FD0CD5960672E6515CA1BC1
+BA40AF1D76501C06548399DA7D2662A61D03BC3BD75D012B30621D0C6A052213
+B3390976661462DA6E60DB0CEB9CA555AD3785E99AB8AEED42E70305BF90ABFC
+C56C390EFA417FBE2FB82E9AEA03B36811B408CD5F90D706EF81DE9A75ED5B15
+6D726DCB2AFCE0E855DE25D23DF8E5D4EAA5364EBFF47C12481747F97B4826EA
+2D639E00F037551E7A5EA6421BE789D54E1D5D30370196A35E65DF159E2C7FB3
+8057ACF28035C9EFFD9907D566937228062B07CAE8E2B199512529B71EA8AC90
+600AA84AEE684DD0EEB00CCE2355D089F6DFA6C0F18D138A7907615496D8A998
+5974A956A524FD8EE5E6A82798C7FA1B71FB68271A0C0FB71CA17036064CA597
+19F882FEE87C727ADF36872A0C05BA8D9FE0424CFFB637B1E85AA99B9572BEC8
+031F44D8E24FCAD7833E27372F06233E805B8FA976FF30CBE858F5FE88FC54EA
+CD09B4F56E6A0A48049D84C1A124028072A0C6A1AD032F0D8194F5191F53DB6B
+07B65F9EF3A59248C055EC60A2CF7CBEE5CFAD31E6C0B26937E7AD0991A1F0E1
+EAE9EF6F0D70E6C8649C460161EF09754C7246658454E44337119681342D7CCC
+6438CBDA49130D072E2F49F1ED66B3A3BE6FDC93E573DF56748FD2F12E031DCF
+2B0AD2F85D92AA9F31CA398D81572A05198E18DFDA86B817CB5F244AAB2A0039
+6FE7ABFD61675119D606D8432B84010B80ACFBD917782C45787C3F6E20616FA0
+301164B4386BC5A0D43732238A26553222C130A5981415B8DFF4467AF95C9605
+CF63D0DFAF6D7E2D05DB0FD260E5C28838B3D8AD910DFE029F3B1BF9D43C38F4
+5A6E3FE7DF3C1467C1D5C902EF9123C05F46EAAA8F17C380DF04B3F164C2180D
+EA4EDE36FCF64AE318D8D13D0B307F668E3160A052639174F266116D4C6005C1
+4588F003B07A68BEEA3B5719F331A58BC4DFAF393B487599A0307A37235D83AE
+DFC96552E2238FD4D4F1AC215A8ABD6F928C96EA7E1437230F12E7D6B0EC4B62
+40494113CFC38EF265418F4495020007B8F997875368D2F7EF8446CB30D370EE
+DE8F36D195727C4A381F48F29B42AB70CC5211272822827868E958351B6E98F5
+26576770A833A726586A6FA59A42D2780FFE5AC3DE9358953261B31DE9FE468F
+CC8DB501C0F41B8A218076D77579B4C437C564534EE5646151ECC37C58E1B32A
+6BD702518C4A0BAD79B5CF825CAE60104D0838A4F15FB9E005507BAABABDDC2D
+F0E67F620F9920A83890DDF699308ED3BE657C51214DBDA6412EAB1906DAD9AD
+0422DC9DE4648D9E106990EC08FCB54A09A931A7A91121C7E5AC976D56907E84
+30B361DC13E62AA8CE37D255BA04EF9A2FC2D47484516B15C48BAF399DC489BA
+68D0B7E973734FF9B17EF07AF4D5C93143EBE3E439717816F998A2AF4F7C684D
+3CC1F9181C458A1D947F8A34C266882E62358F106EE81E02007C08C1A4F278A9
+8AD244A30F74B17408244FB69ECD2238705F5C2927C51C8698AC10B593C4A651
+04D5B601AB872D51288B5397165992E4CCB67B43F19E572472B6F804B309BA9A
+1891C775EBC866CAE897FCBAA0DDB72469C51775E6C68EAEB4A0E0046F22013B
+2E01213E604F9DE2DCE26273351A572C6408C264387CCEF8BE1CDE9DFA4E7F37
+55B7BD1ACAFE9422AFC886D6A27C8F9BECFDD6612C29DDD4F45DE8C9C0582C8A
+0406CA4253ABFD29307E143CD843C666B567AEFFB5D9B0FAD58AC3F7D1545075
+8BFB2881035407A347E2CA572B4DF2266610A05B6FA34B59A54E0AD74A143F66
+64B35A58DFE2A5351683243FBEE5CC314995BCD1F918F581304CBD363EF21C91
+193428EB1CF98430D8BEB8D11E55E7A577B23BFA8609DA01593A6E53DB8756E6
+8C3645521BA08AF58442946E70A655DF2D7A9C1CC40060F7D413D73B751D48E0
+6D583969C3EA48526FC009311209D1600D9BEFCDC2F1A3F783D2A01B92F9F3DA
+1BA6847BCE41847E6A991F54FEDE9D76DDF63E7D8312FDC6B308A6F5A1375EA2
+2280F3C1480E3CB9C38CFC536FFFA3A357AAE845B00EF45230EA00CEC2FF06B3
+670A87AC8CF3624898E4E240130AC15B8C573DCFB0B92E07D33B36CB5FFE70E1
+9E14DE5562F968CDEBEA75721B8B087C698F009454DFCA91DD29C261D60871DC
+FF6142EB798849E9166F3D61E021CC30D4B5DF371400A697BDCB9A78ED973DB7
+8D8EB2DD13995F13C8653BC197F7D37F80F81C441DBF046E9CFA444CC1E189F5
+494BD128B24BFFC8F517A12CDC18846958B8C69D41FFCFBD2F5A09AD965EE8B1
+9E542E5AC2F5ADAB6A2C6EF31485D656CFD0B50720C5F3DFA642BCC1667BC298
+A76FAF7DB441D6877A8B53A450ABDD299B9315EBAD0DD48A933867DC86811DDE
+0B5EED686655AB00EF4A6DF7B0EE644D578C6DEF011D47AFB8E8C9B8715BEA1A
+20EFAC19F11808A6CF93074686496830676CDE3EF843A2D3EF68CB004C3CB472
+99E4DA5F2733B314FF90701AEA65130D1A18FADC67424526368158AE2D82079A
+7E8078D9CE0C77AB16E582C16D0E5ACD1E12CF70A4A20689E33F9045781111AC
+EDE1E3C25313D7DF52DBCC09303A0B2704C05CBB8F8C7226822F391C802BF293
+106D58D1C37D35CF48F3518B25EDD50CFF51055D22778A7FC5FD0C62E9EF6B4A
+C43B814B5E0A12A49AAF20BE95F6FE037277FC4860A60714BC367D28C9B237FC
+87E58A07AB03E869B9FA79989733DC3E929BF36ED0B71DD9A9D2614299426E5F
+4EE3F63BF07C3186FE7FCF2E8041C0F685D01D7BC5CF84661899EA0AE20CB1A9
+3E37F28A6366D87B43FA2B9D256528A3E3442FC1F4AC3EDF8F074F8DDA4DA417
+4F7D9F14ECE3D16771406CBE27E7379B4DA0C2BEFB217BF112735F94E3A543FF
+F21CF6BE56DA34313D637F19FFDE7E1C9E84A4F24541307575D6C1B13A9BA39A
+619A67E81A1B09B02D1BEA936EA12FC8F11247235211060F9F076DD604D307AB
+3DA4D7A02A2E8443EB55EE6205DA626E163C51945990C2CE68D8DB41F361A2A4
+1125C5C3CB75E039253C68EABD01F42012DEC2098B98EA479B510BE89967B61A
+4AB9A5488A0FE103DA30872FF137B1D18DE85E083BF6D923D69A25FB315D432D
+FA0F0A283231B5FD23FCF4EFE5EAF45EAEE63FD98132D68779943FA2D1A45576
+1118A3210CA455BE0CE81CD9BFF04B3D9B2DDFDC5A239757FBAB6A4FEE94ADEB
+F0466FE94E22680A09CC0A81D4CFCD3B9BBC91E4ED0A4AB0BAE58EAB103A6074
+D0DA9D52DCE4931DDDD9451C1CB5B1669E518795C430C0AEFA33CB169692BBAA
+4024E40CB5911215B4717530D9B2B937E8F86AB146A6C58B89F53403704ABA91
+C860CE9916AB4CD468D10EE5ACDCCC8E75C8AFF0AEEEFDCA43682480BAD0DD2D
+B7D3DFAA55C59CDF224977840A8A7881FC89332DA667CA62C3804116E4E541C1
+1F7889D1CF79277EA29712531AB02D539B1FE27206F688765EB81716C41A3799
+FF72F5DAA298AB30152954822C77F3B66FC54A51D6BC7AB6AEFF7CD93FA94ED5
+66F0124F219ECEA72E6AEB15D5DD7EAA366128A54E43350B006CF47642900E0B
+B4577DD12358BDF9C8E4C2C93444B9A29D442FEC36E40BF684D64594951EF807
+D587786C2E636CBCC165B63D8DDE01A0EEA0FBE2DCA45C4EAA1A1CB164B05A3D
+4B594249D0A0BF0CB2AEA95A71A483A179E77A11A49B73CA88C81F763950C6CB
+C4702FF7F4A58665C23D73F00F55C48527464B453150CA6E5B99D1BA08D3DDFB
+B5B304DE4E6CABFF791CF2FB9912908029A383E8EE39F7EA2CCEFE949B536D90
+BC0D4D791582743075C21E37625DCD219364A71FB21476A2E559A9711F662F48
+AEEEE7E73B1DDF6BBA199A66C60CC2166FF9B4C4309D096C0B13C011D3ED30B9
+374210DC96CB26FB201EA9CDDF94DD9FAFF39732B4B6A71E86611FBDC8742D4A
+C7E661E18DDE503C94DE0E6DADBB1AD6C7771D1AF783D504F2513FFB87C4B3B3
+90AFE5B8A8969CEDD65B59085A2C2D11E826D1AE484253E4B31EEE0C6583DFE4
+D482EAF253505DF691DE72EC54913AB5EAD1F051204DAFC9C6720157B67D883E
+0D04B4D7412F0F854EC44CC4D83F8EA2A7DBE940F580DF77FC0B7F1687EA5FF6
+DC8AC26C07052E011A10738CC7FA1104FCC60AF85B66D2294484B391267CCACD
+9F50661526250FAF134A8C487B1BE57F01D08E06AB5E1689CA9ECC8B6062B568
+0E43EDCB4C74EAADDFC3BB1D309C2BF166BA3E2E3F276E99A288D291630EA951
+E63D256587E54FC0E731E43AEEBF68ED71BD85D95C957FE1C2D78EB5CE3A2FC3
+B31F528FEE1B2B9EABF43AB591749CDEDDE9D83C2238E5541061E88C5B3E56D6
+3B5E1EDABC2C238682705B8BD673B383284AA5E8B4AFE1B05913D1BBE8ECE2AF
+E5B96CB431D77065D35AF5EA0FF1B84B47655A45286E4D6EEA94D0C7C1BA6BD7
+9DD1943B5CA1D503CB10FC3F51FFC53E556893D280B1384F81599249F32BE524
+9439734EA7DAD4A6C7C0CE41FBA832EC6D4B3E54EDF0AF02AC694949F425BE49
+DAB43F2930D321A349023FBD4CFA05D9C8E1399E48F9EE7E3C61EF5833E89159
+423F3A8155FE9441C9172E51C9552ADEEF047312BADE124C8BD0A0FD2A2E0DD1
+A6F3D338598A3836AD46BEC0966499F558053D5DF15585DECA93339718037518
+DD8DB8E9D7303BFFDE3AE50902CD27A97388460424CB79BB1348D2C0E6DD71DC
+0147D980E94B4DD28F3BFFBFC356EDE6220076D2E0F9286D7E6E0ADFB03FD673
+9095CB3696F5AB10F9CD2036CE9B88F51A3DE177DD9C6A82AD0D45DD6EA8B8AB
+D8B7D1D5AB032EE378E5FB62E5C967F170590B0A9AD94E038C621902C674F43E
+FC637BAD1B9EAC2206A29F6C7FD4448442BE438F688584192FDB60BB7524DEDF
+0541CA37DC5E70A1776D62D5261425E17671E98C45070852192211D947627E8D
+26195090547FAAC5D8763FA76353934B64DED4B01BB73A72131F60036CD7B86B
+15B593959F997F7CB38189F00FD5BF1E90E7F419D163A57CEC5AF1ED84115741
+3C176C863F8D53C6AB667E141B13B4D07C822D461840C8F7F8D2C46EF4D10F12
+359C7C9EE4B4D7802C857544E4CCDEE30947593A474A87C81902983062345748
+370F307C3D91785239E17215291863C565D2F737E4B1C2E44E85E098EACEAB72
+0E31F40655E97175DF31035E66C73DD753561EB2F91FBAD13A4E1035775A4AA8
+6E2994505069A011CB338779D4C3859CCB24EB8F787435C959AB36D83F04EEA6
+50308A38CD3688C04A146DD15D2FE97716304CB6FECE9B748F9A5053DE280366
+A94C14C0D642D169AB4185673C97C2F1D864E72C18A44D8D7D5498D3BD1F17D9
+94A56AA314BB0BE57ACFEB16AE42FAA2DCD563CD67A9890B9AC072818838DB0A
+F4A099C2DD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+dup 34 /quotedbl put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 63 /question put
+dup 64 /at put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /backslash put
+dup 93 /bracketright put
+dup 94 /asciicircum put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 124 /bar put
+dup 125 /braceright put
+dup 126 /asciitilde put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
+38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
+D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
+EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
+A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
+F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
+4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
+6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
+A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
+E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
+1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
+452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
+8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
+5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
+DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
+BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19
+741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79
+E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712
+E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7
+D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE
+C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA
+726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227
+CEBEF0C9440DC034DAD9C19FB27DB399BDAEE22053591D6538587C768C1B7B0B
+7D1E222D2D8AF3A6473CC4C0D6C3E0DB49068CEB8C9BD1C5CD486A50DAA10BC7
+7D6286142355E3F21DD254E27C00C442728A0BAEC9D3F17AE9CE320D365152E9
+EB0D5E3874F2BCEDA98521D23FCFC30B4B69DAD2ADBE80E5964ED0ABEF6C73B6
+DAD30E2C5061E3747FE536E1A5D190D028F2130AF608F5DDF9DDDF1E77DC8437
+ECB3EC93B33505DF47884DDBD1DC6BBE4098DF04A29AF6FA3AE344600D0AAB53
+B3820DD7ECB600A3B8001C51AF2CA7A39AE1485A087FD1752DF68F55B52B4DA7
+48030F2AA7E570B3D56C4EAD367B9B73FBC0A7356253233006178B9A6BC19081
+B815B5988AE76FE6FAFD7AC239072B1106A3F509381AAEE79B2F2154CAC4727B
+D199CDC8B4D05DF4BA006982512ABD7539E28D937B0F87FF79A3F84C29ECF943
+A8DCB8BDF8EA9E7A0E7CD60BC2308C96B3E889C797D0FF28FF4847016B3DA141
+E76FC6BE78A6EE9CE07E651FF86E720A1A1F075972D36E5C55162E3FE26BCE3A
+814BFEB12D4C5FD24340CFFED499C7CA183E57EC4F12CFFBE3291D43F7270575
+C6C3306F832EF182ADD0AA14C4D8669A17C09F632406AFA195F90C4DDC39779E
+EC0A77E590211592D6EE19563963225C06C2F13265EBB5A6CFB7C17D9E77650D
+11958305727AF662AE73AD0E3ED5F7E7086C5A0C3548A8129575980B06C715AF
+DD55C8DF869BED0A7883491030B1A7E82C5EB04E5A7D952E716DD8F2EF6275EE
+087614CFAB55FCE2BBECD7E8D9C90FD8359E929D5E0A416A23BD58158318B4FF
+87B095EB63F7F052B3A77F136FD66EB2C52BD46CD7DB3091A4B78A607112B12C
+4D171B2A00B78B0E1C44B0D90C20D9244281F5123DC1F6063F91E9E3E48DE78B
+C862D848BAD073A4FCB5EEC9FF54B5AB8E234CCC3C7439C62ABC4A13EF1B8897
+ABBF21F900C564C9A305FC36FC7224932F766E6E72C2EBB55953DFE2AFC2E3FD
+33A0C6F0FDFF086E9FD796E7242596AE85B877223532667625E371D2156E4C04
+0D7FFCD3337B93DF066CB6FE1E13960719EB7CB409EE805C08ACD2C06303ED9C
+E34C898787A43C1B428B896551C6FEB50A831C6F8CE2073EFC662EC286CB7555
+A3B42E58772E82FEE206948B8C439FEC5E4ECB9E11DC3A4CBC7611E30890E408
+637A01A2118441B4F9467A98BB2A1B03BB2F5D8E3DB7D1D15C188D9E856088EC
+B762F07B1C06024F7EF53A2FBD60C0A1F4C0275D07164545250ECEEF8CB15B04
+A2D8AC44DDE818C4E3CBD2A5FA0FE49750886CD7CFAAF8B780255F89DF7F4F5C
+BB594FE7C1597DA71813C2952AD3E811524459EB71D29696B450C924B6A5C843
+8F36A0F1D7DFE796FB9564333666D74AE614D0D698FAFF20F83C86524C894BB0
+272221C060544F3B653CB0E4E4F82B20D7530B3806E6A5830852C58070177815
+E287C847F19F64E854F1463C23DDD80093D6FEB8BAA22C5F05C21F99FBA7193A
+EB7CD49CFDF4308C6C68CC955A45FCFB54FCADA9A3BFBDE086B057DE88BE335D
+280F5338D7E66AD39FD08F9B55884F1F377FB6869FBABE3EAA4B7ACCD85BE672
+724B4B8F236B0889B6E7049CBA558A89F17863E82DF145DB8C7ED1F36332DE23
+3C0053B74E850FA14F9EC9EFC23AF18E153CC96FB0FFD910347370E57F0D81E9
+4A83E2D189EE5635E85A2BEAB5B1CB974546BFB2FC2ABA1E15DC0EC1BB3AF1DB
+B2F93538B92F504CBD7AAFE36F5F3AD45EB16378F169B17869FE81464CB826CB
+400D2F5441A496B6C60A4F15FD20ECCAC1F8F91015E7E1C1A10B7992A1554E52
+9FBEE905A3005336E49CB04BA7223F1674C0BBDFA06ACA34F7BFDA56906E04A7
+4DD79EC7E79B021A5008F3B1E04712D689366F520B0FA66A558F957011992728
+561BF4B75C2BE07C4024C172085E51CCC5CFA439F570297154CDDBB3AA25CD6A
+3004B936488851BA1E814260C06CD5479DCAB1A6AE21A5F4563024F973D738B4
+0DDB6C6DD2E3AC21B4F6D95CF9AACA782919F5D3E613D61F3224A982AF485C8D
+EA0037410EB70AB7D3EC174C6D5DE5C9C5A1220EF7C2B74499ADCEEFF077D1D3
+50C1124535F88C3C3F66477E42F1932665AD323E06B398D2805B9CEA632F5B1E
+50FA587B102A35E2F15EC22DD66E4DF06A3F4BB717A3ED7FBBE2458EB4D896DD
+AF00D1BC71FE1CCA27890ECBF9F0AF01D3E65CAA29427FAF06B3BE1E640522E0
+73B213D04491B93DB29113EF72211E31F4C5A7FD58451946CFC15FD805112FE2
+547D1131A46710DFB75659A33695FFAF3CDD40AE5260AD6766DA81DAB0A6E96B
+E89D57AAEF32B5EDBBE9F7CC033BB2595CA3FEDA2ABAC8E5395EBC35BC112FE9
+67EAF1F123228538091483050847F8FB5194203609502D3A09CDE811EADC18B9
+F039593782C27EFA7697182D6367E88E326AD5622C5A457FE2644FEADA88615D
+9DE3E483BFD9329667953CDB86F9D2F0D4F02DAB8A98FDEB1D17CAAED9B6E2E6
+0C55C1FEE25AB98FF59FC235876029CE03E4A713B75B3163BE3B2DC0D4472DBC
+473E10400C0F57E627AE97FD0C1CB0F78FD8E2FA831A3D2B1C2BB3F2D4E812A4
+194C8732B0C525361DC8480CB27C30CD4DCFF01318D2EB4F5234B4A42EA8C23E
+7B3EECA41B8E4F54D5458B37EF0FB2F49EB19F4EA8AD2B53820FA36E93DD309E
+48847F5C01B1118ECE7D0186E6B8953344EB775D655AAAD7BCDA642EA2E39A15
+855C027CBC0E3FA752900EEB464E2D39404D1B85072B40834748C6F9C74C5B6C
+3CEDE988343FD984CFE4B856A481E60E2E65D3BB41BAF2FA80AC0BFE381071C4
+573C6ED65C524FF777F34D82E9661E4A75E3878CC77BC59218244612219C5A92
+E95B90EC2C38614665550026F1730D11162F19D841681C04C401E102C047541B
+97B9264D86F47E25A347696AE5EF0FF3ECD9BA32C92901DEDD816F7D73ED1216
+0A98771892472CD625A8F7F19DEFCF5CA2AE57F8AD3898F2C1005B187DEC6F2A
+A31C32720EBC934178E0E9979013B3C9AEDA4051DF63D8C903A399DC88F83DCB
+A73F1B2083819D1BBEA5235F8FE1D098F32A2BA6274424A99A4975FE4BFD59AD
+79B40A8003CC0AA728EA79D6BDCBBD73DF45B7918BC099C5BE4A068BF64A30B1
+C39442CED98AAE1BD495F6CA32D564A72E3BF753B49E4178927E4BBC0F06048F
+96DE7C30AF580B0BFFDB330B3B87D7F6532A24F403680BD9F15E758CDF04EB94
+E83C7E644FDE5BEE7CE73EFAC75669E41BDFB20A5B8ADE1137378DD8102A0DBE
+19499A623770417CBF5211395A6BA9F4490F4707A46F1F9B3FBE642DEA0CA053
+9ABC307B1E71DC2B069DDDBB4EAE378BCC75AD61DA900AF8BA6DF0E27A8D2258
+DC80205305AB6ABFE3726703E60869BFAFF1874F3C0E05FAD9C05D7D89ECECA9
+DD2AF5F777D7514208697E712B52448B364D3ECEFD8127043DDC9D0757B7CC37
+5CDE8001D007A6E961EA24D7FFC92410F3B13A32946F12A50DFFA256249BC8D7
+C1842FB84AD51B41008EC4604F6B70990510EE13E6DA34F864A572D99A13FFC7
+3609EF2BB1FCDEDF37A6018248C545E086EAD1BA1143E74AC60B684E755E59E7
+36557B915F92EF78FC177621D49F777A2AF39F3C2AA6EC74750AAAE08BCC21CA
+A71CCDC91DD45E6050D83ABA49ECE425B55EEE137C55619037F1C30530BD0A6E
+CD2004B6A040405064D7E87C55536680364E09248BFAA3FDF95CDA0708E55F4C
+F7D0A92A93DEE0C7B69638F171B28B7F854CCC6EBC6AEE14864BF5144EA36D46
+A9C297225AB0325E28EF6BD06D7E40E3A724EA1E50C4C6163B195CFFD5DD291D
+D7BBE9AF4324A69394117EFD62F08D6BA6A8F0AC3E2353492999AF28FBA758C3
+A50B6840CC72054355E6CBDBD86F683537A4115049BC1616BA35C2B0B6F5CC32
+3F6831DE4E6029310738DE23D36D2C6E82F04EB675FB89789F74AFE3B8854250
+51812FBEFBCF162947554324FADAB765C74B6DA89F60A734076D44BBE45263B1
+3FEFEEA90EC7948F23F34D4049087AF6563692417DDBCDD5A9552A373C2528F8
+0318D3C0669279F292127CBA40B0ABE08A1476BC9EBFA8BD5D622BC5CE7DBA20
+C689BDAF50D5B1EAA89E296787CC53845DB2BA54FDE363DCC98A7BA256663869
+E9E02E09077884DF1A2A41AA698B7EDE8DAFA621B552DDA91AD1E671D636FB36
+91C62B4D2D4112F2C169E0023EB7521F570CECC54ECA5EBA462049AABBE2ADEF
+E3234BFD71B26DFDD9D34DFA69E5E80FD90406E6505A6798F030A4B5172A7BC2
+C9B765A86ED55C0590E0432719BCD7BDE7CCC7F6B33BD467063D886276C8879D
+E04897A4623111C14A1EDBBF69E2FEDDFEAEB2A785C6D2F0711DF4B93AAA291E
+7F4E0CF9CC3FF0D31953C594DAD014097DA02CBD5AE8828C7E7B5BDA09188B05
+0D7263F164E1E78CC430ACAD1E8FA71001E9BCEFAE47C79846916A5F819CA366
+5734089BCDD458CA1A9E8E17BFF357A91F9A7A8A6E1DEFB121353AA80F1906A5
+AF7CD2E59EE6776FC0DA6574DA0DE522918CAC4E566F13FB9B64EFE79F3A3BC0
+689E3B0676741C90FF3BF85C7A0FA9716F4ED0E329512B66BFB8AEB56C3DD6B2
+24F8D6E23751A8485F7EB46719E9D22618FEE86D5E01ECCF4C6E74368A8E9B49
+245D80E7484DFBC916FB2447852B36EF3F99A82B6C106F786707D7689DCD7AEC
+A0C51AC1A3F67034C16B74994403FAE7743BF02149BEBEF554814BEF31B79184
+3FAB4D2C887E1BEE81B465D12DCDDAD03DE5ABE9E763C440B2CFD42FD16D96EB
+C21FE788C8C2688F79F148AA7090BE64B0EA710D376222FD1590301BA9A2E715
+D33B8C1D95F2589AB0EE476F7046537E27DBBCDADEA1E7357C9D7FA92C2F93A6
+7BDDF58A44966590821023380C97CDE37EF6D449E35EF32BCA6E69DC8458511E
+8DC8AB63171A6018AC9A334829E5978484C4C6E917A5F1C254E6669F4037C691
+36980250A80673E0F18C9E0FBA1E5CCA3BE30B8E7B7188062B25F8E1E16528A2
+F217C18D6A1955482E5463FBF097ABAF7314E449C6FEE56E2695407A8AA9648C
+61AC2BF3B2D9CB6317A9B16CE931D318C8BC9676CD908505568C197D90C2BB46
+06431C999EB68C8216409E4CABACB2BB34A05B697B9DD1E91471A404B4969519
+E25209EF4EDD420944BED17B18DB3566FCB8059699FE416789191EC2B35086AA
+2E10C139E3C9FA0A535DEE9255A867A26656213E85851DE5F51F9780D3A6E572
+F1F5CE64DA176CA810799DC1C60A8FD2A5ED42E613021A19928EC4572059B2C1
+EE441E79CDF7DD4AF7B6E3D3230419ACAED329388044B107DCB4DE91B71EB838
+904B1F969738BBDA064FFE75C6623639BE9924602DDF0C166B433B9D54ACDA5E
+018680477FB8F10621FF32319E58DB672D744959A33E7314A1B3CDE0C038F7D6
+0C8A195AF191E36B0325334A711CD8E25D9C1D257E46A734779E486567481108
+E0281DE96907D460546578DE83A0A01A9ABF64402B48DEF739F4308E14145753
+719CEF720FE5CF8DAD7845E74D502B69DC18D172C3A27411259B8042F3FF82C3
+B157BE242C351830255CF0EDA96577375A70657BD9A2E9FFC54AF0AE563D73F2
+E510279FEF48D79F5F7745DBB492F1D74DA738E6A4FE4364799B5BEC93B4CAF6
+B06B9B8C8D164F8FA1FBBA693204064F2C1806C39910910E02ECA8D092558CB8
+33338B359D56483B7B99A1D8137204EC1AE70ED3D75881FC3B00BB9349AD934C
+81A9F285312FDDC77FA923B18B1873D288C2AAF2E6D0AF90BF25A982B843789D
+5662D6A2DD58E065026885601ABED4B09CAAA3116DEE6B430B15BE0A121FC1BB
+FDEA5A501F0798CFFFFEAB5101E707F1A00C8E014A3561FD39972EA9AB108EBB
+960AEA7FF60C301AD6CBFCAA7D35CBF6F8462A4D76C4FBA6F3DF6BB762DF7900
+9F69529AB4EAF96C2866444B257160E8822533A7A1240C83EC18C364F577407B
+4CB314678D2511735308A1660AD94B8B818CEA4A3DC00C5A1C978F8BB4E0491C
+49328F6CDF95BF620AE53056364423841D84418B23C2A447B0CCF8D8633FE2E8
+4A4AC1C6C74627EECDC994059F1BAE9E6B10FA80D767B3FE97BFFAD413DCB0A8
+495039744B48266278194D60422D6E7C74D0DB45ACF217797D0C0678EEB60759
+6231438CFEFB346553A7A447B50807EBB6E885B5A49CA9A350EC4A8C76EDFBB3
+A4DA1C9E3EFA193CDF08553302998F20055C84420A4C5252F764CC4B7A4BEF6A
+A09170EC417B296DD9E2301CD8EABE4A087E648E0525A9FFAF26374C47FDC123
+82F18C9884843864F418ACB08041E7896FDD395225532460A8194A8DB4DBD824
+1C68C6665F85059E365EC0972EC6465E2D8867449907DA6692A021F026F437BD
+D02654BC11381BB6557663E0B0B8C4F2FF69E4776F4EABA69311BC1AF8155F7D
+6D3A418BDC912CC7CF1A4BBC8A1376D8B4DEEB6585416959BCA4AA08D4520C33
+EB054DE53140992D0707210593BE62B3659E3E493C4562C2E99CECA143791DAC
+679896BCDA0699E405957E17DDBD243E65CDD7C9C8629F29A2078658746A7779
+0F75BE24E2DDBB672B95F26366BAF036B3C23BE4132D7362E76D4183A469E0F7
+29174711ECAF4FD9A923E72FE58DF2854C5537E3626317D471D1E8A922C9BBA4
+CE9163A4086AC4A231C2BF35FBC39A5BBCFE41843CAC7D81A054509D31572BE1
+596E0B0B563DF2BF0E57DB4943DAEE35CA26C8433FEE4FC61145C77F65DADE75
+62DA18DFABC7F4194906F53884E62E77D8AB3E099776AB93B2B4D0C98FA44C71
+597202A2643942795EE8CE098FE26F1AF8134F1E75FAE18D563B1FF43A511C9E
+EAFB9EFCF61490A1A4FD2CF354927B72C5EDD5D62B2F3F5006D6130562A13BCB
+1B988A994A8D68B051A5A821CCD5D0F8D9D49FE7CD04EECCFD7A554CCDFFD77E
+27AC4AB5BF9FE40F90EBD066C483796CE1A364E95C5E0CF2154834760522F128
+B2DBD1F4F73347D42635B2875A23597C35A0823CC6F71E49598125411BC9B2C2
+72470D36DD967C947AFB031BFCF770FE50551A134DF8C5D1AB1F09819569A57E
+E23D4E87C0B52CD02B0A2E3FAA7D27A94359E82AF047756BB769BC5950A75207
+78ABD49D174F2F69810AFFA9336A52D6B93B004DCA5CDE58475C0210E0BA1D20
+FD4FFD6838EC56A0922472D4C4EE0CC481574BC30618179E733EA40A48847E14
+A75BE7717CC5DDCB5B0718074EAB6FF07CFFE794D335B3A13EB968EA8FC5B08A
+13B38AD1C2C964E4B07E90B9732C458216B028E07DD593A5B767A2B415EFE7DA
+951FC07800F11C7E2EF9BDD152BC6815B7F32117F49FE08BD79BEB949003512A
+327F3F8FAE1767E7842348BA4373649F1A21DB2C56C081BCF9FA4EA86C8DFF00
+FF45C4F1386CF8C2C4120F3F6019CEBB639F2D272D08C1763A470D4BF6330DC8
+43C069A6333113C3A0C93471486EFE9BFC02B760C7CBB2E9156087D09EE8A178
+5EF50B34994094C3F0015EA2ADB6C920F4302FDEF128711994875551C4E883E2
+DDEFFAAE11F2234AFDD96400BB69C1B4E6EFD75734C586A10A54A98E7D790F28
+DEF7C7DF61FB23BF91AA700AE585EBDE74E215DA49F4ED466F46129022722086
+8884D8E026F35C4BEE7E866DF8E0846D5EC3534069B713FAB02D4B4EE3B44E1B
+656F30D629D40AA1337786C1FDA08EA1217AFA4A6E2498B334DAB5461A70DFBB
+5AA5686C89FFA4EE82D81CE2B28334DC5C032487CCE998616F48150BA1281911
+076E626E5BFCC56A0A4CDC559F878F14C2BD7A5148C1D8CC303FF9EC473354D2
+D4FB0F0F2AD0CF182A28074ED6552E179222570DE0E0D44E8FF4DB36C3AD6487
+C4BA53C8548714A69FCF8E3E5202F09469D7447C6519AE902C1D611A720BAFB5
+59E27A6DBA73624F44B4ABE0988BA3450F82E03521CCE8EDE8BE7EE1223B575A
+DF9A52650E85545525E6F121FF2D1531F156EA9D5594239AEA2CD09EE28ACB15
+A445E11FD1C031188DB61881F474D49425C084489A88A47D681EA68E7FC4B1F9
+DBB552063A02A0EB51125E9B2CC646B940D46FF457415F9565892DEAC030F08B
+E4C10DC38D825C7597394C844CB863CE6C843F67F2E1C42C4EF86AC7FB727BF0
+224B5E91BAD99CC6638AB2C64469A81D8B1789981872ED037B3A34BDF3130137
+80FE80FDA65EFBC11A08B98A1AE595F980B577E22D3CB7FED1D4016F5290ADF5
+47D7D9BAFE39F294582F2C084003E9C83FDB9EBC87C8B477CB8BB359EDD9BBC9
+9368D6605E1468A20909831BF602EFCEC0D5EBA99A2223E5A269275C8B221B3A
+F9226654185929F794E1979ED18B4CD36152F973433AC67BE24B9D953254FBBD
+B644CDF3BF0E29A2C72113DC486E46DED2CE8F8DFA8B0F8478D1F18C9AA8E054
+A31C3DBE84ECEDD85DF6AF9467AC2990ECAA3384FBCA1BBE598AA0D6813C859E
+1520B88BF30ADA910A6AC3068A5B8CFD76B7F0F6F4AF4C32450D628B5320C384
+F23A2B5E8756895584155226A30F8B0437E028978491DCD00E79C0ED58DF261E
+79B9DA17E57AEE03EE92102EAB2D63E69A88EE0B1E2087ED0C0CF6475EBDC3BE
+0324D1FC8F7B90D8D807533E5436F2C2583B9629EC390403437FDAC908557894
+03054A6DD6A3586043A9C8BFD0C7EDE1229DBB9F69F7A5D20F55664D061F6517
+0051C6B3CD7338241FB403F2AF77DAB1A8EBE1650156D40863EC1957372BFDEA
+BA8D0BB1193CC5BEB5A68C8274802E14FFA3ADCEBE19070325B1BDB960CF2988
+C0F5A9BFD843C515ADEC8B8AB02B2891EDD7502D9F28F4E58D8F67D1ACAFD0C3
+3531E0C7D1554344CCF90AC8696E83A3F968252981CAC09653956F4343B99D3D
+4F17CB8BBE4506B354439B70F2024871D16668F9DECD8EDB872BE5E6ACC406F1
+1DF4E3ADF60EFED57D1C426292970199BB663405236C6A907B6891C6190E87F2
+78D9142220FF295C7BF44AF61470798FB8CFBEE6973C69DA1CC24ECB058AA753
+DDBFD92FBB15560EA19D5D92F0005B74F06F0EA5901D231996E0866389DCA433
+E62BE48479687084C1D67BC592E592939F806FA8BF5F0D3F644B1FA6F056DE0D
+51D3F212C6818CB6166317058C2A0C07AE2E324CD90D4EC83CF4819B10CC348C
+6DBABA024A5FCDAE6E288F82DA060BCD16437F07DCA43BF1E5A1B402F16C78FC
+075BEE900B4021A1019C4A5ADC33230047FF11FDE8FB775DDA267040A22B4E5D
+6012F7E72B8BC8DD3A81369A08FB81C6C4873C2147D03D4181D6D8032DD2B610
+9C44CAB50C5BD8F489EBF01C72D4198B66EEA4E976462F8874143640B82AE57C
+A51EDEDE75A9A55D31587C14F8DEFFE69F75EA7B95BF725CE9991FB2F07AF568
+5AFEB39447B728B99BE0502BF28DE1D92B15926BE4E3DA2E7BB44A24836A97C6
+EE3A2080E01DC6514180DAF9C055F4C94929D34F193920020505E62804461630
+9F42C652F9D5681C91BE23DCB0C634247E739135F925EF3D5424767D5F5C5879
+C46F2E32C7B3BE9E90FD6ABE693A6016AB77670129B58B8FE719FA97FE320842
+6488CB85B6BCC0012975D22E75A2E086131DE676AB825A386C086FBE1B65DDDD
+A19F06AA4C1D3EC84751C649F4A62CFDC48A7CF88CFEC68B959C211B60DCB045
+6BFF922FD7349B98E1769394E6CEA4F764AC4B6536AAE4E6BE69099A39A6A33C
+97671C3AB4E7A94DCB829FBA97DFE5F71B1728FC81F826699DFDB0ACE9BC60E0
+6EC15D35EC479F3F53EE4D0398BAC138FED504A84A13B78568E3F9C86BAE8B88
+61830A80F8B994D0D66A8FA3FCD6C5099C29FC285ABF096EF9A3BFDBB522157C
+DCE9F0D6AAFB1F8D7B0A3C573D0C170357175DD56EAF37BAAEF4C92FBE17E26C
+7D2BDAACB9B8F33D09651FBE0D49A8BE66B78D075485BCD38DED5056FCE48A12
+D28E9670EC7CF4E9A277D6ABC2F7AB30BFF290B5452582F372FC9DE6CEA9EC0B
+84328269F14FE7F47620B1042B283C54161AFCF84B46E6B1410587295E4F8958
+C1800F120B59639C85D46D46A4C64309931A8C91F138EB52F779189EF75B9157
+D624045F4B8846856ADF0AD735FC6FA41F7B6C002E9D1EBD92468E86C843AFB7
+4D78E3D54D866029DE5DF865EE3F7313AC358EDA70A792E22F2F806EF86A6B57
+64AAD565C57E64B1A6635B7394B4B5729189319FCAC8529ADE30633B9BDEE0D2
+AF1F8944EFDC7C408FD8FC270822CC01E7BA355C856219B3AC5D05CA37EB0EF1
+6766D62383AEDDA1F7CDAD1DF0172E766BB46C5FCCDDD61BB019D283EDEF312A
+B2DBA38C9BB0928FB93F50E8516AB353BE04403D132805B5AAAA17163AB9C847
+F1B54946B0775FD21325C82E4EC7F2186C54B4396BC4B0B913A59E4444D11B39
+8AB56F2FD5788A9BA45DA5499A50BA74D28707F62086907BF8342E0C753A31A8
+DE293B592F51D74DECA52858CCF76C69BAF2224F640069BEF2604983FB478173
+792D68030D7A6E3FE083AFFE9488D872897ABFC88CA8BFE484A75201D73058D4
+72A8A26A50BA1F2B50CBF98D46DFED0BA057619BF370E435A0400147928D7C06
+28DF2A03527E3BE925D6A664E4640E63BD22D54A038D934B3DB5B500E075B8AB
+06DB5279274E65FF870F1E5106E190AB0FD8849EEE2D605FD4F0DED2C3F86831
+4EECBFAAD8B2A895F08DBA692A8176F9080045519CC6C46B52F0F31DF112AD79
+8E46B9899C5527A011AB63FA443ACE90F09434C295A5D9E6753AF2645407488E
+D29E7711546F87265C130B76B4632242E43962A5C886D4DB6316A2F3420FCAEA
+3055AB5A9E1325EA870CE87F34BB2B3110E4919E1AFEE67606B00B03DD6824F0
+20BA42968B81DAE198C88057438E36056D46C550E3E5E03A99BD4B07E66A2179
+BBC5B3FB06D5D72022C53A3F3A1B759472D5A50D7F7A1F4E31D3F7A30EDC1D45
+4B00AEB5DF680145A123CCA3BBD801CA64B2CBEEA99842720F8DCE432909AE78
+5AD3F29AC69D302C62256CC4D47AC92EE11D2A3E1C666CEA24876491BB167548
+9E3A990252DF8254CB5E7141F57B78FD1FEB38BE135815C6FC86EF81B5994711
+E43083C3234C55DAD97CCCE4FF3F55C5A6C22ADD2C549513A465CFA3D8A9AEB6
+331374DC05A4F496BE33F9263172FB6FE1CCD19EE9515C5155ABECA9492DC743
+BE4142D63FB5E17D55C9FE642F07995502AECD9D555603D15B5BE420A65A6E98
+4F341BA13E44DBBC1DC8CF0D561198A2B40FAF35F7ED5FEB4429BF71F5C88637
+CB114F1377FD3227EDF592733EC68F4EFEAB14FE7C26DA7031075E04289FA6DC
+8A79F81E4E18CAE8380CC585E7DA3DCDA3FCB53929AA8D772D53FC6D821EBB14
+EB472017FB56CE9410FEEFF14EA69C188993922DAFEC805F4C8028537A9D6365
+AE1A6BEF37CE8E02B995C41382984802AD3D12AA9FAA36837F9F9F8F60D16B81
+474238F136F442CA9B14620F83E4046E41EB0FD02BD04DA7863DF26624B5489A
+B8BA35B0B3A8D128FA10E01DC9B622C26CC57CA79CCDEEB7E174698EFDCC0CBE
+879AE1434B3EC5AF48E6C2EC5652DEFE0ECD7415FA46BC0C80FCC57CC808B3DE
+CBE4CC7B62AD3B092487F7A23C38A2D9102DEBB1CF4C1EE7FEDE1E8BBCDF7F73
+54CAB1E591F9B3B3159D879A9492394B32F2CC43EE7EBA6E293AF12D7FC4ADF4
+DAF8F2F48A777E927A915DE1FD9125B52D406BACB0BEA149F6F6D79D92D06413
+5D68461A772D531F2E76D1947D2ED5BFFCD758E062B5435BFD180F7E3734D5DD
+ABD86A1C2BA643955A36C482BEBAC608F588C43E6EA7EA2AE01D0346D28F50CD
+BA8F9FD23674AB19A2B879E0DD19029EAC5D74D16B186CF4BE3382E74E361427
+536A00347E536701808C1D31A617D1F9269110B76A0D59C7B84D98C8FE308733
+C9497B807A77D244FEE03ED7FB5EB4D6ABB74A7129F23AF628BC01BEC6C43ED2
+D62F4E2133006FDB94D33CD31F9FFE57C8C9E31DC6D7A81A2C6ABF1D971EE222
+96A4D79F7232190EB796A43ECEB88F1C64A88A10C3AE8E98711EFDF984BF270B
+55C5B9082D54DA7D32B168CE573597DC5A453D76953DBDDDBC1798F8A645AEB3
+78B6B5BAF60C9AFA9D5F818740EDAA977EBEA0F68E531550E607E6FCB04F3E22
+BC9D6440E1E153C8D780213DAB08CF8CFEB03018942AF980642745D711C7DB1D
+BEFD825627798897ED8185D80234B6C087FBB602ADB1263C2A2A0F59AFCA7B09
+EA4ED3BCF936C2DAEA9C8DDAA90130C24AD1A1BA47711CC760FF72EB3F27C165
+CA1FDCF1250C6CA4A788AAEEE08902AB4EB03C6EDF281CA2F5B074C859DE3963
+27F7CFC53CC91C80F779ABB25F7A6601453DF5606B72EC562F615A92C1DCED58
+3911BE7784B6E8B17F8993E4D5693A327F9C289701F39ADCF583BB4EFDE1F835
+1A59BBC2E6B73CF422D877B0B423E4E8FD116F5C66A4BEB706A3D42E7EFBB5E5
+E73CD03D7A91719337CC8E13F9D8DA255185FBE3F4FB6DBE8EA90AF036A09BE3
+5047B59BC18C1C3658ACE003B6535E42043E4D7E6D79E0B48B3D0DCA36C046D1
+D5ACE0B6F91CB78BCBD144F3FAA3D9D711C9D11EC30B6CCDBF43CD490E9AC229
+9ED2CFAC4F53927040CC8FD26004450889A1167FA34247B7C283A46E4C0A8C20
+AB43314A34EF0BC02C5558746D35F2315624FB9D4A8ED13E3D1A8B80B872798E
+CCB9775F985E31E8228B03949B4E35DCF7A41C834E53CE3C163EEECE81A8278C
+FEA3A9E3264627D33738170C12F4EB23EF8F00811723FA4FE56A0EFE8ED5EBE4
+90455B690EAE1E8F1092C1AAC07FC418A6790C2DDA6DF739B9B586B68263EB63
+718EAD2B11037C5D26FF31FB2E56AB82773921B00EF07DECAEE2A8FD71AB232C
+86865012F1FCC80CBDC4B0E881819601CE2FC5AC36875F2FB5C088436BB11159
+813020F0433EDF6D96FD162F5E3241F88BA7025F2B010208DD1DF737FFF1185B
+812864C3049CE325E06610404C8DE9322187DAA7FD90FFDF2DF3C86D94E8E792
+377C1C1F10FDC78E1FDEAF718A2857C4922FA300C8D3FAC136BA2957C675FBDD
+21E3A9E29C797142BA6D30FABB0D5E97AABB49D113A55C4838B253AB8D7443E7
+15596B3BDF01C88C17135A74AF78551CEB6B0041BD17ECAF89321E6948E1C531
+B227A1F071FC3558501BFFC842A4F8B80C14D9213E0633485A66F899BCB473D7
+3C72329610575B6279C781714761468C785E426DC9393564979B1D6A6D55AE9B
+4954010208883EC964F35E8363129682AAFA2D40E1ED08A4A1DF27F3DB5474E2
+92B917B45D9473AC94EE40662DF06AC9D004541B6F88DF5AA4A36756620CBE83
+1254ED1C3C9CA39B09E0D4148DA552B00FC60FF68E7159F556998EB8A66C8EC3
+3B7842ACEE888BCBD1FA183BAB95B06B245ACEA49F8CC51A2EB01053E99E9A87
+A5198C2FC26E270961FFF61A093A084594E6C0298CF96B251C5F8395ACDA26FC
+461E6DB774F6220F8FA04C68519E19CF69EFA73E9A1BDFFE833B228DC19571BA
+34B7AC21EB2BF8B1876BD11E128F002AC9AD6A9785CBBFE2D5FBAC307BE7CE5B
+DDA7C12820028FBDBEF1343638CE166E43B95E6518A83828AA3C3628779FB2E4
+CE32DED584715FD18C95D38FA85772DC8650EFC42F980A1ADC012ACD93B7E1E5
+FA6453179ADC6F17C94FEA1F4CC2EF6A2A975C687ED81DEB7111F0897742B373
+30720766409C534C5E0A42D7221337FF3C4C59BBD239518F3976DC55FDBB8C1C
+8DB9CB4B05B1D9AFBAF0FA1D82B1564AD7FC92B6CB3582F7DA309403EB78916B
+BFDC6F918E26A39755E5AD6394D985C92F7927FB1287FAFF2F60248236F918DC
+2E8557C6805B01090A037E8D5C529E2D70976A9CBF3785F4BAFAF9923DB40756
+7B6CE8EE83559893E3930790E5917EC3421FEB042C0CBF6CE74F16C44FA08025
+82EDA0833C0486CDA66ACB450094BB65F54C83829B47DAAAC9E4CF115FC275C8
+6BE583008180F2E2C9B003712ECE32333199BBF9772A471EADE59355FF264DD7
+ADFD42FECCD00892FB545DFE555AAA4B273B82BD2740CB8C9ACD144DEEA94188
+D1AFEDFA1FC63557F9E527C00AE7D14762FEC2814487CB60E406F8D4A47365B1
+F7B0E0A56CEF011CC11345674611EBFB5A7C587C34F786498FEE4F0F999AF42F
+D955CF2ECC5B64BB1C100310DE5B6C7D106A80FA4ACE0184A6E18FAC544EEDCF
+307334E1C2A0CB6E488B21DA3BDDC5B593D5ABD6006D1E2BB56336EA88D56DAA
+62DAFDDC379B06EF80E9F3661C6B7AA6787ADD06155F3DBCABAB6BA3A46C9047
+5D295774447BC007D5423B9840E2ABACB5B811B30ABFF547A8A6E2C18A92DEF5
+D30890D49388E80E6EC7626FE3236AABBF64B21E5525FFB7C802511129EBFAD3
+D1E19814500A465DA92054F93FF77864698288510AB599237D0DBE1EECF81C46
+F706515DF10A1D0FB06939473BC72429A42CE6E15BA2C97720756D80DDDC171E
+7E8202D385C2E5B4A5A011933CE920E98A09527DDBF49FB4DAF2E736B1E42F57
+354C91CAACB68BEE8FDD10F4DECF25ABA4EFFC4588DFDB9E98640737C015EA04
+A33D5AAAF9AC4A7D288BC9D4A8AAB9B852516E215DF7614B10BEF003EE1D0572
+E4654DBA4D71959D403B936339D41C381FC1A206BFA6505DF3082D9FF767EF67
+437E8C2A14A8B6F0FB98C80DCC42A30C57C8AC3FE83570A1B4AB404374B85F45
+A1056E389A7148CAF714CF6DC26A04E3DE8E2E7FD26F6CDE3E836AE65E593A9D
+3FA7A24A32E3E99A152009C8713FF8960FC93A2E49B8F442B81A90F98B99E140
+5F0E0253DE8ACE69F1248040510DEAEE069307FBD02B821D1DAEADE6C41111E8
+37A80AB702B8D79977DD73429695C13DF81ED3B562FF4C168AE03ECD24909A41
+22C579987CBB22700D1D34BB16E5D0B4BEDB4660D34EF5CF0A4FE507198EE14D
+9FAF7C97CF769EA9159E1D8210B063141913DD402BAFD515CD746A7CBC061A74
+CD6D6DF78AA722FF543C5379A1AF5102B75C06F73E075BD8531353892E1733D5
+8143315C0C780BBB21D6954119C0AB1D4C89EA67C0AFDD4607AF07D509F481A9
+9045776F08003CB429316307E66E1F9490E8547FE0336BDD8B070290558E0DCE
+DB08FCF371A8A9FE905E9C3BA4CBD4F12BB2F512838D395BBCAB1488C58122C0
+CD6D3634C0F6E193E2F2E8C632BB9185B20D94503E02244938D4400F0DD8FB81
+3AB0CBCF32E462A223F9680A14AC8876917ADEDCC9B181D584AA307CFF3B66B6
+F59FC840A9E8D1BE101AA1DE41934C22A1017A8AF69D257433C2D2C5A0474F9D
+362A669B4044B3990BF83E8906C5B7E2B45D688CF12CC1FF38F2EA47743676CB
+55FCD3C6261C6F5AF002869128882E39E089A6FA108195A8B86CB07913FFFA6F
+6D8F8D5C9E897D63C174825286953B9DCB09B8475D0675E09C1D26286107E89C
+C75F92D14002B1289A5E11F059F28FA27DF23FF395EEDFD5F22374FF67F0B60E
+81D249898A228A6A89141B23918E977BA79C5F5E6CE84FD35F51B136D81428E4
+E4D205612F6DEEC1CE6AE571B30A33DE004A8F096656A3BFAF8BAE8A2C73AA53
+D7984D6777540082F3674304D2C3F17775BDF86A27563CC2BF95F190DB3E28E9
+FBD0716C0F1B0D56A96E2E870882F03A3E160621FB469355859954858C9CC2AB
+06EA8F87EA163B9ABC176D704D3C17A37508864381659070B071B80C79D6D60C
+7858A32F5DE87B1F818E78048CE81E229FD7BD91286ECD773147F94E7A184450
+D1060F0FBC5A8DB06BB4009B3F5F50EFEECEF8FE970E3FBFEB5ADEDE9EAC6A49
+AECCEB5378A9CE274BC7F25D03CF477C2054D313FD988A4D913D20ED3981CE47
+8674501E487FEFE5DD91CB0E5ED24BE1D2D45C88DBE1378B11F6B7076FE56BF4
+8E8925E65FBF23330B9C4A943CD96EEC06A6073AED304CDF520CD2AC1CFFAC7A
+6B8D8FFB7327834C9DADF578F250A51BE64D27A2B65A16DD0204635560B47075
+3A054F7159EE483CA06345D3D55EFACD47AD32A9D7D7404ED0CB742A3AB8C47C
+2C5CC71EA3E1405D6E114DD53D85C2350D46A8E4BDFD1667C65A8152D9F3331D
+6235F40AE36EDB507325E21496725F3351C239207C0C4BBAEE2DC7D2797B8818
+BEBAFCA4FEDBBBBBF3FDB633A0C21A8BBA856D4A3119394FB00AD092E314558B
+99CD5B138D4A42BB7B621DFCC2A2E2AD262479E878D8F26195A643BA0D13F9C9
+FCF3B6BE5774DE6F4564FB82BA3B2B9BA29A5F406F1A135D46DB10C80CA11E1C
+39C9A74A18D8EEE86C85556F8B9203E00DE0B1A164134E48FCE7F37AAB98A79B
+EAD809EA81192ADD3D3C6B35E521AC99E190262E5454C7170B081CB8AE338D09
+D489BB694D228CE9C05DA95297BF106A3B71A99A5F199F122971F5C4B0B9C53A
+4344FD111B92AF456697E0B85142B71FA56802C392C886A408558A297EC3C717
+FB803CA1002361034D40420699FFE3C149800137EBA3AD99AAAD74B471038675
+8B073F692D278E0A088D3F51360C2C79A83FCDABE9963A4D636631310E7C6D35
+EF02828CD45CEBF9892C2761D934E07AF32BE74852C13FE63BD3DFF3619CEFA1
+25F5FAC01306FD99A573F0F5F29116967FFA22C9236EE8EB052488C4CC204855
+EEDB80B30838AEF66DD960389684231FAAB83750575E4C9BAE860D9B0F838927
+791AE22921BAF254FE561771B7A9164362D6BD462A82763F6D19737ADA1C2B92
+BD72443D7521795F9D3702F83B04BCF992667CA255A3AA539CB71F25F2D0ED57
+9E0B180D1C199211FBC17EE282E7CA9E078593E6340BA651AB949482A0760790
+E4C3F1446653CFF964B9A3142FF4FBE8C75CFBAEFFEEE1810D38033CBDA2FE9F
+B42BBD97740EF0C118C7954FBE81FDDDC74608D036A3BBB75EEED4E1A4A56381
+0F57C993C4651E4753A27684D170EBC495D09202AC0CDC5F10267EF26EF4E7D0
+908F4524C91AD27F43737253BF0617559F2EB99EB26643D8C28B61F8968CEE7A
+A79A818887ED9BC3AECE4A35AB15752A368D09594F93B7A741282DB5C6E42144
+EAD79AADE23733A43500563C3AD34E0421D1E3B4642EC1D70F0054E3DB6CC218
+FF930B11B1CCC3E4C90BC523D4635161C89CD9FF8F2C4F6E4127ABF479914610
+4D95589775902AE3993E1CE3D4868A1055BFF961CCB244AE25C76C4CE556B8AF
+98129765EA10B35FFF3D24DE1CA68BA55E133084CD2562832630E302C3823EB2
+5D7293D0C760EC1788BA6BC9ADB7AF6DA83C951E0A23AD98EFAD64AD387F7764
+21320EAA8DD04EFC4C2BC011185DAC3DC1FEF1461F3F9ED515E2240433D855E2
+0229E1D5269092D0FF790539D2946A608E82E1FCA5E3A1254B27AA134C300FFE
+C7C724824AE8B8436577129608078274BB69FB6A026D0CA48B97314F596EB375
+390574158057D3E1C3EA4AC61BEC73F81C706A6C7A9B42EEACD6A4B5C4E69FD2
+C68AB11CF02CE3D9B7148BAEC69F92FD7DAF6C9D772BE60AD4579BCE18396E4B
+60EED65E6E2E62B283F135675C188F58C831B3A7ADCACACD39871EF8905B3264
+567AEEE25FB31D64C6596D60597315F1AD8F74E5577E6C966F8F65B001850D1F
+39F0234F0478F6DB136F17F20262CC072B25202BCC8A67EECB03A2834136EE5E
+8FDF55397F3572922DF82D25376DA73083419420003E99A020198ED0ECA44A72
+DCFF31392F59E14720BA027A5A5E81B3C32BE7DBEE039CEA50AFD5CF9CB9080B
+3952949A3165C5AE1EF9D8C76E0C901DF5013469D55C8AFE1554A74D6C565533
+FD00D77FAA0311910C9C191ECBE1A0FE30A4FCDC3909D4F6322DE2DE90865099
+ABAA1A087DE9B4642DB649ECA28D40631EBA0B3902EA6D70F9260EA9DACBCE35
+8EFFA26B2E8BF4567406788443950D8A71339F595C83E28111FC90181AF60EC8
+9A7EDDE1989A2678B8C570F5D0BC178C4018626B9AC851604F03C98469EFDFCB
+BC34589B59973E918756A2C1BB7D1811BEAA17D193DEA92EB273D50AE5C0FC30
+661B330B083311E5D971D70DE46E2239532FAC9A6D8FD913E6DD03F42ED6148C
+4F04E6D136D41C24BD9B973109A9B63233E51176EE64D247DE1C5CBB43F568BC
+DBD5A6AEDFB68E5A0C8DC465E9949A96665AB78F41132F96F3680B5A9A79DC44
+828FBDA04368F277C40F629961EAA9F3B253276EE252478A9F409C2FB6447C65
+37AB9FC9A216970D7BF6912FAFC92BA0C000A58950291FB3E47F0DFD493EC7CC
+A99555CACEB7EC87F4250AB92E7136500138087A19053E9152B6F007B8D3DE8C
+96224FF8D464BD3289C08AD1E05B9D063375F38FD42CE97ADAC4E5B83B8A88D2
+B2634B95A0DC0AE6A407E62D153BFC434B42680FD0F62F5FCF0818182F182D1D
+6B9EBD47149F8506CF38BA61D8AE460A8B660F40DEFBC9243154E5683EA8D574
+8D48276FE5128F972D96E42D89E374F7D8C72E70F84F028263507BC96F6B2B92
+EF4B992CA46361BA3EDB888A6E5C57688198EF10A616F7DCCA55B4E1645FFBEA
+C2201D5503101C400B147CA23A805AA95FF059120C677C32ADC486DCA6E775EC
+23BB704624D3755E09505C395CC3AB83D68F10E2D6E1497BC179F3CA82A3DFC2
+38275D10D3253264BA9C32DA47C0088660037C7A789C1DAF75D0476BA9ED5B62
+CD30BA0E268DF3537F8298BDDCA16B1C970C2863B21CD839FF6B713438447A4C
+C58C1F0ECE39E126AAC2353E31B6FB808253501CF26AA3AC48433D4CE5A946BF
+10347C814A195929213655345791FAEB7986B1DD4F2B0C9E7116B11A4F1157CB
+933B48B488B7DFE700423AD4FAA7E26F003B87B6255BB607A3A639830D68D663
+A3350CDD992B528E3D2176DAF79AC03F6455B1BD626ED15299042B46F03BB46B
+992109329C6F67F1CD92A620FB4D806558D6CFDD75DE4F7D6C558CD5325302BF
+ABBF40001F90CC940511F63F32F112EB958944E37A603642C0CDFC7941D9EC65
+F1F5B2805EC17A6662FABEAC3F1A7CE8A4958D64FCD57759F5CA294236B5834B
+0071972DBCFAE0D89A1BA76FA1EEF2C8ACB12E45C8D8939B3EF1DA3970ECD2A3
+30AE415757A89E44CED997FFF9F6378FDB532ADAFB25872A690137609D91405F
+4FDA7B432D432325F1467A7C85363A9E2825F86D5B9F9523E53FC5B58D82CB28
+90D43D172B2CBABDA71E5B83928A6271468C197108584BE45647AF5C9BD930E4
+18E321AE20B3D28980B1CA53F8B2696043BCC4C925F218B0AFF8E8C2BC1B85A9
+134BD28FC51E5F4E803761720601C5D9D87921116C342D832BB14EFA08032E5D
+7C0C4F14F118883DBB1CA0313B6658E3BB5A7ABBA4970CAB64E66515031BEEA7
+F0311CD7DF8CCADCB38103DBB1D60CE59FEF567B2755D0A65100C8F8EA622025
+4AFEC5D179796C4F87808A76B3F420A228544CC12427AE7A5E2FB6CD76D4668D
+BD5A22FF8161EF3FB20EE9FE64EFC4D1E466DEF81D20A395B020BDB7358E80D0
+6CCBBB8725B9AB973B060770E4CB902F429D75295D1E5ADA0BDC01D0DA7A4ED2
+A21346CC735F3E6662B87BCDED41C39EB2174C5ABD9C89A4A6554B3523E08BAD
+F208FFE1095E6641C548DC0B7116851695AE8813E691347526DA61EC59DB43E1
+03BD503968825F7EA207E22EA04656780C15E1E9D0A00CF8CEEC4D3FD48A4E93
+7E82A2D0F952F5ED616618739ADDA48480DA4665526260E4269F135C89C2F28C
+28B435A1A40C924B79934D6CC536A58D2F102CB46E4C3F6F5390008A7C7B5E28
+4044E385A5D6FBE641B6FB074C4E15DB9D25152E503EB7DB52F45913FBD962C4
+550310BC3592CF1C56A7E19A73261219812CA9A818856901E9F0FC46FA53FD67
+20A7AF35375DC845C8A9BC82F46C061F46233CE3F963C6AC49CCE0936A1813CC
+F7904CBE756A07106AC3D9B58C28EB405FE50A12710C7FA7B4F6900E163125DC
+43672E2C565C6959C412F7CC333F49E0FF5B1AE666E0770255C43E1779A67D7A
+BD794057140D8D1478B7B3C43C84C2C2E56DCA12A1A536F80B16BF9C5244FFB6
+906F2729E0D6C3A6AE9A837CF39F81668CE7B299F4EC9825892A961935E4C81D
+7A9FE5D9431283C53770E41DB77A70500A9B21D63B2F073D75D8E11579FF7C63
+3D1BD1D11EA3C49A594D1D83A733ADB8D887AABCB81C32E3913FC4B2DD1DFF11
+10C193CD5D5D5FDC8080F9B99C9B29A86ACFD94EAC9E052790D6A46E5A5E946F
+6AB9541056CC23323C09CBA556F1B0F28BA2C30E039B3552DDBAC17B9311BF1F
+648D3527E8650B3FC89CF81256E9A4A9054D9F1A9839BF7E0B875D25EAC8AFA8
+2B5663DAD7CC7DED3206BF5957291DF837535DB23BA63F9F7ACA7141E1490A68
+327E35FB7888C160C2D47BC4A7CD84194FF52646DF43AC83A51489481CBA4D20
+1E5094E7AC3EE66A5828BF1D87A530D7786577F164AC3D5C0D624FC6CF1DDFFF
+C2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMSL10
+%!PS-AdobeFont-1.1: CMSL10 1.0
+%%CreationDate: 1991 Aug 20 16:40:20
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSL10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -9.46 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSL10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+readonly def
+/FontBBox{-62 -250 1123 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142
+08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C
+30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF
+C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A
+BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78
+5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D
+43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1
+374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23
+DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4
+B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83
+63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B
+89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A
+5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2
+C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5
+7A5FD1B49560969BF5C44F3749370663A04776F749DDD7B50674D93254426C4B
+EFE264BEE7810EC93784B7C01A7F29EFD92547E13A2C7851A2E709FBD5B87850
+4A44F08F56A542DBE072D2FBC58D9E6468E1AB858DC35240E30D31C7AC13D6C5
+7D2BB634BEE96FA0E10F842B11A789F72A333DD6DDCB1BC23227EBC406E50B40
+30AF0C48E6359AB0C46898CDAF1118E46BFF8B00F54EACBC2AC262AB898C42B9
+2E080C10DE923C18AD2A2BE7ABFE6A00500618FACABBD844A515F5D7C7F7213D
+7084E7361377127944EB80BD687ACC3F3400538570CFA3A299054F000E0390FF
+5478FADAE4484DB8477D6E5E843DA9465F52C8CB88994A2DCD7BACB89D10EE84
+516D7ABC25A54AC996D6EBDCA47306CE267AF8AD5BB041EEB9F4B2CE4EAACFD1
+5D1DB53C1F07287450201D43E3AD980A644F39FB1FCDCE21711FD48169A9BA08
+EC2A65050703540945FEFDD28556DDA2FC55F7D7CAE89F4D176FBCB9A08A7BB0
+9F6F402A5087641EC7DB75D2CBCACADA9A373AC28AA030584C930A4F787C0D6A
+2E1F7B837C949DDCF59E188349BEE6721335A3AA15FD72464171B978C66C24BA
+5F94014AD374ACC4DB2D6C93D3C8FE5091397FBE134513AE4AC018EF044AD529
+02E2336906FE185C146C54EDCB967A7619E4403F9CE78491DE897A99715E0724
+028CB94B23C8141063150EE57F90A6BE0994D689C8545D763A8C60BF8A14AB1A
+74FFD3FE096003CFD3A7C4BB8AF842BEBCF18CB9A22A575383956D85181EAB6E
+C2D44AAB62708F00DEDF1488344F09D1D08B3EDB11D617A161A473A7570E15D5
+600868BFFFE8400320EF767806653ED6857CD72B6F038133C56AD7CD47A7B38C
+9B2D909F4EAF9958CA3CDE2A6227254D968E72E24D3005E97C89927193F648D2
+D2FE80F2845860B7C3B3F23570A2C1C5BD6348B905969E3322E72510696FCFF2
+901F55946BB66CFD2472A24C3093964C546ECFDAD7FD28B24EFA1ACA58EC7BBF
+470572D51E602B8AF8F42F8043D9A39D7598B61CFB7EC1E09E1FDE59A3AF2EE0
+6E402EC1335C147FC7050081CB486676A355508563FCF063646D7AE6224E0C0F
+397CDB78934CA760E52E113AEB044F20AF17AC32AA85C319A58541BB43313032
+7374EFFD2DB344A77995A00ECB28192C3D65124F40A37E8CB3F6660204FBF2AB
+CD193C8A1F199F1E92196742CA88926F6CEB7F72BEA0182365AAAE458A163A41
+3A9F6E8EC5AB9F8A73BBB46591F87371178741A97AE3B39EBD8280491FDF2584
+1F412CC3BCC22F2F7892A194E548D4B5712F7AC3CA4C5D43088FAFF53ECA3892
+65C6AD135E9D3B75B7606E259DEEA083CB2E9C3822B2B02C4A42A965DA50C3BD
+7355FB5738E25881777111280AE04BC1273698F7BE40E33151055C8DB4E2F38D
+F6A6BA5DF17D13494B2739328FE2544C893A43759C9D615C41E85B423DAA600B
+4DEBFAF52824B3D296E1F47B666E2326FBE1CE1802252939F6EF819BE3A9338A
+EF3DCC2B84E3DAF00E7C0D45E44840F8793BABB055C561E0928F7AA01B5955CE
+E3D94A281F2D47B024D2DDFD1BE0D39263D097FF18662A63EEA49594BCB4F66E
+0AD12249D6FBD2F0B4B51411884C235A64AE1E698CDFEED19765749F1FC5C9E7
+BFCDBCDD7F23D394EE73F2B73C65F0EE1C1FBB4000D63A2D1947CD869575A429
+65A8B30EB7019F74B2B2048898B27B0650E2D291C8D3337EE09BEE0A8421E2DF
+0D986E66F97EFCCA660606F0B0A7B18339FC44C75134D8630C74FD296232B686
+47F3EFC94CBEE564EFA1CE4BD13947B32AE6C18C198FF5E3250F0BCE7A292004
+6DF7BD82592128AF3EB9DA27AFEF27878C75AAC551A9DD748DB7F58160C33C51
+3B28D39C1783DAB4696FD05D00D9A676083EA828D833649055CCBC47D14234AD
+F2CE3C0A887655FC28EEACA2EA3258DD0237E1693F9E6B59815639757EF4D63E
+837AD18BDD32B8E75D6AA862A057AEEB7201F5FED012C2C1FB3D9CEC057D3E23
+5723187BF8E37A6C8E7C0A4D19A78654D07C72725AABEB05958EC35617411FB0
+E66D2BBB10216B9AAAAC186CAD162E0F9D9953871816F1FD1A5423F43B2BFB5E
+1AAE96834566EF0297E2D69CD19D6232CA6D5B6E9E9B7855796817F0DDCBA391
+B523F461C746120683CA7F7D123BC715A1D1C4567EBCB3B27CC2F66CC022555C
+53AE7E06DE7B967D6F0708224EAF72EA3C4C349C6C1DBF4E3F9EEDD8D344FF26
+E0587F50407EF2F96B9FE5D4D1EED501BBABB525E43B9E34B1ABE4B4EE73C296
+CE2883BCDDADF33E48C8A879065E0079A820107AC5321F61F7A1BE6A9706EFB6
+598C0FA5F0C81C9E48CA22F86A9F437068711CB834D90CF79515BC7074C0E2BA
+30E0486B9EA0B3DA075D6FA4BA44ACE3031E166F9BC8D293683C1D3B94A2653F
+442958E6508B00EE81D879DD8EA003AA418A09893AD298C4708BC328A0A21A55
+62177339C36961B86AFC97EDB88206DA6712353887FC431D60344E483212AD4A
+DF9EA4632745674A51067E5F308343E5D1B5845FA6A623BF4ECD000B368BA9B5
+9400034817AF11E3E4A5F8D00368A93E5D6F1FDBC3CC4B0065208B275B9858BB
+40E57BF7C98A4E8158E84538E7541FD3FDFB11A015951187F875A0D8C9B7FDD1
+BB3FDB57F4C1D89B547369E1D52CF180C7C57F1F4ED0F93E98BDD54DE02B2064
+30D15CAC1DC1FB2ADA7D048AEFE4290B7F7E2AEBFB3C7D41EA1CFA52EA515C07
+520A359529A88CCBCA53FEB15FB263D01CF5DAC4096A00E5C6482841CC42AF26
+601A8101647FC35955587C768B7FBC7214098B01C53092C4869F65CD1E0E8616
+D6166662CCD0E2DBCED327A7C8A65F2BE7A6F2F5AF70C6722D3717C150F4BEA2
+C50CFD52C8473E80197084FD6220447C562981C6ACC17A833B6D88E3539D02EB
+84AB15E42E4DDDC5A8F8EC091BA226888EBE1985A465DADE44B283B7EC620986
+1D6C8B22D7D7B5FFD77185643146D49B6A5EC171969360AD890CBDA38F7DA67A
+AEB2ADDBA1EAACAF16A2C76080764DEC104C99359AC7B606197DEC3F91985097
+0B173D6DA02759B3406B1F05DB46A51DCA1B6A4D1BB709F5EE1C071553478ABF
+AD71F1A99A6A8E488B32D0575ACA020AA97D9E107FCB5C7BA9428CCD04EDBB48
+A1346168107718F3C98978CEC898A3494D96C724C355F01C04FD608CF1B9206E
+8507257264443BEECE2C8AD2986A5ED9CF5BC20F779856E29BC9D0E44CECAF16
+38483464B050DF21DB51C9AC852B60362F3FEE49F54152E794DA4BB628F1F1FC
+0C7700599029ACDAC782DB220CFC678E82C09E51694EE72E821ED4CE5B524F38
+05ADFD38982E5B91313757B55FF58873F8FF594E177301904C33BD54DBD196EC
+437060F04CEFD4648EC5D6CC04522885ED6F1887393B6E6836F3768C9207EA1D
+9CCA8B396BBF77D4FBFBCD401206B629AB96091B729FF137A152BBC0485E49C9
+A0BA737BAFD17F53F319C202A90CC8153EDE244AB5EE452687C496C2E77FAD68
+21DDA15C279714E0F6864882FB357599424BC7BE8695089F89C76F12818825AA
+8E1BCE2EEB1E038B02ACDDDE39C803DF4C8C0D38228F852A1DCDCA97912C59B6
+6C3CC7E533CCC630DA6920C04217E141E2F32AFEFC294A58AB3C95B326EF98EB
+56E3F430BC78AF90D61BD5E810C9887877E93DC4D95DB2DC1D2C3C07D9BEF1CF
+EE6FE5786CA88765C0899133AED7429395326A22D822027A4BC0475FE2F74EB8
+BDF61C69C950CB72F45A45F95920E2412B8D776C6E8BD6338D3AFBA07793F4D6
+7AD4CEDA52B8CA8BB8CB29DB49F8D5A920D1E167242F26C7D51FEE79677FC4E7
+0E711ED65A8FF70517BB5283E057D8C8B1175934F9567C4C7BF479839C2CFC76
+D990522E64E93579625F51A8D85B5CA4E3DC5ADBFE802F0B835F664572A2AA40
+2EBC631BF40F7F53C12E1156048ECAE68DEE3BFAAECB70013B7DC4C2ACD5DDE7
+D64C094E0FAACAC86246C5B9D522F483189D359DD65337DDCC6C4438615A99DC
+1936E0C20D2109B3E7023F019BE2F006D12B5AA643C7B5443D73B7A3F28B5B7A
+D8B8417E5B747A27FCF19B5263D542D6F2E02918E0B7A3574050641104FE2711
+33E011619A91AC3D293D98EE25C2549C895FA14F749E76BD4E81F4FB055B8FD3
+F2F65DA710EBEEA9AFFA46EBD7193F90D3112397A2AFAFE84CCF9DE1EA2147D1
+907C47480FBECB6A6EE3BDE00C63187143E74F35C2027714B30FD5F09D80C412
+BB820C5A8A30F3F11D395480FB43C20ABCCA913E6EDAACF7338A68EC3277A344
+D571E1D2CA0675C197BFDE9B37EA3AE6A43DF326E0AFD91D9514A962E44617C9
+AF848839DFEE22086E4EE1077403E9916D32348D4810FD973B7EBC4086700F29
+2F62B0D59571A52A88E6E8A64193228349E288173F794312189F2BD2E1FDCC97
+6881C1921FAB253BADE378D303BF2277DF8BE6D1C7A56C36C6CF3D74C6520AA2
+37333C8C0F4A8F1BBDA2FE5920997235C8C8651519DE875BBEA6BA56C065AE5C
+6F8C1C6227971E3DA49BE96C70263FE2173A3363585096B304DA49E46BBF6E34
+715C7F41D56722C326CEA609CB72907D0732EBF080B538518CF0CB0635B0F97B
+625F051EEDE437AD14A05A84DAD051E3425871065E4A2615874C30C0149837D6
+B5A2893A49D062658008FAB040D27101F1571AC352ECD9672E2A30027E204EE9
+433676723D012E8CC81569EC240B50C4902C5D4B30259BA95B69E82D1B81597F
+CC48B22EC65F7237AF0B0A1595707489AC4452D40456E1247080B58A98419EE4
+4BC1937D64008ED2B1E7C13D7FD261BF3B63F65D7EBB05A00F057D78554AB6A0
+9AD437F65A25158A55155A9CBB0866DE98A2EDD5550590EEF0E1333DF5A974CF
+39E4A61FF9F8802F030DEBF5039F962133D952073494FDBDB161DE14A84C6B62
+C54A5C749AE60EBD07A0C29842706B74B75BD54D5092694B1325A58D5CDED356
+CC6C8F81133915F05995EE1885991D3B14CE0794804F3BF58D5CE83BAFA05D5E
+A005736C32E209E08555E88798A225113FAFB91F3946B290859B52D94C011F9A
+295A554C3793C20ED3E3A6B5BE57B533E8FD92A5DB0F67A048743EF6C1BABD9B
+FE787A1282E24B098F1276CDE25C6686E5455C8C84B19BEC816D58A5642E1660
+8DC4BF1D7EB903042F6B57687E6D9A25058DFFDD5A55D27B4E8E30ACA5C11A90
+CBE71DCD014E3ECBA954DE2EAE0E96BA275E6D5FBB2114BBA5D4AB02F9693545
+A2F3307783FC641D1767C8AC174B98876767E4ED9F6E22DEF90BF7BA35CE7173
+C7471745C7E3FFC15D15C135A87F38E96ADBDF35A36E86A8C30BA572A4A22FB0
+365A02B3EFFA2491C3A9CED6D76E9293AEC8724E46DA15312444FF8EEC21077A
+26E54E8CD9B077C81EFD5745973DC67C072BE37D4B9B7C6C3E6DE4E74C035022
+52ADA17568968E18CE102CC748D679219D070864B2A465D6F4A2A0A4A08887D2
+BDF4865CEE5BBAE5C764373A5B44EC9B399387F79B84F5A85A5DAF403F64CD29
+6497560F918AB1D65397363498FDE113D1C43085B70F3761D6CFF81C64343B55
+113754EA46D2CC06ABA93EE3D388AD8514579CCE2CDE11E14C9C1FAD283F57AC
+607BD42A8DBDFFBC679BC1B858A95F2A1F2BDF280E8A19C98EA5E5FFAD402AA3
+F03F1806AF305F072CE35F644BB0C095D38FECCAE226C00B63D26E367234E1C2
+12DD8D4D9CD3264A39749A76EAC7E03D389D6AE33B068B2D42A947C2CAA69295
+CFC49CF12D9898F5A54F12525B668555F97EDCFB8B0701A14DD5EADC49BB8531
+5D6D7A1A4C78C895154F4762BD3F34DA3A3836F1B52695A064530984FDBD32A1
+D064359695307BD42FF880489735008C405B63214F58EE970DA4F171BA941499
+EB22232F4EE7B4E3D6063CB4FD10DF9D6EABA14220B994E5BD8CF96E21F966B4
+9CD5A96EA1DF4430C46B043BDA6DB7A3C581A67AAA1773E8208E45F43DE3AE95
+8ECF8210DF6A0C3A69FDED35554CFAC2403BBF4BB808DE0DA9BC3EC57604F150
+17169E5A4BA101C020203EBC7CB27168348087687BA16096105BBCC82A0529EB
+6E39BEC21BB348A074A0F2532307ABE656A0051F1B87C2B762074F7EA6A2611C
+42244AC5AC971E43753FBCA6C025A5B9C03E573E0A9B42B43C2CD0E9FAE39E49
+62490710A8175427337E393F80DF3AC43BF179CB829DE6331AB86422FA498833
+D1C14F83E443DE738C7A9BAF36531D6FE7274FCF51A152B6447B15275AC70345
+A51815AEB0C014299B15E880D593BA8631D656F33A56B5FC851AFCE74EB8640C
+0094ED50A6931FADB9C20C453690BA4D6EC88ED660AF05316DF2186757B7CDC6
+FF37755B746DC9FE45100117F1B8093F96254973D54B9DC21AC8B430DB9A6A5D
+6CD60B3C822958C48EAD747F3C8AB10F47B29382BECC04D96B24B343CE86E7BB
+C0926A6D6DED8F9F5E9B05F1CDFD07501315DBF2522EDB572B5724413A8051F5
+D84DE87C7D8C505256194D083FA9887166547D96576ADCB15D9A6A1A5886CBA0
+46372FCB670C6E95E2EA81DFB3511134C0CEC3C9280944958B7FA2B00D6A87C0
+D28A8C30A8F6D5FD6C61B152DA5D43F5525FAD3A004055212BBB225AB5601B65
+D684E9B4CB5DB6493BDF74B1F75B12F33ECDD0AD8103F865A36F2309ADDD8BE6
+229CDB25B3A922B591322257AB8A5BD62312758C5185D34B109317A6893CCC3F
+BC668B9E0EDB1885D9EF6A6F1077CC9B025C66F4E20C0BD2326F82BC6097A63E
+E332543684D7433A7FA613E82CFBE7D081B484E71B5A938FEE191AC8C9C79A2A
+929E58EAA236E4FCAF87EF1A1DDE828A84D5D43C25F0CCCF3977C79DCDFEC056
+EFB75D03777F00F5AE7833F0EB91BBC1B6EE60B9CB8D6E774F72745D21FDC5D9
+472332B20CE5A9887550310CBA5DD35532E4E7A5C810041165CA595B2285572B
+29AAAAF676D81B1A028B7D9503BD9EB46B4C2FDF24CE4FD5926E4FE2E53A0D75
+167FBF24100706E09CDA5B76C4650F9CF9A44E95560CFDF63672DEDCA589D737
+F4E48F28CB42582D4ADB35494B41A4D37CD59986AE9298E1B191538253677D54
+E0DE24266E195A6EDD88B9A5FF4C6A64B20194E86C551953458637878E41B944
+8299B195E848D4A51EF3AAB030AC0048C780A12440CBFAF8531859586C97E826
+9FFAF28E8BCF0AA7188CD31FA9F1A4C4D96B01C8F1E64895F16CA9EEDE3B1E05
+963CC6B45F0E5C5C5C62BFE4522E30CA010DD477C61FA989F6D0F1D3A17ACC9F
+5A43F41A6015A9F942DBF8FDDDCD7C27B4FAC601C0415982E6FE6CEFA3F7C1E5
+9A182EB2235D4136F11D6F408BADA58654A928B58A24145E1F4B0B996D93635E
+AFCDA40907CC13D1C1199ABB4F08E015C8B204A3A6EBCA8EA9A2A7D3ABFB00B9
+BBD42CCAB8753DB0CC5968081A27F638831E8A78EE7CD3FB1D74C9355517A1D9
+3AE0BD6ED674F581B398F1ADAF2AC848413BD4AB04B606C7D45C55B736E3F7F0
+17E77DE215FAD7AEFC628062E0E5513C9F7E629CFAB25E14B4E04C0E96689AA6
+8F6034FDE0E206CBAA6ED4D0799A99B41105A5C136CE05CBE2700B7B0283D376
+782D3518644FE0AAD2993CCA0CA08A70A6D42ABA5EEB4B0F8BC6F729608BAB40
+9D046BE1BDA44A9FAE8D534C365D0B8E6F39092461029CE88B843E33F93DC572
+B49C727AF0127907FCAA339808291BDD960A1D65F83A8AB8137D48BE5D0C7496
+439E9952B2667D999916C770FF0F8833FF9FEFFA76FDBD8DBFBD8673D95CA735
+28452636631B8717E5081A8B41A192836A9BE01B60D545EEAC2FFB961D0EB73E
+7E0C5230E9AE38CF6754B6C6C9BCA4B819FA08CC989430B849FFA13260691523
+A03EB48C15A50A3A044C29BE621C4F8C124B53B09425AB326CFCB449759EA353
+B569DC0D6D1D7DC29C8B23A31F35A94CC47148033635C787E406037B1C618E31
+E3B43A9402E60720457F60BB4D5A31FFE1777644B053CD2BAF0D55DEA14434B2
+F230DD01934F90C7D3A20363058D96056ADE53FF93A84B6DCAD0CA78132BD6CB
+8C3C2C02F569DE5FD19ECE80891582B445B9D2EBD93A8402948A2BCB5940C75A
+9B7E35BA0A2F8D51F41D89D1D221887023521F707DBBFC51D3935137B07EBDB7
+FFFD435DA22425413DF92F516AFEB3F40BDE4BF90556AEAA944DBC5D8F17BAEA
+67DD983C2ADD85D37289932A6462B632725EA66E3A335AEFDC40C5533EEA296F
+CCA86531DB67AC517090633AB4DD8CBD7D8AA219FB1D58BE0B12E85D10E618CD
+0FC6A362B042C6B9FCABAB9EFDCE81702A0F8AD3C64E4ADE4DF40E88197752C7
+C89B8481FA463C3845A4226DC7E7F613197D689A6956906D487195C167EEDDA1
+F4761DED3428B835AFC14E6683D7B4AB3CD54E3EF8D0CD312D29AABE4A31DA9A
+1E488867F8B981E11207ECD854E55DB368A9A5BC9AB5FDCAAB67C9F0B5C27EC9
+EE29FBA4B8E195B8CD9D53D9B24E1830494B6085540F5467341D23C581FEB427
+52AF14F88D590F71F3A43407521FEB0F6F6D3885BDF79C8EE7414346853CECE8
+1AB8B35728A13632371CF9456A68C760155FFCD23D2029770AFE5DFECABE6571
+15FB24827CED98A2E39C9F3D3C6BC168191F0A32E1D4A3A6EFEFE5331555CE4B
+AEF8502F2D20F1B561AEF8DDF61FE9A9C0DE17E1847B8C18342682BCEA1481B4
+2E03967B9393ED8F64262CE87F5732B2A8F5C8BBA53068CE14AC143A41AFE6FF
+7D1BBD08CF1C89C3F9DA27436745AC6117B9C68A3410C1C0143A97F62FF7EE55
+4D23E7ED7EE9C31EC1913BC091E45E29E2EE681FDE83C55EBEA07BA7BE6A8883
+80E50B0820C2537995E2AFA62782DE1E30EA87A569AB931838BD7024D297A690
+106179136110A244859F1D5ABC6DBA94EC87C9DB9DE843AD2F05840D4F90E9F1
+91C41D5FD756E25FAD3492C463315A556A63D97F4CEE0971B8B9D1BB30A58665
+FD37B4D59A10F5365E3455A3DD3A732E5734279B6FDA63FE903CD70BC04D1358
+2AC8F9DBBAEEE92A8A933410493F9F186EC52F3304D50037C96A419A281541B2
+ACC0E5A9BAC9B7FAA8E0BD99B5251259A1A6EC8D3BA47974B9613948516857BD
+A3B84DF70AFEB122B14982FB1C3E88F6EC2284DB4B4C943A2854FF29B4AF65E6
+974332441DD5C83163CCC2F174AC761B7C702AB6C9754836E8BC1EF7B6A5E7FF
+9A86F51EA594E2C7CB13DABD156B477FFEE840EEA55129C3994A424F69AF08B3
+97D1663E33175B1159446831411E2F8C8CCD531FC46BDB0C1B590A396A3780F2
+FC055C5C752BC9DD17B1A4962727D4D255E5D6080661263244E38E1BE17043CF
+4DB4CCA19DA7CDDD94988886604746B49BC36C73E168FE7CC628C9F6376D3DCB
+B4DB779C0F29537FC2F22A5FF5DBDC8738D32973A64CDBDBD0FC8E956431E871
+8DD8E33DF06557E28B064CE7A7342FB658016BD92EE67A6E1F5389E977A95AC7
+29BA4581090B2E4D7D53B20F56FD9311D86A9CCD61D42CAAC4977674C8683193
+948DEB37FE15675B798F176632D7ECC56D9D48CFBD3EF0DCCB540BC072F887E1
+2BAF8767F80C248CA2843E9BD7D3ED9C693B6B2BF7769821A6E813518A810780
+EE9E13CC85358098797A1B19CE476831D3775D0DF7C7B90A8754E3D91FDA2873
+858030879318D96CBD2220402A008ED4040241138F4A7A0AB8E9356F6D53F819
+DDEF5FA13FB03DCC0C82CAE070E54A17C72B04A66EED7E6CF236C9CEA7E0BBC0
+29F6AC55678C3469F15189A585AE48156F620A2FA122B4F028E936CF5710591D
+17C0BB7B6BC53208849952DC5184245FA6CDDB9AE599CA076F3AB8CE856E5B0E
+9EEDE67AA13E8F5089C2130ED6A053979E0C62A104CACB2741089189F627099F
+42C3B82D792D7ED93CD0D63C87F0FC5FBB74CE9AD5DE2D81CCBF067BBBD2C323
+411F1845C287B87BCFC5CCD50DDFC6B906E8D89D4994C8188D1DC5A40B0AF52E
+5E8FF0F22280DDB503EEFED2236826F2EB9F5C3A23F343DD129A3D534D28548B
+F2B08FCD34D33AA861266F62EBA0AA48C85A0D4869805F235278E49D9BCDDDB6
+7C293B8BE5EABB67E64247AD01451912A522BA99F82A1C50087474F2C2020CED
+DED7584E3356566100B06A492BF76E6D0914D9A684ACF99AFDDF909DBCA11A87
+72FDDAB73425D666F55884D53D8E6DA6B8C1D6842B809A01BD806B648652949E
+A7D352FCC8BCFEBCDD860DC736CFE87B09D47267912558F15560328573F1E163
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMBX10
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 45 /hyphen put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 76 /L put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 87 /W put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
+7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
+77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
+2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
+FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
+DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
+7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
+9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
+CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
+6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
+E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
+8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
+3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
+EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
+0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
+4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
+1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
+757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
+0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
+6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
+E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B
+61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7
+92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C
+EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F
+43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453
+FCD9A4F194FA648F9FC0971734BB69CB73439CB0DD021D44A7C11BF295E81733
+4DFBA460FF3D654F9FB337E99E6D66FBA87A817EB9CA1536C84833870E3626DA
+55D48DE850D3E6F6B29DA0E7C9D681283586F208DB8D58042E3A7CE55BE84822
+C98237911453E479EAB65AFEBA3F61A763B40E74535BE56C9D8D06DDF9441741
+5C9D9D917439368736619717FAB4F06E2C329AE0BA411F3FD522D9C33AD8369B
+D7DCC9DF993778482F35F965973DE876FA19E109AA198A00658AB3F0D8E3DDD1
+08A573F2D525202AFC57E05D141E6C0BB811E1FE280EEA002B7A45BB363AD06C
+318D320D2C81AA5DCC842CEF66E7DF7670588CB39C9F42EE7763A3A17372432A
+173BDEF7ECCEA297CCDD76A835C36DCE9DB8F8CB66CC71B4920CF5BF055A5260
+5B41A5373BA6E4F63C85671D979EA5EC30D22163E6D206168A3827F465279870
+CA80E6632872F721BBCC622EE4214BF723551C846765495FA9921E11FE1A950A
+53150C3F5D8595958A47E0B16064CC3AFD65DA294FFD111153F4F233BC5468AE
+69585C16CFBFCA32C4B96C161F47B56661DF84FCD8ADD3EC086CFB6BB5179BC3
+A5469A1CFBC8620BC711F42D0D3139BCE4E38698D9C574450DB43B5A19FA6D54
+0368BA9F7A8DBF96DCD0B8968CD194264E6DD10A958846C278B8C2BAFE7AAF8B
+44C84C955F1A89A13E62A054BC76CABBBF6296DE00A79CD7C8C61C70F127618E
+9975B59A880685E126F57AD80F8F4D376E1B476BDFDAC868FB6AFAD9D694B561
+001623C4D9F55366D053B52F2B09EC08B81901AE0986C5350312E626006038AD
+AC15FE313FCEE1A2E61F8992AC00CA7BB7F997707EA377D37EA6FF35BFBC2866
+A572B31491F9B80445685DBA5E62F166E80589F768FC95BBC79158C23B2F1BD1
+25816F1486A64F76D99A638AC0DC101FDF390811B3C118C2D972B2E7587F6F24
+7F1DB2DD922D237A7D18FF08FD665355CFBBEE799D3BFF11CD94CFFDBA3E725E
+DCF4CDE4307E3B199D91893A365D04F43A5305BDD2538E28A0788E061F3A621A
+B4A04E5063B47F0109C1693A284FA43E8F1EA9B68145FF51C005D3FA40713BA8
+1879BFC3CAA881B9D885A0C1AA8BB9A8C848963020A5B15F862E7DCC78F25D7C
+56437215999EB78142C128C6CB1E6E75EBCBB1E4614E8516FEB1E68400C61326
+D9F9E8A41216901F77D9466455E2A0B45FF50B27B55A1E1DD4F243C92BA6B175
+8F7695CFA1E91CDD8651AEBA3D258FFABA6280BF2420A98FA7CECD552D152CFD
+A8CCC94C032087A28D68332769DD2CB4ECECB15717C245BA305CB616CC72644D
+C78326E77FA602364A7B1630CA0BD0282FA781E14282982C1AD13479B6178D28
+1CAA541FD3F4316F4FF81C53496DCDF5F86E0D7C870FFCD85B36C936B1E08D78
+CEF3823546BE4329B97EFA4E2880AF3361C0DD67F77C8BA6F1CE3822B7FBE567
+064ED0477949BDA06483F8DD04F891473C8FBF73A61F7C06B20FB8B5F0BF4B77
+1429190979A4BDB29D77E94D5FB486A93B8B61DBC84AE06B4E06CBDA3A942043
+9F9926F541DDE4E9B73606C3DE3E4E957C91D74BAA629641A6BA8E053FFA10E5
+581F14FAA575EEAFA39C6534A94D0B1BD7A8ADD7B219900B9F300BF1752C4236
+81CA46AEF5361701257648AB2ACC9825BD79FD6663507BED21CC7724BE327C32
+5223DCD4A92411BD7FEBC5C99BFD4C77DFE394FB6D190CBFF7C94837CF66EE0F
+0D98EF9BF9CC9B14365F33C78320085E763FC27DA1E52B0006A0019F56E35236
+C5D3C182F26D23353CBAB3DF0625BA335B5B965A15119F1240E2D757837B195F
+5B089B39BC8AE493CA98A6151FF1228EF46924021498A17AC49B68B8B555FAED
+73449B45A818BB4BBD8A0D5910790C9824F13F5A0D0C07634CBF077840537E38
+E7B5D57B328D192C48DFDF345B485B9ABF6664FB147256268155E04BEB5E2D3C
+B3635D6821066F8118281285E3DE0E31DCD1DD130171BDA0792ED9E4588D5A33
+E9703E3A82240D7CB225D971B91F4457AE9A119DCE5670CD46344C1E9367F1D1
+CF9FB36C5541128BEA31BD0E609170433D0092487F28845A5B234434B01BB2C0
+FA3F2E8562D927A5B25BE0DC8313029969C9AC313947C924800EC92FF63127F3
+0AC6801EC1B0FCB6C82CBF7370973B21C9C77CBDE9226278A4B5CC752FFECF16
+8CF30E7B81CE53C3933AC580D848F9CC7F3377E0BA5BD88905DAE82BFD42E1C1
+069C8AE5FEA017F4C8C9AED30585050FBDE9F530EFF051A780E5A7F7897B12BB
+E968204D5654BF09156BAFB7DF7ADEB7AE2C0B05416D085ACAB40333D10926F3
+F5734F57F0ABAE2ACFFDD09DB497EFC9E66BEBBEF18ECCD13B09650857925716
+B4ACDABA324721422EEC2DF66005CA076F3657A12537DD5AA5E456FFFD52633F
+12B352800E09339568D2F9BAC471B58E108C990AA8C481002C442932469EFA8D
+67FD87C9F4DD28C62EDE5C0D58EA1E0911FDF9ED05E032E3D138D01B63F27988
+471935C56A7C7E77DB9E6A3044FE2EF9F721486F229836C139FD92D82057EFD7
+E7FBD5DCF2F9889F31ABF09F119DB6C0A9C2D56FAE51962FA345E78D873BA145
+A1CD40DF061187115093C6DADAD21C1925A83BEBE4279DEA1B78A0183E68DB58
+70409542168F86094825DE53480D281324FF58158658D21B48104B83D6347488
+819B637A785A8D353B506DFC8D58F57ADABD4B70BE468558A73CFC5D0FCBD1D7
+ECD18F93FB4B5125C5DA18FE220B12CBD50A1ADEA8158B4C48E2DB42DC80537E
+4DA231CE0464C56CAB8F59FE60393C4C305F6E1724126F765B54652B93C96768
+15F572F786700305087B798177719B112B67BDF3EF0E708A48E8D6296BF3B937
+A9288AA57C8243C6D28DFA1B31C331FE72BECA3916FD0513E85709684D3C77C6
+4392980F0F2859D40903C3AB70270ACDCF7644032510BFDF0965B30E5FA47CA6
+61B6A7D3A467FFB5405A7FC00134B2D5570C74C1E27F5433FEDB15A29C7729C4
+AE8C7F7517718CD8BA705D76008CB471D250A77F7529AD67103FA172B2B482D6
+E6FBEB44DE62F956839E878A52588454DD72377A0CE7DF791C2EB04D559C0B4B
+5BC9CD13D4B0082F29D8C2EBC6678050F0C6982DE10D3295086ECFE64255679F
+EF0C90170EEE04D0DBC091DAD7472590E5D471239B1E9B8477B0EAF113B6DEE6
+54F55398F7DA7C64092F33FC1DBFADE12B23FE70BA4C9538DBF1C19F4B947603
+6D0B7049820B90804D19A22B8A9C3452CA601AE21204DB55787A53AAD6D42AD4
+9F2A2E849AB4B1F4FC726D0776520D3AF92AB14F3B76AD31E91D47E8FA5EF826
+642BB26EB6FE1BC93675AA40494148AD957B2077BBE240C1DC145C43F53C6DAA
+4C5EAB2C91D2D3C63956160CB99ABF21C74C7930D7C9207E4B515293DC8B4BC1
+42DD53FB3DB8F793BC0298044BB2D9F7F8588F267646F0C72181B900B8840743
+A87717DE9694EABF10976EA2FC141DF70BBDAA4E1AED08ABA4E2C386ED629E24
+AB9157BBC4CA7AC1B4016F927473F787DDE44BEAB16319C8694BA592A1426213
+4DFE7039D154E7A5A969FCC2799A7ACA0174CADD74EE4B85AC4D62E1965FB298
+EACF6FCC737604E71381B924D00BF62CABE5421C98211C3C01CA517D4A3984D0
+0F5A24306C30224967BCFF64516137BE52BA47B283A62816C84205A296DD2CA0
+9F39B6FD01BD2AFBD06F66A45645662F5FFA5A3E0C35E6627211181152CCD857
+B2037555F204FA5B7E321873BCF4D84B1FC7C2942EA9F943D199AB7C7B12692F
+77D30BF33B3F90905C1CF6AA6CF7FE2D7E7ACD6C296FF0AC39F9EC0335D1B1DF
+B812CE8A9D64B833E0DD307DDAF65E9A2B4E7E03E79229F4E183540846A3C337
+B00DD353ABF3538EE6AE68D4DD7BDD3DA51B5097331BD48AE31EB303B66689B8
+2794A8D350F0B588B45632725BB6E7B14D89336E71D744C2E3E3453BA5407BB8
+8E9898D3D4D24A3DA0962FAA7BB24A66379FFB6F0AA077E3B01F2612BDC8DEA3
+CE1BCB25ACC872A6C0A98576F9EA016F723A0AE79BCC936BEDF4C091BA9F4764
+4C7D026ECEE22AC2FAA631FE4EA642570CD3AA905DD810F08F7FC8A9C26F17CF
+95C05142A1ECE12979BBCD0F52C0E6CE766C904C0B0F37ADDD3D97154A2B3728
+F09C77809BF1CF46E09AFF024993E7C825A777815B420E3B8997B48E969DBDC7
+4127CF29407C0089ECB3D63F6FA89AAEB2E4AD2D8622A3E245C854AF13062EFA
+C52C7929CC42FF622C13B8C13631D09E9BCA05B113896E559DE7CACDD2655C67
+BD760BF29FA4C51BF674A0D5DCA5DA2EC73E6C6101149DF9FFCDC152E7142CA8
+49F9A6277FAB6B35F42A35DB82A564EA0C5989282966A92EF9CD1A37264207BA
+59EE7146905948A128002F70022748117950E2A706EA9851B337B3C54F6B948B
+B4E92AC726D48C214924C86F27AA8D054FE6C9C471B0D7140CE08319EFA54510
+6DD42EA378FD0FFFCE2458630632AD8130DFD8701080D5F73A0CBE281EE5C3BD
+81F49BCB11458164A061EFB788F7D2FBA00FC53E40A99CEBA0D4A6D1FA5D0FEE
+07F08CF70575185902C77FF048E67B00440115054959D952CCD88580C590EA35
+6A0EDB91E90F8E0AEE102C2A4AB460257090496809AB12276D3A262608F356B0
+45D393DD4DF0031335BC278C2992866FFBF0CCCA02BC37C82680888C95E51917
+368167ACAC86ED36FD3FB26B2D17E375089C699AEEDA5B0F68D87C8EB6BE46FE
+C4CB0F4FC636F6DFF435CFD510EAAFDD266D9BD57D33F71AE47584805E14979A
+3A374DC19A43E1065D5E4ED4C2FBCCA6C3BCE0EE791BC30630E08AB40452DBF4
+9D2A21B4B01F5F210F3BB42FF8C9F869115E7A0D78F9D2AF68C91F9BEA8DC210
+03870231F666E31899B1A24A0757EFDCD4E16C2E383D690D04D3D57E1F2CC85F
+D23AF5BE23B1D4AFFEE6F66C684B93916B91B64DD85D1231E3D60C8E2FBEEAE7
+81C58E0BE8A0016CE39EF705F76D628FB8C08013D25B925150B95F7D0B814D1A
+A25C71C654D4F1B5213E05CABDCAC794BA0A1B9251A123ED53C36AF2177EFDFC
+6AE748CFAA85A25946B2A72D599A076F5A515E3D741BD7119FC61C2C75C8589D
+CCD57D7A9B15E7279ED49EE50A9B5AFA22B902074B5D471A8ED71187982AECA7
+EA542C62EC41C509D2B13609A07CFB15FB2520D04D6EBC1BCA3B0DD51C1EDEF8
+CCFE5B0B5123AE854AA7BE938A8F8D809047DF93499938EABC1614C7714600F8
+862C14E0A4C1767686DFC884E39A1C63B17870FBB98FD39041539E12338EC4FA
+0BB682BFBFA5B748CDF535DEBA2828BA26BEC55B96868BC4FA6E288F3E1ED920
+EEFC42896CC017F618D19B63DF610CA08FF6721446B8AB73D536BD3F5BD1794E
+F89F380D0E3EB181E0A675230FC8353B32A1DF6E7DE4EECD1EA87DF72F3033A3
+B48097F10AF413BB5BE98852AF7E62F088E885A86BB07C15B1A4497AB0C7E181
+7BAF23D1B31696AD74AF642F36ADB05A14F004EDB1CE6734E7FFC8CA049AB6C9
+5408F91DCDA00C4B5022C29DE7B6A2D1C41C244E771DA6D050B14C08A8E3C8B0
+D089BB4B68164EF281EEA9B6CF58A7B74B598A1E30DAD1F73D05D1E77647A6D5
+673C6B83A012B15F373079C30E72523B591D29CF5F7615DF4B5F6726915A5D03
+6D8233D313B1F8DCEE93FA749EEC483DDD9AF0FC7EB8C879930BE3BC58515B84
+BEFBD90CD57E8377E2EB2984DF2B1BDA6A6CB3926BA821F58F9BCBA8317C56D2
+6D37DF6AE562900695DC31004AF4506FEFDF6E8D5804A63A59D176517910C784
+BDD6B7729337C7668EC4E393FFE08A158F0592B746D6754F5A97E4312AA7D376
+A29C7D43BBBB8DB4CAE338FD76D8139D6D97F97F95905909490B48D37B7BBBA8
+D9A98555961E734822D846EBC665DE1792F0F0D942BD7DA2D8DD9AB29470AA75
+7D3078C021DF4BD24F5CC9B12F0C3D1DEF9CC10B47B7A12AD9558742B47484F2
+DEFA8B5077ED0191C15E89FE58490107733572AA95D643F4FBA761C5AF8E0D6C
+3250D597317FE0BAAC5CE4072E688B388FFD7D7F6D1792985768AEDD8A20255B
+44F26FB215A666FAE804204C23472876169608AFE831886F8EBBF3F84A9CB38C
+D80226FBBB3C2B60EEF75F0E2C9A9A30F5618D13F0DD84B36F4F30A211896FA5
+858248862E9F422E9E31231DE72A628EA00EABA81C59567D86F0E66BBA8587D8
+A3A0133BDB30C74F2652CF75C7F247C7F5B01ACB9E8F892676A67CB7FA879D9C
+6034BD216AA626EEF69C718CF5AE2B9215D949FB4566E39169C803A4122D7D8A
+2F5D2A7B903E7A5013EEFE0558D472CCEAB9827620333E4B44BF44ACC1CC0E8D
+689C9202A9E972D34ACBF7A1C7C97EF057D5575957272934E0E5800153C8DB88
+E771DC89C0407DD9C806EEBF6BAC5A15632C1A72EBB047F2C6C1583A2D4F8F08
+58D680B3F48738CBDC2E4E81B0BCE80470960073B5B0F69C62435F10FDD73C06
+80A0FCCD1B3BB0629A62F1EFC982C4328B6486FC222133091D4AC153D72C3A7F
+C1ACF5B02AF85F63590D95DFA6B1F887B96505AB280053663AA8E9A0A8D446F2
+CEB9778334A1C8469F5DAA99734EA85DFF2929FC6C1CDA3D1984283D4F3C8E5A
+D3DE3D61040654C0958F49FE50F737312B1B8B53FD77EA34B8CBE290BF448661
+F76CE5533613360094C37932A6A7AD06E63FD8D02B359688E345E548DF53DC86
+B16692D707E2901C0721DB5BADBFB271A7BF00F2F3F0EF70918E322E4F343CEA
+D18FC6504C697E69EA7D6BEB73EA87AD51AB32BABF794F1B22A6955B6455C114
+9A438671F30970682719974FD0B71B2B4A699D0430027B3D3E6D8478CE522408
+BFC9FD0A559944D24955742BAFF646C98004AFBDD735D457CA34B400B5D5D14E
+55466E7F6476C54F49D9C240917AC429E534C51C92A9B4E52F5CCA11E3E5D3EC
+6A0A28B39C2C7AC684FA169914A7ADDA925851D8DE6C750222591B9D98E4A209
+0ECCF91AA890AAB75CF3D8F0651DD9440C5123C7F81446112B4B556CF001682C
+C660950D870234A2E96B373C97AF166027AFEB6697748F952C87360540B26105
+E958B8A1C306BC1CEA926496C9ED819AF00EC1DD7AAA64E6EE21BE8A65A99CF7
+86746F3D155D79AC812E1F2A5CF3C6F5FB9716CA5C9A8AC7E580522C311B2990
+E289ADEE82099F2187F37CAEE490F807BAA4B520977A62DD017A7CF836CDE5A5
+6AA4A7862E11757B5D67A28BB35E3989BBDA1AE77AB80C7E33117D6A9A353593
+687B60BAE871DDC7B0E9A10758CFC7E3E972B51A8F1DD50546AF7C498EA487DD
+FF5E9AC8D87F2485A4E680909C07CED7254B5FF9E5433C3CFC55286B1431E39D
+D4912DC8BECBBDCE1B7FA21AEF907D5CFC56685FC47116F7F20629747F766974
+95D75B64D0A6657FD0CFE9B56B912E7FBA38AE10EDD1E8C427772EC42CC100BF
+5ED34DFC3093EE90D7CFD9E2ACD55D1FF31118B86BFC8ADCB490499F71946C1F
+57477E88574FAE17B4DAEBFC8E100BEECB1E473C5A2F882A63F61B7826C3CA7E
+44363CB33E5D8BF5E88F27F626B3EBB0C313D34B0BC69CE395DF99983E35D77A
+2193C441E0107DFCCF424F49E3C7995B8A2C6EED7ADA45A1A33895E07F9ECE8A
+DD91AA4F5758CC030D3BB0D7C2E86A1531E9F1EDE5AE52F12AF9E91EDF021030
+6E69FFE765CE505C617E6ACAC1B3D2021F1DDF82B3CE0B7E9A68EECD246AA818
+2BBC9992E440BF3B96384125EF21BF56BF673D0256BF647CBA2A538438CA8292
+89464AA423C9438EE2235BFE98B57CF89B1B1CAAAC22343324A63F913D1432DD
+44FDB2E1F60FB78653DAF52BA657E5A48DE5FA5B4A419B83D52EBDED19355B5C
+FE6A57303C33413039B9C074187F2ED11E52074A6EDE22482DF46B624FA64A70
+B2FDCE4D657CD67EB327D5ACA3460815649AB144744DA5C51BC6EC5E94B3ED1E
+4F88997E850E1ACC9544239CA85A7D5C28EE249B966081BCFDB0D51B81EE6D56
+DCB2FA5AB76D47BA98896B0D52934577760E231FE276629D9BEEF1179CDAE173
+BA3E480FD2E2D1AF8D73509D1AA108C56E668E8A7EBA8B6BD4FF4CA54FF2D202
+DE60493D82588C215EEFE423619700C3FD2BB73DFDC0CE2EB6EFE7C2184657D7
+33692854C0DB7DBC388D061CDC20060E4076889A01D0FC9D6368F0227FA1183C
+3E68DD3AE54B28808C93FCEF4F7C0B3555234C1B700EF5F9906B871B2A33F656
+74FF5C9BA74ADE3B7DD08EACFD8252E5F7E00349EF090A0CB375E8E16C035BB7
+9C25D612AA75843EEC123998AD8AF43960D55DED6653D8E881C6D6B6DE9624C9
+6E9FF1D74AF8B3BB39CEA0F74E13B65A171F1816FC514A32D56A0F6D2947EB44
+FF916B467361A185C9D3337A26901BFB6137903D9A89359F3DFDCF4F74FE20ED
+C37A1B1FA70E64B910E9E234F92CC6AFB9CD343E14C360C9A4D8349C125ED130
+EE506B5E53C74FD4DB539C4038A5E99CAA46429F02E3DD462F5D2A078E2E8880
+3AC7B4618454A08C8B3C994489449A5DA7ECA6B80FC084053C65B4574A75A1A7
+4A9E7F86FEBEAFAAE9EB8F10B6FD73DF6E6B1638CD6F73FA2B3AFA49EA56A2CE
+751D167118B3073746FC301F5E5F97C0EAB8B7B5DF5BB27958312CE8792281B9
+D62301C147101F32634E7730E1697F6C76FF342770D635F417B26682E70FE88E
+A5178BC9F1604681EF2E5BD37937B5EE0AFDAF9845F25A3454F30BE34BD516AC
+7E104033A567B4445B5BD6ECB3D71EF454E349BAF12C059A90B9BED8A006CFC9
+A927BFFE206AD54351CB3772A33A83EEFEAC789492C95A15CF6ED00C9016E642
+3D474AAF77F5E968CED1637F7B96225C7D769FDDD18B385E78AA60089D2BE218
+14F2E47DCB504026811C1E1966754072525FC8554943EC9817AD0A7511F21CBC
+49BA61D493584866C5FE4BCB22000E1F72D6320C7A6449559A9E085C10C3C1C1
+3C69C0C355385948C822CB4CE2726DB4A78BC3225FC1EDA373C64DFDD4F3A932
+C99C34F0048A3C8412B0660BC8E435D8AA311487E6766F203149941CE19B48E8
+724916A0250AEEB0EA527CB9D7DC48EC31BFD11190F329FD642D18A4BB0E01A2
+E6C59C2AD964A3EDDAC052FB2479401777E6A5AD02BF93FB0D3D4C02B8771CFE
+95502A45F1E36516BE1715B4AF4B73021771E4808E5C95CF68E472DA9DD4C429
+936DE6A73825DBFB6CBFB3287A2922926B80CCB38D51612027440CC1CF53EAA5
+278D9AA61490D705A0F4F912C72EBC8E8FCF6A51AD580D483E3C5B830AB6A41E
+4DF559E9E61B92D183B62B7EE4DDFB9AD14F244B19F6467B2BF210327845F1C3
+B77577E2E2A206913AA4FE0D5574230B54936A34ABDAF521F64DD42274A8DFC2
+46896952479D9498448B59DF3B31A4BF20AB11B425DF82F11024A09AA89D9BA9
+44E7E118D80E61DBB935B2EE788E0A79FC95BF18E264413186533EF5F24C4518
+BC7C75E83E12660CE2B2087851BB4DEF2263D647BCB2383429FA0239DD08CC2F
+B60EBD65000D268A1EF12570FD0777405DB67FAB4529A3E4C4AF4093FD6A0A66
+5684568035B9B6B39C8B7263AAB848007FD44692A4D9C1DC972CA488D8979F78
+D984BBBBBA63594EAA2147190E82EBDE64C2B4116D43A9809A2133B6F79999B9
+22FC69623EC865A27A601351B1CD9F2534FB692DC570611FA8C87EAA4380637F
+7939E2ECF4DE7E78E253AB42DA597D724ADACD23163F41DC48ADFCE89E241923
+4F45B563D56816079967D165BB8E6747CF9C2CAE63438D6EB7AFEFADA73C53A3
+524B8F33D53205E2C22C857836E2C71A87C3CE545814EDFB4007A69E5786B8DB
+54B91E072C602898DF9CF4D93AB699101220A7B7A68192BFCDAB82947F7E1A77
+7B5D8B2CABE483B87D0DCE7C9AE04DBEB4EC3ED1C74BC5B4ACA1EE89E1F879F7
+89D81AC3BE8A1F61C0F0316DBD0363D193149EBA185CE7C561DE05C3E3FBBA9B
+9BBE1C82E1D4BFA1F38F7CA850D101BF3C4B6D26D981CC71C7C9035809D17297
+3293D1C5030219DF943C42B8947D2D8DD8E1D63EA94F4E1429FA6AE178D317AF
+242D813B967B677CBEA4197A3418D647A90BC15F13C5E448C74E6D3563D7399E
+8EDA835684ED87775CD3955D69BA7E87A5DEDDEB53E898A30F9ACC5707067968
+90091B8862F83E3214191165AC4FE1F820A8DC9301A12E0C9B1706F0E655AD9D
+3863E0D6B5700C23E47F17ED9F8D99296D4B84CF381C5BA776D5C210D193D22B
+43ECC441368D803F4DF51BB88721F2765FA2DDFE5227846AF185745222E10BE0
+95C282B5BE11FD21DD470705221403C776CD2199AB378A1B808A8D8378B554C6
+41FD8C08EF663DC9B69BE65E4DA7E784D5C009E5F5E339DE43ACEAA8606ED98E
+F88C13CF6B104463E048B405BC87A01C776CE1E6DD3BD14DCBF84C4F04F2DC70
+90B8D8FB1A7C23829AF0B4AEF88FBD330B5CA2C122FF88D5308C003ABAB85CE4
+283382B16DCBFAA56FC90BEC0390D4E9D159B27FC4359560F0B3F2D2A66E5957
+451D6A81889B299614E39F6F5DC8D2CDCD2AD0B2045804304FE4093DB8024F49
+095952867EE708A43684090C3C08325950E5B6E31614FCB9BE4530EA4F7C85AB
+CEB8DCC3CA496E59DEF5F4D159B576C67D0F4E261D67F8D63446643C4AFDD11F
+2D0B1A625F93E45A43A507D6137AE4D25A6AB887BDF403CFCAA4BE8B4F3433B5
+0492A4E82FCF71F0F81DF6CF1412420BF8B7B74C3510E4D057A6490BA235DBA7
+E2EAF838F9F6338EB93F5A5EBAABCCC73612D0EE7CAA32FBBC06F269D44429FB
+9C9F270E8A461ED57EFE97D5620F357B37031C17DD01C129E42B7C09BEF447D6
+363162F1A326EF50C9339C532FCA859F155ADDA8A614EC8E083863D68084655B
+B9D22E3198EF1476E7179201594ABF6AB55D9C58D3C27AD95A6ED28D89E30A0F
+00896350907820CFD6E25B7B6A8D45614E3D92AA93D6795ABF514A58F1512D31
+C97E1588372BF8F0D3A25E86926EE1F546A1A9049F01186A2E057C26730B2DDE
+EC28EB6A9F6A29EB6F6888C822AD5A1413FDA1990737E554056ACAA6358B8894
+26EE5AED75B3582E857A487A954390629DAFB8DDA976CA79970C1486F80C7C11
+F4FC26EE0B8B18BD9AC1ABC684E546D2FA829DA2BC619EA1BDFC27492CC0CC28
+C232399559A1D5706909228BF0CA06301B36B87C0B5C761B1AD05EBE4A7FC4DA
+BE7C55BD3ABAC5095192FFD33D441120A6560F12D886AE15B0B1FDAC9730A7EB
+E54A1FAD362ABFCF5B72EEB279A86A0495B78A8FE5338C3BCF5F0105C66C2674
+1DC8919CC9BF9F6BDDB04F42D18965C6D1C525E3E45ECE744F722BD6EA835732
+DD72EEC69CB42B634D5FAD83C295B184110CD718BE52B7BD4A170FCE27ABABA4
+74B32012F20F359D3F3D0C1818AE641D5DC4722221609DC3A78E826D68061EB8
+EC734E42B9469B715D78CB2BE74E1599A47ECAE1234F8D278633FB1EE2D83B52
+A7AA6B7E588819CEE90BEC43EBAE93E511E4BE18436657F174C2ED5957590800
+F35AD6671FC0A352B1562E042140D3668E1239C90FF717CFCA0EA4BBF2679B86
+B179F2717C27263E31DCF3788EE038D4C6FEFBC918C5313546C8AEFA73FCAB0D
+FA055D120659BFD99937CCC34D533A10B67BF498E2A52E9DCCF38ED40F7FC380
+9F869127773514D198C61031EC04E916126227BC4611B8528362C78429C897E5
+8943F4B4DD8C590FC1AAABD603D9FF15133B1729FFBB1A2B0975BFDA92A30CDB
+3C3A59B7A6B5255460A7AB1F01DB3C651DB95A3FA4D79E8EF704954A8F52343E
+DDF4AD0DC6FF258118274C23A470844E58385F135D812D1EDB742CE6E33855EC
+53EBEE6F4BFFD48A2230CBA4F30DCFC8F86037F942E6A253F03C2711002FF4F4
+7027D7D1C0475487527D316FA6AB9E1B1D04A56E818CCC1D106BD5D9D2858522
+92E832FD5718FBF7EC656CA84FE2B2794DBEE834BA2145EB1148FC5D57E818B9
+B7AFF6D2F2B0816C301175E6DAF7F276FF495C0D0E647F4028C94D9610EE2B7A
+A81E66E07D2A9726CD469EDA81858F8C269797EA3A8CC018B7A6C2DBDD71E261
+90E903120EC01015CA59F444BA8D7137D57E68672C5CED88EAE80FCF9E67C3D7
+9B86FD5734278233C8E264C53C88CB7BEFE88BCC5384095154E3FC528520B6E8
+94BE6C714F9E8D97E2EE980FC6EC8AB86006D9F9D24F90D58BE98982ACB96F71
+C2D5B94CBB00AB07A1B132606A87B1BF710C9419EE196753E24E544DF7EE0766
+D2DCB7CF6A2934B96D66CDE5CDBDD23DD60F163217F3372138E7B8A7FD206843
+CA23986600CB3CB287BAFEA5D94479FA9ED24AFA727EB872CDF44C43E870E43E
+0C9688D426F0C86794ECE9D133A7C32229ED93313AD008730C3000D053962330
+C8D100E7F5FE25E31D0C590010427CF42A6AA682AB43A082B52EA29C6C5BEE05
+2D69BD0400954CEF43016B51ED03B80A28A8A427A89F099EB2162E688373D231
+E7E9660ECAE039EF1F61CCE716589A9BC2DE32CDA7C2D72292608975DE5B5F5A
+41F6169DC5A8097530BB4AB624ADCF9900247498756A91AF1257A7C980A5272A
+3C6BD101D2706E53202682D16518C0B9B221A90EAA867ECA1FAEA87205AC8648
+413801CA4376CE0C7EB38A816C54402513E68A0CC783B352F0D5ACEB7E7F344D
+557C8E732E089D7329DD8ED63F2A22AF3E66914F8907789972E8D5CF72865E68
+43783B11F75566F28081B5B74C56F44C05BE7DF015143E9F05ED154EB1CFDD7B
+A99F2F535A258A9C6C0E6E0A2D4B91DF0CA6284C5EEA3263C3BFEE493E21F66F
+A68B008DD39AEEB566C4F4FAB93E8172FD9EB0E00C93D057534C2FC2DFA4E92B
+BEB8F33F1B685044467019470184DDDC1EA9A16F63DF5BF240EFC7B3DC53D8F0
+8C2C168C317757418EA33ECC81B136A3DAF4A7625DBB9DBA43D053364B910BAE
+537FE379B65ABF70D6A5DE9613FAC4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 11 /ff put
+dup 12 /fi put
+dup 13 /fl put
+dup 14 /ffi put
+dup 33 /exclam put
+dup 34 /quotedblright put
+dup 35 /numbersign put
+dup 36 /dollar put
+dup 37 /percent put
+dup 38 /ampersand put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 61 /equal put
+dup 63 /question put
+dup 64 /at put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 77 /M put
+dup 78 /N put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 88 /X put
+dup 89 /Y put
+dup 90 /Z put
+dup 91 /bracketleft put
+dup 92 /quotedblleft put
+dup 93 /bracketright put
+dup 96 /quoteleft put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /endash put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
+87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
+D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
+92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
+295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
+409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
+4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
+2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
+0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
+B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
+24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
+43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
+D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
+5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
+96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
+7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65
+0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830
+B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D
+AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007
+97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8
+FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5
+20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4
+0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD
+F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20
+3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122
+A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379
+5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA77428025D4059BA
+2988AC2E3D7246BAAAFB89745F0E38580546045527C8779A254DB08DCC6FB9B9
+0E172209FBE3857AF495A7F2B34BC895A39A30F903DC6E3202D29AC110D868F4
+7184CB78407B8B9D42F6375F67FD4B828592E4A977B9E71854D143CD1A9EDCD1
+767CC2929E071FBA4C3D17500E28A23F697B5D5CC68D5F56EAD14BD504E07182
+3FDC12F5404E74EC1C02AF00C1A6A17F958770ED4A024F5B3644DEFB61F2578E
+56013D0B4E7CA3AD255E23DD63369A921D427EEE0E098E8148B16E8A5613A8F8
+A5F1099E15AD16EC554B644DF306F0CF3571055A81F1B464529DB49E919F88E7
+581066BEC4765E31BBE28C245BBF0B74610DBA30C63A71A4F3B60593A6B41C6C
+636C980828CFE9A3362FBC02F1967F0F770A4790F90DEF9D56E0A76B0703FC58
+2841E6E8D984FB476D4FEB960FFB6B386EC6CBB9EB83704B0AF63F38C77090A8
+DAA165E6C6BC86601B14F8E9F504A9D578AF05128D8C1BCEA9D21057958D5DCF
+63459352EAD6B4A2A666CC5D85855641CB31507F9E30405977B74356FE985A6D
+541884CB65A4F5A8D4C82CB9D82846CC510CBD243E98A0011AD37A81047021DF
+46F69D7C3DFAF2F10F1F0CCEFBE12EB70420BE90C450975434E223C67D24226E
+8B62BCA6BF93B0B1373AF55E4ADD92775B2DF199B6599CB02DB64B2D6160BEBE
+449C057B5B2D226E0F5D7CFB5C9A4A7184FB29A595E91252AE787861A6331FC2
+6605C995D55120121CB463473A7CBD22F270D56CA8E0DA99832A468D399CB9F5
+A1CBCF0031D99F3C4F4B78A0944BED5A7B1AE23E3A66EED453917F9296077306
+06CFA772BE60854A30885DC5FB8417E0D3F7AB45ABFE186D877A377F5D17DD35
+0FAB81745294E35A5DCAB20321C6ECAE276B63BB17366867F346CAD53E06AD96
+091CAC75465BCDDFDE9C4364B2A8EF496C4CDF76B058E4BC1F616F6CF62FB60A
+64F81BABA7A729B8CF679CEE01B1C985558E8D1493C03B834F3696E5511A1917
+2AE7E16AA8FC516CD2CEDE020BC5777598165B6EF2310F4DBD54FE14071101EB
+47F4B2B59778B1EA7DE13ADF46393E07DBE2082C2487944A71CEDD4ED7D3D877
+749D2500636C3996A34EE0CBA770F6B6A655DCB9840AA8236EF3F6182E1C8997
+395077D9DB15B9D0A2DF9A3F6042C94E6E492C965E4E8542AC4AF5B21906B6E8
+4AE2B01C0810E38BFAE99DD83EBFF8E145D09F763B6B134A25A1CC067C6DC1D0
+7286045CE90BA968598D83E5602ED96C72A424848E211C028CB344D95DA04ADE
+4C5DADCE9009A72B6EC01E7B5CF8C52BDFD2B416F5E1833F514659D94BB2F452
+EC4F2E65CE71AAF79106A0468D76D283ADD44D7DB5760AA429D61C1DC2E912C7
+9446C19557A1D12E7116B765BE522EA166E8F0B604807215323DC5C2DB1F2E05
+246873CE189E03FA291A961E4AD90563A8F7B0E08A67DE4CB3607C6ECA114DD0
+DCE97976E208615F3CA13FC44041360086A4A173D5441D9C33A38013099F73E9
+0FBC96808F7442FD4D56DF7C4F2D4C9B2301F7CE626B4C6C1617B8F1584DF195
+F92FC6385070EB02BF2541307E4EA34C131815FB9028C118F4B792C4338F02A0
+F6B5FFA3E4CD9AA4C95E7FE26CA24BB2B34C48857055B8EB53480A6CDA79B587
+3FE3E719924EC7D32A92D77221F13F3C4ADCCAE9A13BCFCB5FD72DC40F90F396
+ACED5022449E600D9F12A63C094F3E26531ECF9AAC13D3FD80F25E37A9FF12FE
+EEF0EA34D23081DE8674EA19431153CEC8E96702138A31C19C05246995EDC3AA
+6C98E2316BF65DD696EFC55816C09C7F969FFBDD771250D41657BC81F95A6D6D
+9FCF05E485ECD7C6F69CD8755197834EC8DAB8C390F161F74832525690D5A443
+B2E63941267E719C53CE707F9C0B7FEF30A238A88EC1BDB8ED7D379225EF7122
+3B7C8CF4C130B89A5DB4513F11B8D3333C4FD9B33CE874C104517553E6DD37BE
+320318774481CF4EEEC3E43FFE81EC9C5043AA9DF67293D72FA76353412F321D
+1A80076C42EE240D3E65912F94578B8A2B4DA42880469451907FFEAFB59F265E
+80AA5D5C32348F9B7CE6A6855CDEBB4990938417ABF998E4B433556BFC31219B
+C2D8ECA502C967DF8FE4206274E389B52AD065E9AEDB067F2E6595D5989C4788
+41BF327A1AF644D3C3C1426270168E28CF38AB046EE4893970D0566367650CE0
+9656CAB7CE1FB66A23CD3841E0F37D4DA2BD4520ABEC9B781A2B9E934B50D554
+BFFE5D2EC1A5D1FD36B1208365FBE15516FAD517FE5ABCB086DCBCEB50B7918C
+E324EC58BC736F594FA4789B528265B51B79B486AEC5252471D5EAD0C552628F
+988EE219BB95D00123D475E96A268E8793B053343FE518C86FF4A0371D394E87
+9CD9890B65DD3B714FF8AEBEEBB77FBC08B867B64E4086FF917B8AA277E1B3DA
+65E05E5BE4941717FBC76966656A5EE7CC4E1488ED1B4388DAC813D1D25C1308
+1B220AB8A036DA4A3104B552EE21330DC917B9458699100283BBED7DE5634B08
+E1E8A1275815A358B4C0D3787313C850999DF7330A5165A70BB5B5104415A5F9
+733160B501075FC60DAF1C8C6DA3A674331DDE8854DE916DDD0491906F4EBB7F
+6AC56C4A9D6132320E2E021CFEA843F7C56203E943D3A9B12D8321EAABAE3580
+BD58D81B6C551BB86D2FB83A3E6B4924EE0D07E961E5235E7D473647322CC62C
+69EB8DDEA11AAED833A80339E58330BD4AC7BC67B692ABA6A34D4D2D7A1A279A
+4591974DF964E64592E3856B6D72B26D6E16241437159F3A09A5F30A43600835
+30C76CD71780CC61C31DDE51A144E6E656F62A579D808F5FA729F1A66382EABA
+98B6E376765D96FF4015BF46B3314B72C007A8DAE08A2E29F3461FA56B4BA6DB
+AF6AC06F4C94FE3F2D692913E13F99B6AFABF801C0119625C51F8015E35BA453
+E58AD266F5BE4EA6E839C605AFCA7F11B673E51FF62A17D6BC824119A89599F8
+6E04D3DF374382132A2F1FB1F9E307DB10AB21E627C4356DBEB97C0A6205AADC
+1122176F33DEA813908601A242263A845256234C6A3C9242AA2811F9E43BAB93
+4A024BDEDA3CB1E7DBE07BD210EA3341582B6D2A1577185C01E6F38CBE50E63D
+C50C27D22533C60F2FA74E15A9098F5B0AB07B31A098A88C9629F2BFE3E51379
+F443E54F4AC11B6134C39EA3F16B0AD01160792AEE382FA08C171DE8FE8D78B8
+BFAF4B630DCC09B8C548ABF9AC0ECE250D4F18F481EFD5AF1F00B23DF090B57B
+C57825A72FB1E529CAC192DC16ACD2D77E8FC158921B4E9073108E69D69E191B
+7E8E1840F83F758C840A0DA59252EA309DF1828E5C01FB9528AF8EED2A5DBCE0
+B98CFAEED4BE7BB81293E49C382F8662548F7CB5579C809007E665A50BBDD51B
+2CE1756BA9E84AB65F970FE5E4282417D5006EF7786C02D0817D3841DF95E00C
+87CA35863F66C06860C9117A4E7E5008D45B70584AE3154BFDCA49006E9548C9
+78D25EB10052885AEDD07F8A050E5A64C5BE3270EA594D79CCECC92996C2FFB2
+E5FA947080F1EF2335799A8DD8BFA215877BE32C2B5A633153F1F8EA8C93B836
+2BA3C7452B8D0AB8E6EDB16FEEBE51B64FCD0601F8F9FA99EF4241CEB58F8291
+28F21AAD148D8D681F84E51F5A53F6C13E5CAFEABB18CCF22180C0B911A37624
+E25FB908863CC80ED9C93B93AA72997D13FE0C71F0F38F274B638D461A441421
+4253CF8EA0F89FF54F775FBAF2540C02E895D0BD75B6F03DBB65124BB41F8743
+FBB668587AE9359136D860FC3E09458570DE498CAEB9068F44BBF24C77D46395
+96A3F22907F8A0C508C083FFF396ACFBFB26F6FDB2F28FE49053FF2FBB643CB2
+50B37C1C917466C323ADDD9C246DF9F7D7B4AFA75BB0571D5DEBE80565F81ABF
+02EB769F35EA6E2319FEA269303A7F72F754C81311A5A22F6C4927EA2B1EC35F
+B804811735EF39249E020EC76AD775FFE4593CFCF5C6739AB35528E02C863668
+48AB1521C4FF943E544E42E33DE193867A715D1F6ECAD74F1F5890369D6A1375
+C468417352E9765AF21B9C0822494026EF63D63D5BB61200149FC2AA8F7CBBCB
+7A7D5E7BF9EAF67987DE4F41ABD8B52D9978C70CCEE6550B42D14A6DC5D3DCA2
+2AF30D02C0732B97A1E818C11C4818D35F55E45EF64F74C5BCAA9E58B7686DE9
+51A29D0CF5CEB3AB6A1F280E893672BE474A173A6AB7E11D3BF82641AB1EC067
+AC9F2175B1E324F9DB03DC91928081303FAB31002BE72A3541D91C86B3FB16CD
+DA1F9440D6E67951640DB487D9C14B9A7DD41F2F450026CB7B311AB3E578E513
+CBC2DEA9E8442DA882001486101C232581E3C287EA8B1B045D594EF81A715ADB
+CCD68BE8EE8288D4FE53F1720A6E0F25FF0BA9B85D0BE1AFB9CFD76EADC35429
+05FAA1D36BBEEB637B9514BDD2DD2C0C4366597F4A6DFA681F6524407F0082B7
+73F05A553A57C15855D524588D46DDAB160AE72C99B6DD13B820B17A807DC197
+7CDC6D8F5141167915F8965A57DFCA7FAF941502F6C00A1CE8AE03C8382D5041
+3F0400089F18F9F8437D0AF632520F94F4BF2464B50A1AB0CDCD94F8BB75EE4B
+9150F660BCDBE851879ABD99A35E9F75E52F859837B93410444E8E58CB9C4B9E
+C7518E7AECD56AA1B04B3E89584919B6A84974A4B8F01F6B2E9D12F13F913479
+710046D5AD2C9862B71E9384969AF640436C630796A0453E9735FE8F96D3CEDC
+7FCD4A0DE65945A0205DF90B9E7FD31A3020B6E87756C41CBCFAD1B99D910E44
+7D4E55730848EAA86C349C6E4051E7CCDF94DAE8E38D1406696C2F7B312EB45C
+C8AE6400CC1B1E9613726751F1B66689F58DBFE9DD4435DD20D3164CE9551382
+0C56E69322D6A55F9F84A67944A3AF8FC8A0FEBEC541B24140C17510A35A9483
+FC9916389A93C8A6E7204087D167C15A3B3CD306B5EA0BA1A652FE4C0F4A63F3
+00C706FF2069B4D1A74EBF169D3E550EDFB283EBFEEAA6BEC1161A363E3791C1
+4DB5DAC83AAE1F922427127793255A482A6FB51E93A36ED4004D32FF21AC74EE
+ECC545D1D9CB445C23FD6D3AB380E49F630A289060FE2F128CFF54F2E91F3693
+A9E34F1B0DD6A078AB015C55DC52BA002FB1C597C3CF2A0C1F05C1ED15A173DC
+EF084B375F84F9749187C633C3A2275BD9AB6C714884ED37C6CB144CE0035343
+5D65C2CBE7CC790F4F6DEC3B40999F9F1FA1E2E552AF0CD0F913077E37D8E3F8
+2B77C80134B6163034B8A8B54B13D1A75D4E21638188C1403F5376EC67341F0B
+B69D18331EC9C4A6B85AAC493FBB73C1396A3CAA5A330AD45F074DD0A975F02F
+A30A31820CF85BAD947252DCDC801992EC112A76E8E693AA911352B32F2C2C79
+9E611ADD6329C6E258D293C5334C8DAA9B74247E8E138C377D563A10F1A64BAA
+82B9F1E319AEA437E4895502CB8BCCD7EE3046E67A46E255CA5D34D049ADB2FD
+AEB2725B5C13ED0335CE3AFFF946B913F5000376949348F3541E09A226D8AB43
+D9B96D5DBB7FEBE52E13FDF86D8303A4A2753B6F3DF0DF97B885D5C6F6EEE3EB
+A60967FA4B2FCBE6F039F6D2A6C79422D4F38CAEB72074C704DDA845A4544291
+7BEEECF8A4AFE80143FAE28C27DDEB1E5CB0EFB1B017D42AFB5CAD9365A77F1D
+AE6EAE307026390084C8C9DA9131A46487C410235020F12591168C41B6C4BF2A
+5AA04581F532F15F27501295FE091BCAF8641FFB901434AE4847BD08FBD94A34
+93B9A0FC241B152E0F1677D1F6A4CC955CA533A4E9CEC00782D9000AA325CA1A
+8CBD580A18F9431BB20CEB8120814EEB48F9123279F26F7DDBA577D6F08E9F1D
+42339C59A4D913AF2FC11E40632695D460AD1E2220F3E951754FB8807C90667D
+6BC9ED16A6B96C2CEFFF8F84AB02B5619B53C9DA4237F2D51841044E55C591D2
+F71F94A5D6B098EBEE8F535A84FA1EFF618D9E682F74C2B24F6B7492EE264485
+D41FC1B135A3F78F7DBFE730B2862B9EBB76E50647C22B92421355D354C3305C
+FFE93186364D9F3EBF9100C563388C426FC6B8A37F535A79D1DBA9858ECCA6AB
+8B39A321815354F1FDCDE71B64D2429155C97D5906A2F9A2B8854C80045566F8
+11E2A2205BB47FABB6207F0AA74F099B5DA39FEABE06D6B9748FDEEF7D2E977C
+089F437B42450C9EBC6FE89D876F8DF6E58C20D2B147638252C63B4E84B61FDA
+69EA7692FC1369369CBA019D16B6F6D28356835999BCC24DC6B0F0897E798426
+84EAE64D0EEEA2CD568CD124810D330AE06D623259D22D2F977D51962A498898
+89E0E19C928DCE67DA94C2B0C86CA257E453798DDD111791E29D6A2BBABF4580
+1861D8D940D70EA3B431CC20F8A602B67C528381449DC8353343D1F205D016D0
+538179F3AC9F4ECBE73D892692DD528DB2D3AF1D31E7248B5A4EA0343556CBE5
+B619A19EC1F04FB65CEECC60D7B2C68A1D88347D2730A2819B3331006EB854C3
+3A41FD0AD0DCD40235E8585077B41A6AD9678D87F7E14928F74F316BE123DDFC
+47811C5E052E82410D52D0B13EA86E20942F4988466B0BA666321848F1B00174
+457A338694C9B4115F0476E0B934B6A4F43B82505690836128266B686CAD4DB1
+DF53574837271BC9B28F0E8439DFC8917EA393E6B15DF5E38571835A3209EFB3
+7841AF4BFDC3B7F29CCD26CD41B14EBA0FB3B4860C4168C88160575983C511C6
+45CC50FE11082DD88D9C74B28B72E133DBC714FA1F028C633118850D7282D719
+2C7C2EC7CE1685DFED43816A34151A02FD6F78864758903A5CDDD5F0BAC32B42
+FE53F2547BA1C0CE4BDE807CCA6E2738EC2C3D25165546FA8FBB46F8FF1E64B4
+7714EC2C4C8978CB1EDD6B0C7F9341AD12E63D46DDA9DFE8D2239721E2E2C2DC
+249FBD8AB460390D5BD7C3B9B68111FD3466E11BA596E769E39372C3CD1BC8D7
+565C38FE1FE65FB3C26B3BF58AFBE54C6DAD2E3E3086B1B39F4BB496F08E7887
+A992C7FAE9281E609989EC45652A3A2F13817AEBEA23F7C71077CAB9CF2E6191
+F343BAD93C12D420E0AA5F706F917B7119FEA746269144F67AFEE8C66048ED78
+0E024635A608692E1A31BBEA0D87DD37C41D4E29B7C36D26539B121B2004A706
+999399ED1621854369C0856B5A3602E54FA53488B70CA8F7340F009D69BAB228
+2D210498C0632E60DB02546D0A8F28E93AEF943BB8A19D6572365BB9B8786B38
+B5A172834A3E651069084CF475ADF6BC436962580A06F5AE5BBE05753ACDF0E2
+545E9D7404787D328725ACB7D10E4AFBF0EA921E2E1EB0A2FB36A60B94086554
+FC6CF4AEE2E3166DB6FEF1412D5758A140FFE0210DD7EA7F5ED6CAB1064D4E0F
+B8C5FCD936DA5BDD3051EA1E212F5ABEA7DE611D7019CB62FEC5C97F348FF947
+E49768D88B45D2DF72EDD41E7AEE598E3BFF8BE8E6722D3AF05F991BA5FC7955
+48F2C7149CF4F33B2B62856851149528F80498EB5A835D02BC7F15137950CCD5
+8EBD57FF3BBEA46491E7E94C367856E6F8175864E895FF3DF53E37C3437A7268
+DF442EBACDD073AD234E66BDD8AAAE748A5B49C251647F384E843C93C0724F2D
+CE55E19CC28C2E0975EF4517C8E45D6B794C31ADBF7DA1832F286C9071FECCE7
+9E2A81BE0C11B0BEA840775C1F5F094FCD44E22BF193BE278131F6E6398E021F
+F1BCFAC298C92D1B3B63A2EC163885443D4B0BFE99A468A9586DF8E634AC5EE1
+4FEFB7BFAAB04A9A5C21354B37B32A055913422E85D86C13D0CC6407F0294680
+FB8BFC01749DF59401C258A44F5B8F9AA6F75910FA93786406D6C28C15067201
+56D8C65DC1DDE24CFE365B0CA10698F999263311EE6E3A4C0B10DB6C938795D3
+8073EF0652385A902915890966B8A95C081F36CCAD79492E4C43373719E3F49A
+816C289AB5E1A3490098EED8D755822D25C97EE39FD9BDE82FBA7D3A7A988A6D
+B00FE58376F725FF49E9D8D93CAE42AFFB48D01455A8934DBAC290EDFDFC06AF
+F38139C11D57F29C8D0B562321AC107331ECD505634A54B3F7E7C70278B1578F
+D4FE9EC16FAA9308DA077E973ACF872DBC9569C30BE9464EF647EE9E3EF7E057
+56F95E8FD465FF0148689A7ECCCF65E53DCDC0E3750D226E92CE155380D314A7
+896E8E3F079BF9ABDD45E47358DECFDF5B39B5DDF9A62FFB556AF17DEE47432C
+2CB8E2B48AE6C4E7099794700D4E33CB7419020AC5BD616C13A53D7A6152C6F8
+8BF5872FE600F44A245F884A0E2DBD44BDD1F3E81660C63A19A5E51571909146
+A293FA884908938E3B59A33590D870800ECA676A70B97C55A02452AB5CA13128
+E68C7119DFCB11213DA64985F54D038CE3A49363249867241246FC2C5DDEC532
+1B3067F6BBB1BEA9B359D5FBC186CF19A965DFF5CF117823A614FA43AE5856B9
+CFAF6EB0900741D3A2CBA1DF9E5F92503B128C878C2BF35973C8B67F7356328F
+065AECFAA6750C633A435BF27EC5A815C5A50733DCBAAC59EA0629A79CB2C55E
+349C802A8783FEA51C7254B52C563C2C3952739107ED219CCC9FF776F6BE85A7
+0BBD47696B6E2A2118644B12B39C3C47EBBFCCEF7A47FAC7B048D7FA3BDB2EDB
+DCEEA6E1806791D24CF1A933F97C4E0B4FBB8D8AB396CA6D9DFAC6A6C5F9D5B6
+D84F203E506857F5EBE68DA4D3ACE0FAB800673B1CDA565BE75C96348A056256
+E4E55820F5A3E92B3B54767283F69B7CDED30F43E13890C28EA5EB8044E781A1
+E556B8BC14F4DF6A662CC960CA2D84E4E82E884A2993A2C4F72455E64C82426E
+A3A06212E274881248106BBA6BB1912D9798CF18834A0B8A6AF0AB7D9C4CFD70
+0755F3027E6B8B8CC92C3739550A25B53430E8233A38DC43058CA991BE39A049
+E9C4F0738EBBFD64CAB93EB3CCEBB15873CBE1D3FDD0A2010D84772F026BEECE
+457DD1F178024CDC317F7A4358415D187907DA789FA3F5CDD2DF409A4F560082
+D866BAA86C282BB59661B780E305DBCBA141F8C31626FB8A2D96FE36D0BB6E0C
+818A510EC286E339B272D134BCBCEAB20EA54E008749C987843A35E0BC4FC6F4
+51C69156A5FBA0919F097703A589F0AC7CC1636BAD443ADBC14D1CEEC8CAAF7A
+DFC003A9BB6D647564C31C9F8B634F08D902AA74CD31E78BEA3D1F7B48A76EF1
+5EBDFFEA47A0AB6E112B0F4E9F8181915C38E764DF5A0AED0C0B6DA0A36C94DF
+1E46D4E71FD152F2173E4CB14E2EFF13A5256E4459284EEDCF91BF2D468E5B69
+B27E25AA8111D71FFEB0A233BB9E9111767D6A96C37A12E913C80EFFAF872D09
+C247B13B4AB649AFEE4052B2A912799A1A64241E2FE836BF67E1FC57C6EE3D89
+A60E4AD8024696519E1C831C6C3782D74274E57E11838AFD681034BEA8220243
+17D634FBA59776051EE9845E682139F82DBEF57602655D2CEFED4CBA8734EB26
+ECD5A8A187F47F9172B837B42DBC23ABC46E37B10AD31A12C78F6FAD29DC33DD
+C9569882A60C2D47BEA5F1E1FA4C7444A5076BB2FAE7D890BF059E68EA743F14
+3DBB31DFE65D661AA351455786DC4956EC6B41720C596E75703C2B3D2A243014
+1C7A148BFE8074817026499A35908B25907706F05738206A1927DE3780F3055A
+4257D086D5B2C16F9595C0102D03F9227AC82FC961BDFC923DB0ADE61517AE94
+D5A6F5CF4692733707A90EDBCE9CF2C1702C891EE107328ACCBF406AE86F15CD
+7DA45BE141F59F964BF11B6453CD9ACF6CF8255D3385219FE1F473811BF1A3AD
+C1236F69DF20A21A2E7809D2D3B4E5C48CEC01FE0BE8A7E000EDBEC6D3BB8635
+D88B61038CA583B986C4B8026EC737A22A1323096424ACF1940374D50097B613
+F59D2EE1FCCA68247BFE459329CBF8B3946D71515FFD94989A22377F1C614197
+A33F4BF7AA477EF83D2BF4C2B84AC30D082DA46B352AB2E4DDF79CFA06ACF6B3
+F5B5276CF19AF172561D47A92C392A039E4A0C1602EFE1C2A4A7D12FFA4DF8E0
+0D0735FA17211AF8E9EDC44E1B5AAA782755A91C57226130BD16381A96D7CFFE
+B45E1DC5F25FD2DDF260D35A6A91ACC1D14FE619D78865E5D3CBB766BE1615EB
+A972648777E55B847487DF5E1542FEAC876B2F3DCE15ADD69130FDCCF8DF2F0A
+1280EB86A8575B9716EEA60F65469F928EBB5CA63364D24ACB1061134D4D1ADF
+0F5E690C6B098898C1970E8B85DEFD65DADDE104D9486B1FC68E2E6E7AF84EF3
+0184986F1C35C71C43BB1E22633D6AB97DCE2AADD8CD2AA6A4BD653964EFE00F
+45777F2E211037281C3EE0529B11A53682E7D6A283DEF258FBC29F845D6698EE
+9CEF1F691F80FE9CC15B6D49E4E65162F520908B3209C5F56F54D242FCD6FE14
+FCCCF023938E9AD1FB75B47EE1CF65EAE507E0796018DACC8ECB7B7409EAC387
+DFEC49F88B238CB1F58A988F096C9CD38D4DDF98ED5A1534EDC35045C0126172
+7B9687C65C9B53A0BCF38A1AFDFCC09C70338876614FD4B94E0C5ED6DB2210F0
+DD1493EFD84B0DBABC54349C7665785D534B0E62E0D60B826B9697A977DE2D10
+7AB9C0FC1DF6B9C22374A768D1A83BBE3EB5A1AFF968612D252C38FF1E6DF43B
+600BCE109770E4B72169D887D63ED4A99D42BBAC4A6D1040C236B9620A82B3C9
+16E4867189B23C2CF3A4C74F2B6BA1A872A99321A2F83E2F4645AB26FCB722AD
+69CD91A39BA3B80DB61E1F39B442182B4E5356F910D5D2B2A302D5E0A84F14F8
+4A307FEB5F2B7C8AFEBC7E0E11F64E473E682E95182D19C62377CE3925B47D97
+5BED80079258FB004E8DD0FAC627FA3B8419D2CDB57B691D4F5747D3C6F82D51
+EF17725EE9D94221696AA7B7E22A2B761418CB71B2B022DD7B78BE7CE61D77C7
+2B24EA281583002286742650CBE59383CE62A51B345D93A230BA5620B7B99C1B
+01A653B8AE03CF79067FA259FB4C924C23FE19460BB276A5BC129BA8D10025A7
+6BC48467B76E8DFB656D2E50FBAEEB148894F9808574A27F478BFC1AE5A06CC1
+CB9B8DBA1649BAD8D945AC2CE7D42D995E44EA9482ABB7FAA7CCE140F9845344
+C1B78999AFED6D23C668453074C2AFF1307DC40C80261321372C4A2AB9A9C2A8
+9DBC33ABED76502F09099F2055D18974C2E0FB8AB6749CBE851A4DC97E3A8E04
+EB48A390E99C541A59F2ECDC0CB3D5DE991DAEA6AA1368228898C8A69B90304C
+FA18E275321266D06C32DB43390591CD41DD1E0CD7FD83129E89E3FA3D7D6E9C
+FA3CC4C3FACEB55817D9D9457B559309A5DF56EDE46F4C4B99BA10C302245D51
+F0D9660A99D01B5125349E1390B7D636E49D40A153A291B2B2A881CF8D9D0EE9
+5A3AE6EFF61B01D926CA46AE78B8D8670DB0160A154AFA587DAAFDC88B1F07E3
+5A09FB939FD04B0C49C891F4DEEDD67C300888829BD13645D1F3131C97CC39E2
+4B076A76FEFA86C65BD3AD836C70FFE6239657B02686D4CF2EAEAE0C28222ABC
+266508088A7A14C4F973C648C5EB3740144D6B1FE1B99CA2C3ACE458800C33CE
+10EA2636874D5DB56A15EF7A416903E830F8A80AAB5A324D55A90B5133B750D7
+15F6E7B057AF8861628364A577B0611D3CDA76CD0D1D0494FA66929CF31F0281
+AD662396C8E6B960E63E454B1FEB22DAEC770F4558CDA9A88EF7528C8BAD10D8
+400BD93BDE9DE519C516CEC04C0F4A04A2CBA8B20EBCA04E92427FD53C04BF6A
+089A5291366162BCF9BDD5DF7D5EBF2814F62E440CE1C9A4545559D0805FBB15
+D1478B4ADDB586ECA220567426C04EE77AFD804EAD66495589BBF59B99CBC118
+FB84AFCAF626F16A0F9D3306F0D32C98C19A9D24433B1C0100564B3B67A0CD76
+7BC54463440766C923C660C521ACA51CEC94F8426AA3F014B86C2818B61D68E8
+27B1EF085993D82E66CB100AAD4B6F1F649D8EFF6AB9E70595CE158470F6A2C9
+987A4EBC5CCFADAB433CC914EBAC83E6877C3E2FF6FBC7BA3D27173A5C3FE3D3
+849C54452CC6EC6A49EB4888AE8704CAEBD788509DAB1AC5CF42F600855E068D
+81E4FC6103002D0A3958665CB0C925FBB0DFD793573481ECFE3C47677BE59D1E
+87753B9A476D791EC30B3271C26D164282472B9A9700B7B7B52B59743245D24E
+9F9137BB2AE6397C1C983480DE0817D74667ACD338F22450A8E7A3CB2B0F8FAF
+E62AE44F230FCF3AAB64313B9C71CFDD9FCBC61826B31C36E7673BBD5DB7B944
+E1C47C7ECA5AC813D6C9A59AAFE306B8F9F3AD6159D77038542FFE1FBF307DFD
+B72C26E5834B30E3B30456ED51D9068DC7C5610E07696D880000EA5EB33944F6
+91C08157D9B9C094AF0CEC1269F1C75EADCB784503612B9F1CBB2E9ED8C75568
+34BB8736888AF7BF9CBCEDDEF078C06DE0A39F605CCA03649EA2288646A53A86
+48B4909E264892E3902F9049C63BD1B9FAED0F86B4E2A48BFFABEBDF03DF493E
+7129A6DFE8745BF260F0E781CBDFBF82B8C0D675B30BD68A8920747A9F8BD67E
+9225836B9D376803647BEBA6A793620A5B6E655F6E804BCC13AC9DC7523E8A37
+B527C5B2C5678B2CEFC06BB34F1C717077E5EB2247C2ED7F1C8E799C9CFCD0C2
+1981966D6B538AF1CA6A45E60DB3B56B3673388DDC88F4999AD320902EA4662A
+C7AC86E9BC9846A8AD6C70243CB3F0CD76B8D85FB28459C6C934F1BDC914E1E6
+05386FFB1FE419E92673185C4078C778C504926A3EF633F626C1E915A255CC19
+0B5491D633E6C55EFBB14D331ACD310E05AF9255CF9D5F4A5366165FCB102D0E
+82E350B6D1D7CA627C2B9364FA3CF6365E89F1F6A8B3EC62959723EA69947A8C
+06E7FADD9E8F77306801886FC458D468D428EA661B177DD11EA9EB262E35C1CD
+F2459040FD4FB56413E3D476175115466E86E86A48D37B7055091B34CA71175B
+C7D3B92738747D9278171BD2B6D90FFAB0CA0C8A2059602BBCD576AEC8B22BAF
+03B3D5166AF750BFC75E96DE08CD03D758A7D0D890733BB90B83B43D891C7C95
+882EBA8CB11C8BC17CFC77D92425878C391825157792922E98BFE8E388CB7C34
+E0864B35E46A66A76BE4AD49843DC8D7749EB3C75B4A9151D2D3BA2043144114
+CE0790F3666D8247B193FF496C1FE74671DC0395472CCAC82964B06D06F0B5EA
+FA826241D5C83D632A2E95B0155FDF99C3D9782813D74243BF5B2AFF49A9A2E6
+7DBFEAD8071D41699398EF82AF074C6D36E2A958C7C22BFB7D244E23A9135803
+1152C0F496F880192FC7D4291BE9ECCA4DA0B78329012146F9CDD5F13AE6BC64
+1FA4AA0627D9BAAE5E94931A75956703502CD4AA005BDA838EEF2C8E2D9C86FE
+C478840C67F0C3653E6761FA9E3D32699B87A5EA25E15A8586569A0A4C0B0355
+F55C8EEA5972AD04D9D259483276957317A895EAE1A9051C2F50D8D8F2574C20
+61BA0DFAAB062487915BBAC3F94D68597336D2CECBDDE91114397CA140304BBE
+1F29BC4D399CA8294CCD1AF86F7154C35C2BDBD522D1E2B50C83F8A3653AF4FC
+67E8DDD986C66AAF93DE1658EC602ADD39F149B4754F82047F31CAED0D16CB1B
+D6432783BA32462770F2BF25CCAD21FF0BF63356D02BF65F609DFEFE2A6A49F0
+3A99A28B4C956965831A5B4D7134E56DD49036A0BE4BF4FDC529C2E61C40CE36
+527E593B4AC66EB306DCC8B7F9C5F03E51DF3E6CEB90360692EA4F1CA8507B0C
+7E741318B8F27DA7B124DA9C6880200487003EBED5684CA278C9CAF90DC9512B
+CF0C4EDE8E22E97DD209CDE76215ED9034C6DAA5FBF0CF0A69BE243DA3DC4C53
+9409B184657FDB99EDDBD18E3D4875232E9CD7733DA08E917020D36EF8EE0DED
+DC9748565E2FC6DB1A828931533EFE23C6E45D7D51B753F9651EBD911A7526BD
+5800ECAFF7AA226EF9A77EEC33545BF089C1CBABCE64B535C8807CAE576DE6AB
+DC87B761759CA53BBF81425076CB1A3E80E59E69871EADC7568217A647620647
+F6E4DBE8C73D3CD572737DAD56D7C7CF8E0E29E4BE702FD3690917EABE0E0243
+D6C0BEB85A7CE6B358C03B168B7498D5865E9EA0147AE2D0C03FE89FDE7D345F
+170DDD1234AC758D038AAD707C8737A42C6CA8673A2BE06E822E7F810279F60C
+6FEBFA60457F2B9FD4B8F0739845DCBE70A8917249D1DA0D0D6F689F19F88606
+EE480B0E20AD4BC9C1FC6A69D7D8EEC59C9CE8BF5AA1F80EB16E71C9C729683C
+C4BAEAAC8BBAC6CFFD75C6E263C3B5E0EC37915818DB6B5DCBA0E7642BC15A7C
+25BED64854AD9EF87E641A6486ACE5D8E5985A12F641023BA4CF2A91B071592F
+585BC2A5700FB7E78EC79B97F440FFD7D8BFED7A614AAABE8A02F96733C04489
+4AD85C7D0A16D149CCBBEF1BFBF4681C8997D4B082BF6C23865BFDE1572BF747
+D563A7CBC031FD1F31F87AB0360A3A19A4B0692DBB21D2870B213C2579A0468C
+2C116720B51C9C05FA21C8926FB5C56C9A01592921EA6ACE28083A15ABFA09C7
+F26F6718B5DD19C49136BD67889D92CD8EB170A390AF147CD77486E02AFBA609
+FC026062588F302DBE927C81CC7181FEB421C9BD6F7EBF384351A76FF78F3FD0
+CCDE2DA3A920F1E3ADB898C5F6FB17C1A2C9D916B150BB8D47E3F454FD9F5E6B
+91AF2AE713B7F5699A87716DB11ECEE2DF4FD6AEA2338B4AABDC2AA4D5F2C3D1
+95628214615DE31B258A69DCC8B0439D3834E704E4CA690583C4E044FECE3EA4
+D2FAF665D893A7EFA74B37CAC3E6B9531D45C26ECC4B563F6052BE495D2F15F3
+F4E243BC1365EB9C5D324B339B47589B835E74247E1A9880E689032D74C97D19
+279A2DA845E3919355FF5473C3B63556A627A8062EA281BCACA002B910E513DB
+E10D4487A38A21543F1BA8039C6832B40599D0E6167B7B3460D74BE10605EA47
+3EE399C32A1406704534D419D26E15E8A66DDD88B7B3BF653D2BE8FC63CAD30A
+FFDC877FA3A3E7E1A23CB44B70E7E203DCB586D7B81D1E3A1C1E500FBE3DEB6F
+BF80C00DB97BB19DAFC0FB38270822331035AB82BB6B43D12B9CC5B0076AAA04
+560E62C55017054BF01441F2DC393F44D1A4F37584D929EF7E0B801D4F5D1CF7
+C0E8A6D6BA9F74051E614FA33AB7F00DEA6F138D03614573460D878BC25C3D72
+07EF46D27D26F4755953ACCB841C30ABE706C4A28AC01204A6756215214361AB
+E929409274B089DA1FCA4BF9A6FB7CEE925FC86FB1C4C018403204B1076E1857
+B81233ACF6920D29DFD2C5E01310D4B41A5DD73E9EFD409202D87EAA7465F15B
+2FEF5FAC46E012F7218982BB213A006B7756CB42A37E39700DA1961420E9FFAA
+2FD4295D243A79ACA04E14729EE32B4B5E38F419FB1C4450C072B7F228017A94
+118EEAD4DCF50896EB5AB380130E2E4C139C911FDE6036F6D1A36920CF4D8EDD
+23449F8BBD9E7F0572895C444AAC65743AF93639680E85C27CD4D2CB53D16CEA
+DFB66E6BCA776DA3E0B6722E64EC5951DB230346BE53B09EA0FEA4FCF8E86D27
+A190FAB3B3277C158357BB542DD8DBF741912884523C16982125B85BBC746E65
+3D0F0A1D7041383C4EED67B039674652D864F216B9141B6FAE8FE901AA46BC12
+6D815BE37692B5CA665004FD4D23F148652657A35DDD97652B50D2C1973CBA05
+DBA70EF4498B15541C27C528C081D492734D7C92F717A09EDE796C7986C5F3F6
+21D1941B2A183B6D34B3695DE39527EE244B9533ACAA37805E79879810048820
+D46FE34A3E25E1BADAFBA9F606B07EB20FDDA9775DFE883AFAA932088BF0CF68
+DBA888D32E2CC0D3DC135DC5F537387E91D85B860F5FC7C268E7BDCB58BBBB4E
+49114D3EF54271517E762CD5B38A43AA96E2CB38EC43BDC408B2BE858019C731
+6266C735623E072450A46DB7F7100E75A52A6DF1C9034732268699EC5D5DB448
+2B6CD8CE5508301801548A13E7192AB4C860D218A8B9197486F4393C9D1F63A6
+23B74D2709C14379B2CF6A03C9078A49907D6F3D8A77103F0907D0B91AE09BAC
+EF02774D74FD2A7B5FF5457F0C9EDB1AB6FA13232E1A2D7D9F135A7DE264857E
+2EF7A190A73AA423042F8942E3E91A0E7A0A305201366693CC35F9517DC38B7E
+B24E733C6068666C782C8D41CD27CD463559449A3BA4586AE7D07146FBE9EFDA
+BCD23880A5CA2C1D45E07B12B1FE4877074B4BDD05F24B54307B736B0FC49AFF
+60356E954E33130A60877DBAEECBCCA5619E5447FBE42C47AFB9B4D379690BBA
+60BB3B6763BE9C12F3C05CBFE973D5D0D2F10CB0D75F6DD3A2875D200AEC5DF3
+99805230170E8341F297E1C8F4CA0B72F6C4B4DD5808A658309DBF3709FC7F7F
+B60BA3C59C1DD179348413107B935550DAF2413778CE356EA8F34DC3E7D64E23
+8918F6EACCB7B2E80AA9180EBAF176B14313DF50B522AE0B0D7D243B5CA08033
+507DE4F93087EE6F4C8FBE31D9C689622FB66F260CD29219EB2DF4C649B111BB
+AA0E26AFB6972DF09FEBCCF00248BE2A7E8029BA08EBCE8A7B0E1CF310F74D24
+100E8E5D51CFAFF984610A38CB1095B89EE7767DFE323E476B69E4800391B44A
+5C51A7CC2C94200A5AB216EF0EDE3C26252BB664802D0858E722A8FDBEF4688F
+00E5D12E69D5963B48AC1A26355AF9995BD566A6EA68675C5A0CBF7C179E297E
+574993035D0B22B7FF7DA5717310707E6832696FB4020D0BAA41F247AAE332C1
+80AF204E5972B4D399282C06BD1D6371F6CE17635A70339AE79DC85681D25B2F
+67EDB43C4310BA00C6DB8C65F2D277D10E96EA4C06FA24E4D252E0144DEC8FB5
+18EE43D5C71720E83F39B4B400E8787189ABCFF863F2692AFCE4388B41CDB171
+B148102A5F4A50BB162866644EDCC4C7E6A615FA4B73FE735EBD5BB4C8B2A72B
+E47ABF1B0D5EA995E28FB0F758E4F484B5227BA3E7A22F441122BB1CD07422D8
+559CCBDB9D17068D0ACA47795E76CE25819875027FE4954924F7023216F1A526
+75E0DBCDBA26AB40B39C740439B5643268E7B533AE8E4AE23DFDA57428AF1E95
+33872479E12DC1022205AF91184D566D8C8A2A10F08E6475307A3E39EBFCFA38
+1A11C110AC615378DCA70493B05837F5DFC80498DB0B8546B8A5D64B48683831
+3CDC5B4E301CF298681CAA6D3AE1DD97113CBC7D009FECDCEC0D7F7A3D774DE8
+C15EF3AB6F520C9C14BEE41D57D352ECEFAC66FBB95815C8626BC59A20068401
+4E499E9388D5AA912097891EB8793F0A231478F9759B69C58F64E1338C00D12A
+58BD7DC5A5164A287AE82301E96EC471F69EE38593C6D8D10107DB36728DEB2D
+15E7D16DB331890DFB63A7328A14E5583C303F4AEF34A0FC41E0388E09126ABD
+C9E2C2A7E1770EE0F894B8BBF22B4AEFE3E35B86AE9F7A75169EAA24FB17CFD1
+C14ECFC0302AED2198ACDD642FF224DB45F96CB869C856FB51D6F2739F6C6D15
+5740E9E4515DA13460C6330710E62BF93E65E4730BFA48BD01C55D78C616484F
+D200AFAA5F1BEB2BD962E1D00FC806DFD6CE3304CF661B139BF9FA18B2222CA3
+05F26D43C3469A8856D4FCA1CE3D400FABA0B6EFEF31E077F1C08022388E17C3
+B82FF34A1EB9D25F9A7D930310A6DB534564CF7EDA5CF9032752A3E3262438C7
+B16508E739F02EFB5A5651975A08C494E53872B6CD97AD868259EF95F3A4054F
+9DA61DFAC94722F68A242B0E1278FEFBCD43F21087A82FD0CD09CAECC7FB4F3C
+FE441938379EFB10D45E41C6E63DB2C2876810097200A1D9057F861561CCEEEB
+0604AFF0DB4EA4869EA9FF6E7CD8F930A8DDBF82C800BE2626F46FD93F361D7F
+9A3D3C138AC8B12CFC4734851697CE8F1673D8D43DFDD3AB2DFEA03B2C06B565
+72FD751653A3DC6DDA4048760A1A4443903F3B039C2268220F2B580570A302D6
+751FA82C884669AE49AE2A6D1EE377B96D125B47EE3E7DF66C33542A70ECE4DD
+67F35081E2CEF1D28EED41A53EA61013B5C433B39532135352F2A94D59313328
+FBE57D6FE410E64B1E846B03FE0A30422F4E5D5C8146128BB4AA8C2C630B9499
+C910C05D206610438F4FA65DAD327282E3C58C3957101B20AFDBD864581875C9
+DE2C3AC55C343137BC4D1B909629A2EF9135EC4BAC0BF29018A82A0C84142457
+1F71A2A27E2D9484AA47784EB92EAC52573900E14F6925721406FDB8F9A2FD68
+ADD352B5FA039D2390DFF4E0F72A078931A750411E9E035053B457E600314660
+B50320B70934D4E94E4D3B308D7DBC2388A77FF084DD83F8884F309ADCF4EB87
+66A7CAEE25C6E20824BF2C76068850C2B5FCBD07BC7CB7B4B7BC0E46A4092E08
+2867CCC3184B02C3F04D18121275F250FD3E075C7A3810734B7D9ACBD4AD0D1C
+DFEBF5037B035F0B74378B25F367DBF7C26E489B06E024EC80B473217B54C24B
+D0F998E21732CB608D2477EE18CE7CE18FB417C0790B16BFB9F892033B97EC54
+BD85AB9344F1BAB2A9BFA8DA80E33D589256F43A4257FD46F37C2F0592A48831
+3DE6049C649ED4FA4E83A8CCD93B2247146F20D01018924FA8D188B03A5D3B44
+413DB76A508EEA254DA3CEF3B03C0E624264A9E9D572ED479C3FA76FEDA23D0D
+9887AD60469474764EEA04DD4B5DAAD669C14186D9678424A091D0FEAD822699
+718F7D23B05076DED3C883404712226EB7E52ABB3DFF9FD907B4B5B7665A9865
+1FD41E0F66E70B5CFA97DB81151B96FEB4B33A09720199082B46BF9C6E715C2B
+D6345B45AB3F553D3F20E7D19CDE669F858ED0489DA8A09A3A95AF704F605176
+3163DDDAF1D31B22DF8A5BFB4C0EBD69A6BB12C2DC74940E1BAEA5D954479566
+029ECDAB26EC6D15DACCF75DCCECC4386DB0D86D2802726822FC04E6C676B7F4
+3589EB5E53B57AFAD12C29B777266E0714FB0FB476CCA6FFA25F713CC5E27BC8
+786B114EE2327D16DE9C0E0D42D018388D2F7B940279726ACA3ACCEC31F0852E
+9EFE3419CB37660562658CF54E7843B8D70D62A7AF1C812017E7C826E58F3EFE
+AFA779379127642BE0A60705400EDB133CCC8BA30965D09938D22C267D064296
+85DE334C38DFAB31BC4F0CC33D8F3D93EBF3BFDCB0C43F77007B9C1E666C6713
+DF254F5E19F655F8EFEA367E10BE74A282F909989D865C8B6D52D39B114A729C
+A7F11D538920E61DF08EB89A48D59FDBCF4AEA67CF8CE990E1BAF5AF145CA80B
+81C16BDDD9B2BD1A6B153137930D69ED680EA892ADD867B393F6501EE5A67316
+DB3665BA3036321743415AB1A784A9D1464E245AAB0F9EC455254FB0DF049DC9
+B83D67D7947A3FCA600745E4696190800752BCF657B656C19AFDE528940B059C
+56B09D9A5D692576A746DF0214F0F8045A649351BBE92695C93866C060031350
+9A85807EE23FAA86CABAC8C35EE8F8F87430298A9B2890DBFE87E520120F3D9F
+25F4076B09619B7CAC6E1DA280637862B87DA391DAE17A768B82798BFB40FE82
+72D6F288B8BC577CDB1D0E907729312C7F412FA1A6B568840B04B7F0ED55DEA3
+71551E02D3451ADD0F0D46D697C7CF1CD8A6C4A372D11B4CB39A435CC350FD01
+434914C1F9EF60E2296B5557EFCBC15AF21E4C82D9A52B0763128A6A9CF83D5C
+F7C5F36B001C5E77C00ACED958E35AF237C055E27F26ED00FDACC250E8716574
+D50B9DC810293430695F4D9270B981081E49C47A915B42039DCB36D3CE5555FC
+26FCE46B2D996CEE6AB80454CBBB35F9F53A4E939C82BCF2477BA0AF6F88E574
+D83B92F7081B0E1F5B0CCBF6BF9675AE7B9DBBD107120481737D28E2FFB6AAB6
+DA6601EDFAD88E2BE75C12569E4B8551D4869DC5A36BB6E2AE00E1E141DB4A43
+A6B4A90A334BCBACB678FCC647D25BEE140449033160EC5C363F9E575618C223
+ECE6A79C1EB76FECA1578E151984914439AEDA51C3E86167E3D63552168B9B8D
+E77901E3291E2C4DD5376F051EABC76D9127EE146B8BAC22857914B71D77475F
+209F54B80B5F55A9D23913B5002394A1526B9492FEC352B05CE461F71C8CE490
+47D9796810CC96290FDD9BE5D4350637F6F8C8870FEFECEED33C129FC5CD0602
+BEE07534E254D181C89AEF245AC1D1BED915F4CDBB0B9B745B82049FE6762D6D
+1E4CCE1886C823947623FD46E39E957B3CB503E93596921E75F4E8181B799D6A
+277B64201D325B280564BDAA7CB7132F16F48EDC386E5285C1A5E3088EA7647B
+92E39EDCDDEA3D554E3406C6E411C22313033C7AEAB9E4DB2A1A1A4B03F75D0D
+C8F1B5B2E09B2C22FF062BB1F017BB7E383D444F6530B487BAD96C594CCB9685
+C3C905398225E045A40F86717AE3B78234B3774D4B445EFBD95C26F2CBD98EA1
+C95A2A88D21B4415A0DF1A724385AAD2115CEEC3EA9AEA9203ABDD304388EA0B
+7C3B76DA1382D38AF01325D88FF9168028DA9353BAB23F67E960A5428F3107B5
+5CF7221175F1810BF0D07343BE59584B6D06F9D9B5D171F1D6BB167B020C5039
+C36EC1CB1AAC41773065BC7991D712ACEA5D7F627B02611FCDCE21711EC7EC74
+AB0BFC57B1CCED1884BB9B18868A2053AF58F621016AE639ED6D58EABC42FF0F
+A5F76685634C85F3BAC77EAB39C23707518CAAFC7DCBC9F9D27B8BE49E85D335
+4A74F0A8D93CB7C2EC5A9982804BF24ED1832C549EC8B2AB2B1A212B14E04F26
+BFBF1811C51029CF134633B62E08C3F88C615157DBCC5D336057548711630253
+C97F950490F0A2479405C6D88896D9715A139D0D365EEF1F65254616DE309AAC
+8C708FD30001B3AB61A07630C8A5ED420D286442FFB6729DF0BFA47BE2C87480
+62BA997499C1CA63131F3AEA492C2292E8F1B87011932640FA023A1C022D98B9
+2397BF2C01709CB33B012E69B928ED9E78B5157CC3A5E6F504267421EEA08A95
+A5B3062D0AA95CA6411F51C3ABD548B82F47D3A759B3B1C5D8F8A227BA4A23C7
+77B7C36721C2DAF57426DD1A5538DEAF00B432D8E839C15C33B2762320295E2D
+CDF4F1277FA2319433F4249B246D4BEBAA57DB6378C96576881B855717AD5BE0
+949882C4BCE64C7E037FD8161CFBF8E7212C23BAF8C9CDD6E194483436B69C59
+CBE7AF01B041FA9507CF9EEA2272A8E90F4E8EE8D0EE8BE355369BABC289855A
+10A2E0C23A146E9394BAAD955E6F55E44127003E6976DD267BCFC1BC14130D1B
+5841165507F65D0599FA44E81329A04EC5B71BA7D4050071CA65421C0457D6BF
+F4E361666041C197E2594BF098E6AD3212A1075DBB2815903464E2070A54ED33
+C29B0B92254C9ABF5AD9A8B92F050D2B02244B09DBE3AE43920A0714CCFD525C
+C5E5594E3E1B6C58AE380F3E680B96127F48C00A5CD25D09A4768FC25E0FA213
+5662DDEA45A533F68B0B77E7938E03C304927D597C9925A925BEF5762DBE6951
+2FB9C0D5E9D85704B2762D3A8E49DE2920E533A2A2B3A6B5910D0210D51B77F1
+D4A7CCCC264DCB4D138E4157F9931A376785A4963EC4754BEE642C6A9953711F
+9235407EAC877A53491706029B42562370A3776CD6E00664291BA8253644B031
+8C1A997FB81F7D88B33D51939C7AA6833BE8B9E22BFE9960897299C357CA4244
+A0F42A92156CBFC0C46E9F76C9210239D9B116BC8F0D1E024FCF879349137D86
+10AAB7DF3EBAB12F3B087076146D0B4E0800ABE190175F877E67037E1C4D5DD2
+B1F53957CFF1C51C349248F68FE367E451E7685F104482D3B9DD4D7930E63CAB
+E8A97DE032E9B4ECCB6744C2FF3A796530603D9B1645A144EF9B78F832EF35D9
+5F04CA48482BC44B56626F80195C2E34D5ABB6EC46B5CDD1051B1121C06BD2AE
+633FA5F7EBBF4C54C9FDF19ED3165B0E176E3DFD22B2CD6B9376CCC6C862A13E
+3A7316D6CDE2B598F22D3D3935A888146BA654907EFD4EBB93E16C1691127ADF
+44D0D01061E29E58D102A537C84A694341595DE48E29D2928F067B7091C0E711
+68EED7D9FE14B3F495CE41BF7BC7CCDBFABF97D8C9FA5FD21604698A1C8700D6
+692774BF8A0A723B868BF8E80F82468FD097639C571C3A0EE0C154DE9FB11B7E
+89979087BED793DE89F2B4B3C6A267E4FE3C8A02EA38847E2A4CB03E2B73AACE
+332836D739D1C4B14C71E5E5E110DE20DBDCA5916E4E33D1B5037B55F991FD0F
+12B91E669A6DBA12DC98B4CF9E160BAA103BBA643E25275BC32BFBA19AD5401B
+EAF813FAC17F67B0B9F222D03A080813DC68EFF4CF745E42A0423A3A76A639A1
+3C1217D84E62AEB0495FF3D9F9557D3EEADB4CF622232B6AE4FE2DC7A95AE179
+6788BCEE6421FDF76448F0462B79F1612E83774EF10D5F62A5A275420F2E8590
+3EF5ECFB398574DDED563876110507B87067F349E123010D781F9ED5EDAD8F07
+443E8F84ADDA31121DB3D1414B540ECF9897476FD351A6EBDD5490EDDE270312
+0234293E6B8293830F57F1B8AB65EAD8FF7EA3F0A3E02C38F927318FC492105E
+F2AD9DB49BD49922F6F54B21DD1E5B8885C19424927CE4DF58754DD387A29CF6
+11E2CC20B3B726B22A0D46C709FFEA147ED78FA7F874119B11D63CF78C54F6C0
+E77AEB656B5F3318531CEF393C1860E69AE5EEB179C2C8E01E10D2A594FB29EB
+B9F897CC3A7F0C3D9022D80197166552F2BEDEAE8459EB15821A9CE4CC97C7F1
+3E588FA18BE5FE27953BE6E6C754E0C25BA394A62888B49B636661C69B5848F8
+5E6F9C5516928D6C2BFE046A8E6E9DC127CBA203391D1DE19BFEF942A07AE4D2
+5A6AADE9DED198F55D0E2BCC220C64DADDEDFAFF96CFC4A4BA1AE98605E81E66
+96DF11D0DCB551701A4B76C64A7601D3B1B2C0A558F04FE5289C5EE052EED2DE
+D72459CA00DD31AFA2AFAFFE05165E51D29F93C27891AA3829286C5EDE807583
+D1F6B621B7BFC9A0158F6EEC63BD5FB85215891A22B8ABCFE02A1412F34A4B50
+6C85476ACEE743051AD048FA3733791A0BBA0CC7A980E04C6845E8F771A07F0C
+81BB3D93EE17BB943036396179D8118C00CA7BAACEB386B7C29D555A2AE07162
+6BFAD2F69AB89542C2F3C1A1877B8D44EF6631AB459974B4987D4007C8CEB06F
+D226E0845E190A170D2C8A84A579D9D171EFD7E29CA9B31CD1CD3CCCC95C1FC8
+0625DC4C76F91E9066BD5E6094CE3072AAEF99DB5E6E10950FC342FEA8777404
+ECD78AFA3565
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMR12
+%!PS-AdobeFont-1.1: CMR12 1.0
+%%CreationDate: 1991 Aug 20 16:38:05
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 46 /period put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 65 /A put
+dup 86 /V put
+dup 101 /e put
+dup 105 /i put
+dup 108 /l put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+readonly def
+/FontBBox{-34 -251 988 750}readonly def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
+68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
+3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E
+59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28
+51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23
+DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A
+AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F
+45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31
+821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE
+96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D
+9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379
+26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4
+140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213
+1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498
+1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB
+377D3061A20B1EB98796B8607EECBC699445EAA866C38E02DF59F5EDD378303A
+0733B90E7835C0AAF32BA04F1566D8161EA89CD4D14DDB953F8B910BFC8A7F03
+5020F55EF8FC2640ADADA156F6CF8F2EB6610F7EE8874A26CBE7CD154469B9F4
+ED76886B3FB679FFDEB59BB6C55AF7087BA48B75EE2FB374B19BCC421A963E15
+FE05ECAAF9EECDF4B2715010A320102E6F8CCAA342FA11532671CEBFCF38BC60
+5BF06A0E01053B7F105ED5140FA4FA37A4F45ABFB58DD41780629C7FA7594F8E
+9488B074D45BA0E761190A94DBFF4CF204D5812EB1DFBC0C456D6A044C558945
+8DF6D6AF8A51131AB5913EF2544E475F489FE776FA45E7C0EB62096CF4517450
+8A57DD2B80EF97DBD17036EB9B73FCB82DC4F671BCFEF06A6F86189A2012F53C
+E518466A9385D08942279391EF5C2B3567F2E53B2148AAA0625BDB358ECD2C9B
+730A59F8DF70FD3E09378E24AEE772A69C96E09C0D0703350A75F3843DEDD822
+B364988376CE8027EF12F0453575AE9AE46296E13925BACECA8B8808DA388222
+BA35B431F56BC3C349B8CA6D4AB83664A991FED51478BFE25B0399B54EF27B18
+65E2E39E57DFC5F57371FB4643D7EC0AD41840CA7C682EE7A1B4FE3E06E40238
+B07A2E7A7FB3F35502F1CCA283F9420F2FAB9EC0A8C8982BF4AFE69A3D2690B3
+CF5DB716B3CB9936C49A12944973F14C2D9A368E4067BDBF91E413A3321B3BFA
+B84463D3C680604A4C4E4B49D0F9F9B59D5B68ECD3891FEEDE9B29B9C432212D
+82505A8D423BA734A53DEB930A392BA6011C6EA6EBA7ABAA6AAC003721FB34A6
+1544EEE16F6AD73E6C5743EFF09975C186A9C769A4732F78AA09218AE576FB14
+70E1697B813AC1B09FFAB762678BA9320043C256766AF1BACD3702CED1228B94
+57E353589810F99AF74109EFDA0740CB0475DE7870AA7218120462B23441BB1A
+60ACAF3B8B171E7509854D1C05C8FBF62979D2B52030B4C91F9D038EF26F2C11
+346D0E9955B491C3168E030B9CCE2964883B824F0DCF27EECA6C6E0478CF6B36
+AF2D33C9265A5F8D76FCC46AA30E6093E3822CE70C1ED22CDB8A8F910F5BCF45
+2C9D2D41B342B43DB5FE5EFCFEB5D378F78684296CAED9A39FC3834929073B6E
+A934014457B89A61253E0924D3C6BB4FE4ADFBD0C9B3C61D08E3DB2B26785A1D
+3B5E0E23258AE12276B63E9D79B2EAB305B8108A0987216C0EBF033A839BF611
+CB208A97C18AD434B4AA716C57905AF301C24DD78EC659F2398D46BAC7C30682
+F7E21FFC8370880EB1C9A98807FB05BD23F160F1567070B644C2C0F08C981C81
+3D472A623CBA7ADB80D118D51BF4F2D139CD7F27753F38007D4831760CD2077C
+23643D8F0C038E949E11415E9C570E6CBEDBB60B480B9892731D073C3357902B
+40415292F69357C1AA0C94780336DB4702E659DF67225B2B25811EFE3FBAAA3C
+E06C49CC4591E5E347925A62079C501D27DAB6205E3162D86152476602386329
+0476AB5766DBE6936974CA9B133459886FA5FF402BE911036A9CA31BB71B6C92
+01E5270681E15AC6F3999C114610B08B91FD22B4A4843D0B90276EC2F4FC347A
+C814329239DB5C15CD43DB9A894C666F5121D37B7C6428FF061CBE3974D78B54
+CD74069DCD42AF4734AB5D4239AB83CBBF751DBBD320BEEAB8F31B6036CAC31D
+99C15FBCEA633DA4CDABC8FFEE5E634766C00D4CA8D81F7205A77EC394486032
+57C8547EDB7FF10B3CC9ABB2BCBDD51E304153DEF8BD8EE3591005CC1013BB68
+B579080881221360FF4A62C4D5235D9EF35E09BB44FEB0E41FFCFBF4F654BEFB
+D273339665FAEA9167AE154EC7243623D74A9D2A60883D948DB4127B11F95F0E
+2F5ADB3DDA9D8B9EFB7D32096C0562E81868F9B8277ED54053A37E9EA94C922D
+C42F22136F3E33F63D819C4F8424ACD9C868CCEEFED00274B00A825E61837A2D
+5DA162379664177CFBCD0D4CACE49044160B5275684CAD4C336B730FA4CA49B2
+BC2A450D504857287F9D575884130AEB50F8F14B153C615CA8C3D2AF1EBD84A3
+F158F2EB29BBD92095A15FFE4C6F40E06658A3A52B61EBFE9F3EE3F7E37AC477
+BA24CD27BBFFC121478133B200731F4AF2032B6B6D4F03D113AD8F2391DA0DEE
+27653D82D4838E4CF541CC922E141153BE8DD305D1F89C753180D11DAF0C792D
+56F3674DEEEEDE6494EF766D2453232DF32A80DE36D626594CA73E0F5058B571
+97CE052CA8364A3BE32FD595306A7177DF9BBA06B1B670BBF54D49446E913E64
+E630478AABFCEBEDCA6BB1B1C8DC776E6E253D163DA2B6EE9E5C650F0E172EAD
+A2082D2C14CC270C7E08D213BFEE4596BA64487C447528013F4015A3080FEC41
+DBC11EDBDDA0746B228F45AE86F0A4DF2CEDF61602E7895F3CE32CE145756822
+2E9629AD492BE60B91A0EFAFCD3CF61F019C134EC31A31B61715F7258453E321
+10D09772F56CC4B267D7773BE2B2836C8882561DB6B76E1D40BA3C5A8745D6AA
+ADF93F52BC563A6E27C5456D88F5861DD4E674B4046FFB51B1694C593D3A7D4E
+E9C38ACB2DC0102AEB761556EB9C3C71D13737013D4AD5825FCA260C52F34370
+DB85657F23087DA39702E64FAB15079224B181E9B6C45207DD6271F5F88A0F8C
+3984186804B501D5F0B8EB83C9ABA185AB12A625A364B35857729DFC9EC85908
+0E69DBC9DB97DED2FC244C5386AB7A5DD6C2F6D7B58D00BB3397E74AD5339E8F
+C901FAAEF60492AAACF12C8FDF612DFE5383F98D49BE25BF19E6D21BC7AC3C1F
+857497A5909CE313DA186A628C5437BCE75EEF0144D444B3B9213975D86FAB42
+BEBD3B979136CA744374DC7047970A85744BBC7B15ECA6298819C3CFD43E2F5B
+66FB7F7EF295784CF4BB97EC59C232BB33507366DFC3FAB358B45AC3A1A41F66
+7511D9E06C0D1058A3A36FBB63A6CB58E2FFCA728B488D00FEF055B194963716
+F4C638CD29B7B266C55714EC054CCD7FC211C6989A7DA04429CFA85F7A48036D
+5B0C0C7448CAE051D9B40D9D5FC7CED07DBC1A729F5EB884A07494FC3CD32B25
+C056499909ADB2C51C1B716593E71DDFA245C6F061FA75C47BA92BA3AB974098
+4C597BF9360A45DAB32CED234C3DDB4F087295B191BAFA8601FA938220A208F8
+7E69991199BD1AA04CE35AB4485C5D3F778ED3D98F7F7D60606BADBB9BE61A81
+016CC2AB7F35D5F6C46CDE336F260E46F09BC0C8ABD019BEB8C2BCFC1492D5FC
+2E5D7096FE60880690C7029E848F290AEDB43E2DADF66135CCF79C63FFE522C9
+0A9F283C9CC4B5D4DD9982360EB2F3E07B0FA2E9A9790249D811A3DA5A27239D
+E581D249898A648CA8E33C7273AF4D846C1FF578FF809782618227B2533EB859
+40E2E3BE6ED0997FECECC84404014E3CD692A7CE3967C905B6C7CDE743EBCF5D
+001F22C147C8F5B58D2C6FF35599022A8164F83D85172C5F294F0EF3F7EFCD42
+9A5F91890146261D37F2213784AA79FE9EC56CFFE4DA2CC29B35146F3775E714
+31F07B6673ED2E2AC1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+TeXDict begin 40258431 52099146 1000 600 600 (cfitsio.dvi)
+@start /Fa 138[49 30 37 38 1[46 46 51 74 23 2[28 1[42
+1[42 2[42 46 11[68 12[68 3[69 68[{}17 90.9091 /CMTI10
+rf /Fb 193[71 62[{}1 90.9091 /CMMI10 rf /Fc 149[25 2[45
+45 86[45 15[{}4 90.9091 /CMSY10 rf /Fd 134[59 59 81 59
+62 44 44 46 59 62 56 62 93 31 59 1[31 62 56 34 51 62
+50 62 54 9[116 85 86 78 62 84 1[77 1[88 106 67 88 1[42
+88 88 70 74 86 81 80 85 6[31 56 56 56 56 56 56 56 56
+56 56 1[31 37 32[62 12[{}58 99.6264 /CMBX12 rf /Fe 129[48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 48 48 33[{}93 90.9091 /CMTT10 rf /Ff 133[60 71 71
+97 71 75 52 53 55 1[75 67 75 112 37 71 1[37 75 67 41
+61 75 60 75 65 9[139 102 103 94 75 100 1[92 101 105 128
+81 105 1[50 105 106 85 88 103 97 96 102 7[67 67 67 67
+67 67 67 67 67 67 67 37 45 3[52 52 27[75 78 11[{}62 119.552
+/CMBX12 rf /Fg 135[102 3[75 1[79 1[108 1[108 4[54 108
+2[88 108 2[94 29[140 138 146 7[97 97 97 97 97 97 97 97
+97 97 48[{}23 172.188 /CMBX12 rf /Fh 165[56 68 68 93
+68 68 66 51 67 1[62 71 68 83 57 71 1[33 68 71 59 62 69
+66 64 68 7[45 45 45 45 45 45 45 45 45 45 45 25 30 3[35
+35 40[{}39 90.9091 /CMSL10 rf /Fi 133[46 55 55 1[55 58
+41 41 43 1[58 52 58 87 29 2[29 58 52 32 48 58 46 58 51
+9[108 2[73 58 78 1[71 79 82 1[63 2[40 82 82 66 69 80
+76 74 79 7[52 52 52 52 52 52 52 52 52 52 2[35 32[58 12[{}51
+90.9091 /CMBX10 rf /Fj 132[45 40 48 48 66 48 51 35 36
+36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45
+25 2[25 45 25 56 68 68 93 68 68 66 51 67 71 62 71 68
+83 57 71 47 33 68 71 59 62 69 66 64 68 71 43 1[71 1[25
+25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 71 45 35
+35 25 71 76 45 76 45 25 18[76 51 51 53 11[{}91 90.9091
+/CMR10 rf /Fk 140[46 46 1[65 59 65 1[33 2[33 3[52 14[88
+20[88 13[59 59 59 59 1[33 46[{}15 119.552 /CMR12 rf /Fl
+139[63 64 66 2[81 90 134 45 2[45 1[81 49 74 1[72 1[78
+12[112 90 2[110 6[60 2[101 2[117 1[122 65[{}20 143.462
+/CMBX12 rf /Fm 133[103 123 123 1[123 129 90 92 95 1[129
+116 129 194 65 2[65 129 116 71 106 129 103 129 113 9[240
+1[179 162 129 173 1[159 175 182 1[140 2[87 182 183 146
+153 178 168 165 175 25[65 26[129 12[{}42 206.559 /CMBX12
+rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%BeginPaperSize: Letter
+letter
+%%EndPaperSize
+ end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin 1 0 bop 240 1799 a Fm(CFITSIO)76 b(User's)g(Reference)i
+(Guide)727 2258 y Fl(An)53 b(In)l(terface)f(to)i(FITS)g(F)-13
+b(ormat)54 b(Files)1263 2518 y(for)g(C)f(Programmers)1667
+3013 y Fk(V)-10 b(ersion)38 b(3.3)1727 3916 y Fj(HEASAR)m(C)1764
+4029 y(Co)s(de)30 b(662)1363 4142 y(Go)s(ddard)f(Space)i(Fligh)m(t)h
+(Cen)m(ter)1522 4255 y(Green)m(b)s(elt,)f(MD)h(20771)1857
+4367 y(USA)1682 5227 y Fk(April)37 b(2012)p eop end
+%%Page: 2 2
+TeXDict begin 2 1 bop 0 299 a Fj(ii)p eop end
+%%Page: 3 3
+TeXDict begin 3 2 bop 0 1267 a Fm(Con)-6 b(ten)g(ts)0
+1858 y Fi(1)84 b(In)m(tro)s(duction)3136 b(1)136 2020
+y Fj(1.1)125 b(A)30 b(Brief)h(Ov)m(erview)85 b(.)46 b(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131
+b(1)136 2182 y(1.2)94 b(Sources)30 b(of)h(FITS)f(Soft)m(w)m(are)h(and)f
+(Information)38 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(1)136
+2344 y(1.3)94 b(Ac)m(kno)m(wledgmen)m(ts)30 b(.)46 b(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131
+b(2)136 2506 y(1.4)94 b(Legal)32 b(Stu\013)92 b(.)46
+b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)f(.)131 b(4)0 2766 y Fi(2)119 b(Creating)34
+b(the)h(CFITSIO)e(Library)2256 b(5)136 2928 y Fj(2.1)94
+b(Building)31 b(the)f(Library)58 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(5)345 3090
+y(2.1.1)106 b(Unix)31 b(Systems)44 b(.)h(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(5)345 3252
+y(2.1.2)106 b(VMS)33 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(7)345
+3413 y(2.1.3)106 b(Windo)m(ws)31 b(PCs)f(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(7)345
+3575 y(2.1.4)106 b(Macin)m(tosh)32 b(PCs)55 b(.)46 b(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(7)136
+3737 y(2.2)94 b(T)-8 b(esting)32 b(the)e(Library)j(.)46
+b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+f(.)131 b(8)136 3899 y(2.3)94 b(Linking)31 b(Programs)f(with)g(CFITSIO)
+45 b(.)g(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(9)136
+4061 y(2.4)94 b(Using)31 b(CFITSIO)e(in)h(Multi-threaded)h(En)m
+(vironmen)m(ts)62 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)131 b(9)136 4223 y(2.5)94
+b(Getting)32 b(Started)f(with)f(CFITSIO)60 b(.)46 b(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)f(.)85 b(10)136 4385 y(2.6)94 b(Example)31
+b(Program)86 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)f(.)85 b(10)0 4645 y Fi(3)119 b(A)35
+b(FITS)f(Primer)2918 b(13)0 4904 y(4)119 b(Programming)37
+b(Guidelines)2482 b(15)136 5066 y Fj(4.1)94 b(CFITSIO)29
+b(De\014nitions)44 b(.)h(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)f(.)85 b(15)136 5228 y(4.2)94 b(Curren)m(t)30
+b(Header)h(Data)h(Unit)e(\(CHDU\))87 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)f(.)85 b(17)136 5390 y(4.3)94 b(F)-8 b(unction)32
+b(Names)e(and)g(V)-8 b(ariable)32 b(Datat)m(yp)s(es)41
+b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(18)136 5552 y(4.4)94
+b(Supp)s(ort)29 b(for)h(Unsigned)g(In)m(tegers)h(and)f(Signed)g(Bytes)
+86 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)f(.)85 b(20)136 5714 y(4.5)94 b(Dealing)33
+b(with)d(Character)g(Strings)61 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)f(.)85 b(22)1912 5942 y(iii)p eop end
+%%Page: 4 4
+TeXDict begin 4 3 bop 0 299 a Fj(iv)3311 b Fh(CONTENTS)136
+555 y Fj(4.6)94 b(Implicit)31 b(Data)h(T)m(yp)s(e)e(Con)m(v)m(ersion)65
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(23)136 716 y(4.7)94 b(Data)32 b(Scaling)89 b(.)46 b(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(23)136 876 y(4.8)94 b(Supp)s(ort)29 b(for)h(IEEE)g(Sp)s(ecial)g(V)-8
+b(alues)68 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(24)136 1037 y(4.9)94 b(Error)30 b(Status)g(V)-8 b(alues)32
+b(and)d(the)i(Error)e(Message)j(Stac)m(k)44 b(.)i(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(24)136 1197 y(4.10)49 b(V)-8 b(ariable-Length)33 b(Arra)m(ys)d(in)g
+(Binary)h(T)-8 b(ables)31 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(25)136 1358 y(4.11)49 b(Multiple)32 b(Access)f(to)g(the)g(Same)f
+(FITS)g(File)h(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(26)136 1518 y(4.12)49 b(When)31 b(the)f(Final)h(Size)g(of)g(the)f
+(FITS)g(HDU)h(is)f(Unkno)m(wn)k(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(27)136 1678
+y(4.13)49 b(CFITSIO)29 b(Size)i(Limitations)42 b(.)k(.)f(.)h(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(27)0 1931
+y Fi(5)f(Basic)36 b(CFITSIO)d(In)m(terface)h(Routines)2074
+b(29)136 2092 y Fj(5.1)94 b(CFITSIO)29 b(Error)h(Status)g(Routines)89
+b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(29)136
+2252 y(5.2)94 b(FITS)30 b(File)i(Access)f(Routines)g(.)46
+b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(30)136 2412 y(5.3)94 b(HDU)32 b(Access)f(Routines)72
+b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)85 b(33)136 2573 y(5.4)94 b(Header)31 b(Keyw)m(ord)f(Read/W)-8
+b(rite)33 b(Routines)40 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(35)345 2733 y(5.4.1)106 b(Keyw)m(ord)30 b(Reading)h(Routines)65
+b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(35)345
+2894 y(5.4.2)106 b(Keyw)m(ord)30 b(W)-8 b(riting)32 b(Routines)86
+b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(38)136
+3054 y(5.5)94 b(Primary)30 b(Arra)m(y)h(or)f(IMA)m(GE)i(Extension)e
+(I/O)g(Routines)54 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(40)136 3215 y(5.6)94
+b(Image)32 b(Compression)f(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(44)136 3375
+y(5.7)94 b(ASCI)s(I)29 b(and)h(Binary)h(T)-8 b(able)31
+b(Routines)85 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(48)345 3536 y(5.7.1)106 b(Create)32 b(New)e(T)-8 b(able)84
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(48)345 3696 y(5.7.2)106 b(Column)30 b(Information)g(Routines)h(.)46
+b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(49)345 3857 y(5.7.3)106
+b(Routines)31 b(to)g(Edit)f(Ro)m(ws)h(or)f(Columns)39
+b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(52)345 4017 y(5.7.4)106
+b(Read)31 b(and)f(W)-8 b(rite)31 b(Column)f(Data)i(Routines)66
+b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)f(.)85 b(53)345 4178 y(5.7.5)106 b(Ro)m(w)31
+b(Selection)h(and)e(Calculator)h(Routines)88 b(.)46 b(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(56)345 4338 y(5.7.6)106 b(Column)30 b(Binning)g(or)g(Histogramming)i
+(Routines)74 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)f(.)85 b(57)136 4498 y(5.8)94 b(Utilit)m(y)33
+b(Routines)27 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(60)345 4659 y(5.8.1)106
+b(File)32 b(Chec)m(ksum)e(Routines)47 b(.)f(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)f(.)85 b(60)345 4819 y(5.8.2)106 b(Date)32
+b(and)e(Time)g(Utilit)m(y)j(Routines)90 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)85 b(61)345 4980 y(5.8.3)106 b(General)32 b(Utilit)m(y)g(Routines)h
+(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(62)0 5232 y Fi(6)119 b(The)35 b(CFITSIO)e(Iterator)g(F)-9
+b(unction)2154 b(73)136 5393 y Fj(6.1)94 b(The)30 b(Iterator)i(W)-8
+b(ork)31 b(F)-8 b(unction)45 b(.)g(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)f(.)85 b(74)136 5553 y(6.2)94 b(The)30 b(Iterator)i(Driv)m
+(er)f(F)-8 b(unction)78 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)f(.)85 b(76)136 5714 y(6.3)94 b(Guidelines)31
+b(for)f(Using)h(the)f(Iterator)i(F)-8 b(unction)45 b(.)h(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)85 b(77)p eop end
+%%Page: 5 5
+TeXDict begin 5 4 bop 0 299 a Fh(CONTENTS)3334 b Fj(v)136
+555 y(6.4)94 b(Complete)32 b(List)e(of)h(Iterator)g(Routines)62
+b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(78)0
+823 y Fi(7)119 b(W)-9 b(orld)36 b(Co)s(ordinate)e(System)h(Routines)
+1992 b(81)136 986 y Fj(7.1)125 b(Self-con)m(tained)32
+b(W)m(CS)e(Routines)f(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)85 b(82)0 1254 y Fi(8)119 b(Hierarc)m(hical)36
+b(Grouping)g(Routines)2163 b(85)136 1418 y Fj(8.1)94
+b(Grouping)30 b(T)-8 b(able)31 b(Routines)87 b(.)46 b(.)f(.)h(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(86)136 1581
+y(8.2)94 b(Group)30 b(Mem)m(b)s(er)g(Routines)h(.)46
+b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(88)0 1849 y Fi(9)119 b(Sp)s(ecialized)36 b(CFITSIO)d(In)m(terface)h
+(Routines)1777 b(91)136 2013 y Fj(9.1)94 b(FITS)30 b(File)i(Access)f
+(Routines)g(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+f(.)85 b(91)136 2176 y(9.2)94 b(HDU)32 b(Access)f(Routines)72
+b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)85 b(95)136 2340 y(9.3)94 b(Sp)s(ecialized)32 b(Header)e(Keyw)m(ord)
+h(Routines)74 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85
+b(97)345 2503 y(9.3.1)106 b(Header)31 b(Information)f(Routines)64
+b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(97)345 2667
+y(9.3.2)106 b(Read)31 b(and)f(W)-8 b(rite)31 b(the)g(Required)f(Keyw)m
+(ords)51 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)f(.)85 b(97)345 2830 y(9.3.3)106
+b(W)-8 b(rite)32 b(Keyw)m(ord)e(Routines)c(.)46 b(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)f(.)85 b(99)345 2994 y(9.3.4)106
+b(Insert)30 b(Keyw)m(ord)g(Routines)89 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)f(.)40 b(101)345 3157 y(9.3.5)106 b(Read)31
+b(Keyw)m(ord)f(Routines)45 b(.)h(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)40 b(102)345 3321 y(9.3.6)106 b(Mo)s(dify)30 b(Keyw)m(ord)h
+(Routines)36 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(104)345 3484 y(9.3.7)106 b(Up)s(date)31 b(Keyw)m(ord)f(Routines)c(.)
+45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(105)136
+3648 y(9.4)94 b(De\014ne)31 b(Data)h(Scaling)f(and)f(Unde\014ned)f
+(Pixel)i(P)m(arameters)43 b(.)j(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(106)136 3811 y(9.5)94
+b(Sp)s(ecialized)32 b(FITS)d(Primary)h(Arra)m(y)h(or)f(IMA)m(GE)h
+(Extension)g(I/O)f(Routines)55 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)
+40 b(107)136 3975 y(9.6)94 b(Sp)s(ecialized)32 b(FITS)d(ASCI)s(I)g(and)
+h(Binary)g(T)-8 b(able)31 b(Routines)87 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(110)345
+4138 y(9.6.1)106 b(General)32 b(Column)d(Routines)51
+b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(110)345
+4302 y(9.6.2)106 b(Lo)m(w-Lev)m(el)33 b(T)-8 b(able)31
+b(Access)g(Routines)40 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(112)345 4465 y(9.6.3)106 b(W)-8 b(rite)32 b(Column)e(Data)i(Routines)
+52 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(112)345
+4629 y(9.6.4)106 b(Read)31 b(Column)e(Data)j(Routines)72
+b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(113)0 4896
+y Fi(10)67 b(Extended)35 b(File)f(Name)h(Syn)m(tax)2278
+b(117)136 5060 y Fj(10.1)49 b(Ov)m(erview)84 b(.)46 b(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)40 b(117)136 5223 y(10.2)49 b(Filet)m(yp)s(e)62
+b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(120)345 5387
+y(10.2.1)61 b(Notes)32 b(ab)s(out)e(HTTP)g(pro)m(xy)g(serv)m(ers)k(.)46
+b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(120)345 5550 y(10.2.2)61
+b(Notes)32 b(ab)s(out)e(the)h(stream)f(\014let)m(yp)s(e)h(driv)m(er)54
+b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)f(.)40 b(121)345 5714 y(10.2.3)61 b(Notes)32
+b(ab)s(out)e(the)h(gsiftp)f(\014let)m(yp)s(e)83 b(.)45
+b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(122)p eop end
+%%Page: 6 6
+TeXDict begin 6 5 bop 0 299 a Fj(vi)3311 b Fh(CONTENTS)345
+555 y Fj(10.2.4)61 b(Notes)32 b(ab)s(out)e(the)h(ro)s(ot)f(\014let)m
+(yp)s(e)68 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h
+(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(122)345 716 y(10.2.5)61 b(Notes)32 b(ab)s(out)e(the)h(shmem)e
+(\014let)m(yp)s(e:)70 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(124)136 876 y(10.3)49 b(Base)32 b(Filename)90 b(.)45
+b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)f(.)40 b(124)136 1037 y(10.4)49 b(Output)30 b(File)h(Name)g
+(when)f(Op)s(ening)f(an)h(Existing)h(File)81 b(.)45 b(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(126)136 1197 y(10.5)49 b(T)-8 b(emplate)32 b(File)g(Name)f(when)e
+(Creating)i(a)g(New)f(File)57 b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(128)136
+1358 y(10.6)49 b(Image)32 b(Tile-Compression)e(Sp)s(eci\014cation)91
+b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(128)136 1518
+y(10.7)49 b(HDU)32 b(Lo)s(cation)f(Sp)s(eci\014cation)47
+b(.)e(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(128)136 1678 y(10.8)49 b(Image)32 b(Section)39 b(.)46
+b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)f(.)40 b(130)136 1839 y(10.9)49 b(Image)32
+b(T)-8 b(ransform)29 b(Filters)54 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(131)136 1999 y(10.10)t(Column)30
+b(and)g(Keyw)m(ord)g(Filtering)h(Sp)s(eci\014cation)91
+b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)f(.)40 b(132)136 2160 y(10.11)t(Ro)m(w)31
+b(Filtering)h(Sp)s(eci\014cation)82 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(134)345 2320 y(10.11.1)16
+b(General)32 b(Syn)m(tax)44 b(.)i(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(135)345 2481 y(10.11.2)16
+b(Bit)32 b(Masks)43 b(.)j(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(138)345 2641 y(10.11.3)16
+b(V)-8 b(ector)32 b(Columns)92 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)
+f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(138)345 2802 y(10.11.4)16
+b(Go)s(o)s(d)30 b(Time)h(In)m(terv)-5 b(al)31 b(Filtering)62
+b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)
+h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(140)345
+2962 y(10.11.5)16 b(Spatial)31 b(Region)h(Filtering)59
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(141)345 3123 y(10.11.6)16 b(Example)31 b(Ro)m(w)g(Filters)h(.)45
+b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(143)136 3283 y(10.12)35 b(Binning)30 b(or)g(Histogramming)i(Sp)s
+(eci\014cation)f(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(144)0
+3536 y Fi(11)32 b(T)-9 b(emplate)35 b(Files)2933 b(147)136
+3696 y Fj(11.1)49 b(Detailed)33 b(T)-8 b(emplate)31 b(Line)g(F)-8
+b(ormat)48 b(.)e(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(147)136 3857 y(11.2)49 b(Auto-indexing)31 b(of)g(Keyw)m(ords)73
+b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(148)136 4017 y(11.3)49 b(T)-8 b(emplate)32 b(P)m(arser)f(Directiv)m
+(es)87 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(149)136 4178 y(11.4)49 b(F)-8 b(ormal)32 b(T)-8 b(emplate)32
+b(Syn)m(tax)i(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h
+(.)g(.)f(.)40 b(149)136 4338 y(11.5)49 b(Errors)63 b(.)46
+b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)
+g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(150)136 4498 y(11.6)49
+b(Examples)72 b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g
+(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(150)0
+4751 y Fi(12)67 b(Lo)s(cal)35 b(FITS)g(Con)m(v)m(en)m(tions)2462
+b(153)136 4912 y Fj(12.1)49 b(64-Bit)33 b(Long)e(In)m(tegers)61
+b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)
+g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)f(.)40 b(153)136 5072 y(12.2)49 b(Long)31 b(String)f(Keyw)m(ord)g(V)
+-8 b(alues.)65 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f
+(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)
+40 b(153)136 5232 y(12.3)49 b(Arra)m(ys)31 b(of)f(Fixed-Length)i
+(Strings)d(in)h(Binary)h(T)-8 b(ables)78 b(.)46 b(.)f(.)h(.)g(.)g(.)f
+(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(155)136 5393 y(12.4)49 b(Keyw)m(ord)31 b(Units)f(Strings)41
+b(.)46 b(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f
+(.)40 b(155)136 5553 y(12.5)49 b(HIERAR)m(CH)31 b(Con)m(v)m(en)m(tion)h
+(for)e(Extended)g(Keyw)m(ord)g(Names)91 b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)
+g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(156)136 5714
+y(12.6)49 b(Tile-Compressed)31 b(Image)g(F)-8 b(ormat)52
+b(.)46 b(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)
+h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(156)p eop end
+%%Page: 7 7
+TeXDict begin 7 6 bop 0 299 a Fh(CONTENTS)3284 b Fj(vii)0
+555 y Fi(13)67 b(Optimizing)35 b(Programs)2589 b(159)136
+715 y Fj(13.1)49 b(Ho)m(w)32 b(CFITSIO)c(Manages)k(Data)g(I/O)78
+b(.)46 b(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)
+f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40 b(159)136
+876 y(13.2)49 b(Optimization)32 b(Strategies)77 b(.)46
+b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g
+(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)40
+b(160)0 1127 y Fi(A)57 b(Index)35 b(of)g(Routines)2789
+b(165)0 1378 y(B)62 b(P)m(arameter)35 b(De\014nitions)2598
+b(171)0 1629 y(C)60 b(CFITSIO)33 b(Error)i(Status)f(Co)s(des)2255
+b(177)p eop end
+%%Page: 8 8
+TeXDict begin 8 7 bop 0 299 a Fj(viii)3261 b Fh(CONTENTS)p
+eop end
+%%Page: 1 9
+TeXDict begin 1 8 bop 0 1225 a Fg(Chapter)65 b(1)0 1687
+y Fm(In)-6 b(tro)6 b(duction)0 2216 y Ff(1.1)180 b(A)45
+b(Brief)g(Ov)l(erview)0 2495 y Fj(CFITSIO)38 b(is)i(a)g(mac)m
+(hine-indep)s(enden)m(t)g(library)f(of)h(routines)f(for)h(reading)g
+(and)f(writing)g(data)i(\014les)e(in)h(the)0 2608 y(FITS)35
+b(\(Flexible)i(Image)f(T)-8 b(ransp)s(ort)34 b(System\))h(data)h
+(format.)56 b(It)35 b(can)h(also)g(read)f(IRAF)h(format)f(image)i
+(\014les)0 2721 y(and)f(ra)m(w)h(binary)f(data)h(arra)m(ys)g(b)m(y)g
+(con)m(v)m(erting)i(them)d(on)h(the)g(\015y)f(in)m(to)i(a)f(virtual)g
+(FITS)f(format)h(\014le.)60 b(This)0 2833 y(library)32
+b(is)h(written)g(in)f(ANSI)h(C)f(and)g(pro)m(vides)h(a)g(p)s(o)m(w)m
+(erful)f(y)m(et)i(simple)f(in)m(terface)h(for)f(accessing)h(FITS)e
+(\014les)0 2946 y(whic)m(h)k(will)h(run)e(on)h(most)h(commonly)g(used)f
+(computers)g(and)g(w)m(orkstations.)60 b(CFITSIO)35 b(supp)s(orts)f
+(all)k(the)0 3059 y(features)26 b(describ)s(ed)e(in)h(the)g(o\016cial)i
+(NOST)d(de\014nition)h(of)h(the)f(FITS)g(format)h(and)e(can)i(read)f
+(and)g(write)h(all)g(the)0 3172 y(curren)m(tly)c(de\014ned)e(t)m(yp)s
+(es)i(of)g(extensions,)i(including)d(ASCI)s(I)g(tables)h(\(T)-8
+b(ABLE\),)23 b(Binary)f(tables)h(\(BINT)-8 b(ABLE\))0
+3285 y(and)27 b(IMA)m(GE)h(extensions.)40 b(The)27 b(CFITSIO)f
+(routines)h(insulate)h(the)f(programmer)g(from)g(ha)m(ving)g(to)h(deal)
+g(with)0 3398 y(the)d(complicated)h(formatting)g(details)f(in)f(the)h
+(FITS)f(\014le,)i(ho)m(w)m(ev)m(er,)i(it)d(is)f(assumed)g(that)h(users)
+f(ha)m(v)m(e)i(a)f(general)0 3511 y(kno)m(wledge)31 b(ab)s(out)f(the)h
+(structure)f(and)g(usage)h(of)f(FITS)g(\014les.)0 3671
+y(CFITSIO)k(also)j(con)m(tains)h(a)e(set)h(of)f(F)-8
+b(ortran)36 b(callable)i(wrapp)s(er)d(routines)g(whic)m(h)h(allo)m(w)i
+(F)-8 b(ortran)36 b(programs)0 3784 y(to)31 b(call)g(the)f(CFITSIO)e
+(routines.)41 b(See)30 b(the)g(companion)g(\\FITSIO)f(User's)h(Guide")g
+(for)g(the)g(de\014nition)g(of)g(the)0 3897 y(F)-8 b(ortran)39
+b(subroutine)d(calling)k(sequences.)63 b(These)38 b(wrapp)s(ers)e
+(replace)j(the)f(older)g(F)-8 b(ortran)39 b(FITSIO)d(library)0
+4010 y(whic)m(h)30 b(is)h(no)f(longer)h(supp)s(orted.)0
+4170 y(The)20 b(CFITSIO)f(pac)m(k)-5 b(age)23 b(w)m(as)e(initially)i
+(dev)m(elop)s(ed)e(b)m(y)f(the)h(HEASAR)m(C)g(\(High)h(Energy)e
+(Astroph)m(ysics)h(Science)0 4283 y(Arc)m(hiv)m(e)35
+b(Researc)m(h)g(Cen)m(ter\))f(at)h(the)f(NASA)g(Go)s(ddard)e(Space)j
+(Fligh)m(t)g(Cen)m(ter)f(to)h(con)m(v)m(ert)g(v)-5 b(arious)34
+b(existing)0 4396 y(and)25 b(newly)h(acquired)g(astronomical)i(data)e
+(sets)h(in)m(to)g(FITS)e(format)h(and)f(to)i(further)e(analyze)i(data)g
+(already)f(in)0 4509 y(FITS)h(format.)41 b(New)28 b(features)g(con)m
+(tin)m(ue)h(to)g(b)s(e)e(added)h(to)g(CFITSIO)f(in)g(large)i(part)f
+(due)g(to)g(con)m(tributions)h(of)0 4622 y(ideas)k(or)g(actual)h(co)s
+(de)f(from)f(users)g(of)h(the)g(pac)m(k)-5 b(age.)49
+b(The)33 b(In)m(tegral)h(Science)f(Data)h(Cen)m(ter)f(in)g
+(Switzerland,)0 4734 y(and)g(the)g(XMM/ESTEC)h(pro)5
+b(ject)34 b(in)f(The)g(Netherlands)g(made)g(esp)s(ecially)i
+(signi\014can)m(t)f(con)m(tributions)g(that)0 4847 y(resulted)c(in)g
+(man)m(y)h(of)f(the)h(new)f(features)g(that)h(app)s(eared)f(in)g(v2.0)i
+(of)e(CFITSIO.)0 5322 y Ff(1.2)135 b(Sources)45 b(of)g(FITS)f(Soft)l(w)
+l(are)i(and)f(Information)0 5601 y Fj(The)22 b(latest)i(v)m(ersion)f
+(of)g(the)f(CFITSIO)f(source)i(co)s(de,)h(do)s(cumen)m(tation,)i(and)21
+b(example)j(programs)e(are)h(a)m(v)-5 b(ailable)0 5714
+y(on)30 b(the)h(W)-8 b(orld-Wide)32 b(W)-8 b(eb)31 b(or)f(via)h(anon)m
+(ymous)f(ftp)g(from:)1927 5942 y(1)p eop end
+%%Page: 2 10
+TeXDict begin 2 9 bop 0 299 a Fj(2)2452 b Fh(CHAPTER)30
+b(1.)71 b(INTR)m(ODUCTION)382 555 y Fe(http://heasarc.gsfc.nasa)o(.go)o
+(v/fi)o(tsio)382 668 y(ftp://legacy.gsfc.nasa.g)o(ov/)o(soft)o(ware)o
+(/fi)o(tsio)o(/c)0 959 y Fj(An)m(y)28 b(questions,)g(bug)f(rep)s(orts,)
+h(or)f(suggested)i(enhancemen)m(ts)f(related)g(to)h(the)e(CFITSIO)f
+(pac)m(k)-5 b(age)30 b(should)d(b)s(e)0 1072 y(sen)m(t)k(to)g(the)g
+(primary)e(author:)382 1362 y Fe(Dr.)47 b(William)f(Pence)810
+b(Telephone:)92 b(\(301\))47 b(286-4599)382 1475 y(HEASARC,)e(Code)i
+(662)811 b(E-mail:)45 b(William.D.Pence@nasa.gov)382
+1588 y(NASA/Goddard)f(Space)j(Flight)f(Center)382 1701
+y(Greenbelt,)f(MD)i(20771,)f(USA)0 1992 y Fj(This)40
+b(User's)i(Guide)f(assumes)g(that)h(readers)f(already)g(ha)m(v)m(e)i(a)
+f(general)g(understanding)d(of)j(the)f(de\014nition)0
+2104 y(and)31 b(structure)g(of)h(FITS)e(format)i(\014les.)44
+b(F)-8 b(urther)32 b(information)f(ab)s(out)h(FITS)f(formats)g(is)h(a)m
+(v)-5 b(ailable)34 b(from)d(the)0 2217 y(FITS)h(Supp)s(ort)f(O\016ce)i
+(at)g Fe(http://fits.gsfc.nasa.gov)o Fj(.)42 b(In)32
+b(particular,)i(the)f('NOST)f(FITS)g(Standard')0 2330
+y(giv)m(es)j(the)g(authoritativ)m(e)h(de\014nition)e(of)g(the)g(FITS)g
+(data)h(format,)g(and)f(the)g(`FITS)g(User's)g(Guide')g(pro)m(vides)0
+2443 y(additional)d(historical)h(bac)m(kground)e(and)g(practical)i
+(advice)f(on)f(using)g(FITS)g(\014les.)0 2603 y(The)38
+b(HEASAR)m(C)g(also)i(pro)m(vides)e(a)h(v)m(ery)g(sophisticated)h(FITS)
+d(\014le)i(analysis)g(program)f(called)i(`Fv')f(whic)m(h)0
+2716 y(can)34 b(b)s(e)f(used)g(to)h(displa)m(y)g(and)f(edit)h(the)g
+(con)m(ten)m(ts)i(of)e(an)m(y)g(FITS)f(\014le)g(as)h(w)m(ell)h(as)f
+(construct)g(new)f(FITS)g(\014les)0 2829 y(from)j(scratc)m(h.)61
+b(The)36 b(displa)m(y)h(functions)f(in)g(Fv)h(allo)m(w)h(users)e(to)i
+(in)m(teractiv)m(ely)h(adjust)d(the)h(brigh)m(tness)g(and)0
+2942 y(con)m(trast)h(of)f(images,)i(pan,)f(zo)s(om,)h(and)d(blink)g
+(images,)k(and)c(measure)h(the)f(p)s(ositions)h(and)f(brigh)m(tnesses)h
+(of)0 3055 y(ob)5 b(jects)33 b(within)f(images.)47 b(FITS)31
+b(tables)i(can)g(b)s(e)e(displa)m(y)m(ed)i(lik)m(e)h(a)e(spread)g
+(sheet,)h(and)f(then)f(mo)s(di\014ed)g(using)0 3168 y(p)s(o)m(w)m
+(erful)26 b(calculator)j(and)c(sorting)i(functions.)39
+b(Fv)27 b(is)f(freely)h(a)m(v)-5 b(ailable)29 b(for)d(most)h(Unix)f
+(platforms,)i(Mac)f(PCs,)0 3281 y(and)34 b(Windo)m(ws)g(PCs.)52
+b(CFITSIO)33 b(users)h(ma)m(y)h(also)g(b)s(e)f(in)m(terested)i(in)e
+(the)g(FTOOLS)f(pac)m(k)-5 b(age)37 b(of)d(programs)0
+3394 y(that)27 b(can)f(b)s(e)g(used)f(to)i(manipulate)g(and)e(analyze)j
+(FITS)d(format)i(\014les.)39 b(Fv)27 b(and)e(FTOOLS)g(are)i(a)m(v)-5
+b(ailable)28 b(from)0 3507 y(their)i(resp)s(ectiv)m(e)i(W)-8
+b(eb)31 b(sites)g(at:)382 3797 y Fe(http://fv.gsfc.nasa.gov)382
+3910 y(http://heasarc.gsfc.nasa)o(.go)o(v/ft)o(ools)0
+4280 y Ff(1.3)135 b(Ac)l(kno)l(wledgmen)l(ts)0 4538 y
+Fj(The)27 b(dev)m(elopmen)m(t)h(of)g(the)f(man)m(y)g(p)s(o)m(w)m(erful)
+g(features)h(in)f(CFITSIO)e(w)m(as)j(made)f(p)s(ossible)g(through)f
+(collab)s(ora-)0 4650 y(tions)33 b(with)e(man)m(y)i(p)s(eople)f(or)g
+(organizations)i(from)e(around)f(the)h(w)m(orld.)46 b(The)32
+b(follo)m(wing)h(in)f(particular)h(ha)m(v)m(e)0 4763
+y(made)d(esp)s(ecially)i(signi\014can)m(t)f(con)m(tributions:)0
+4924 y(Programmers)25 b(from)h(the)f(In)m(tegral)i(Science)g(Data)g
+(Cen)m(ter,)g(Switzerland)f(\(namely)-8 b(,)28 b(Jurek)c(Bork)m(o)m
+(wski,)29 b(Bruce)0 5036 y(O'Neel,)34 b(and)e(Don)h(Jennings\),)f
+(designed)g(the)h(concept)g(for)f(the)h(plug-in)f(I/O)g(driv)m(ers)g
+(that)h(w)m(as)g(in)m(tro)s(duced)0 5149 y(with)i(CFITSIO)e(2.0.)56
+b(The)34 b(use)h(of)g(`driv)m(ers')g(greatly)h(simpli\014ed)f(the)g(lo)
+m(w-lev)m(el)j(I/O,)d(whic)m(h)f(in)h(turn)f(made)0 5262
+y(other)40 b(new)f(features)i(in)e(CFITSIO)f(\(e.g.,)45
+b(supp)s(ort)38 b(for)h(compressed)h(FITS)f(\014les)h(and)f(supp)s(ort)
+f(for)i(IRAF)0 5375 y(format)32 b(image)g(\014les\))g(m)m(uc)m(h)f
+(easier)i(to)f(implemen)m(t.)44 b(Jurek)31 b(Bork)m(o)m(wski)h(wrote)g
+(the)g(Shared)e(Memory)i(driv)m(er,)0 5488 y(and)23 b(Bruce)i(O'Neel)g
+(wrote)f(the)g(driv)m(ers)g(for)f(accessing)j(FITS)d(\014les)h(o)m(v)m
+(er)h(the)f(net)m(w)m(ork)h(using)e(the)i(FTP)-8 b(,)24
+b(HTTP)-8 b(,)0 5601 y(and)26 b(R)m(OOT)g(proto)s(cols.)41
+b(Also,)28 b(in)e(2009,)k(Bruce)d(O'Neel)h(w)m(as)f(the)g(k)m(ey)g(dev)
+m(elop)s(er)g(of)g(the)g(thread-safe)g(v)m(ersion)0 5714
+y(of)k(CFITSIO.)p eop end
+%%Page: 3 11
+TeXDict begin 3 10 bop 0 299 a Fh(1.3.)72 b(A)m(CKNO)m(WLEDGMENTS)2623
+b Fj(3)0 555 y(The)45 b(ISDC)g(also)h(pro)m(vided)f(the)h(template)h
+(parsing)e(routines)g(\(written)h(b)m(y)f(Jurek)g(Bork)m(o)m(wski\))i
+(and)e(the)0 668 y(hierarc)m(hical)39 b(grouping)d(routines)h
+(\(written)h(b)m(y)f(Don)h(Jennings\).)60 b(The)37 b(ISDC)f(D)m(AL)i
+(\(Data)h(Access)f(La)m(y)m(er\))0 781 y(routines)30
+b(are)h(la)m(y)m(ered)h(on)e(top)h(of)f(CFITSIO)f(and)h(mak)m(e)h
+(extensiv)m(e)h(use)e(of)h(these)g(features.)0 941 y(Giuliano)g(T)-8
+b(a\013oni)31 b(and)f(Andrea)g(Barisani,)i(at)f(INAF,)g(Univ)m(ersit)m
+(y)h(of)e(T)-8 b(rieste,)32 b(Italy)-8 b(,)32 b(implemen)m(ted)e(the)h
+(I/O)0 1054 y(driv)m(er)f(routines)g(for)h(accessing)g(FITS)f(\014les)g
+(on)h(the)f(computational)i(grids)e(using)g(the)h(gridftp)e(proto)s
+(col.)0 1214 y(Uw)m(e)c(Lammers)e(\(XMM/ESA/ESTEC,)h(The)g
+(Netherlands\))g(designed)g(the)g(high-p)s(erformance)f(lexical)j
+(pars-)0 1327 y(ing)42 b(algorithm)h(that)f(is)g(used)f(to)i(do)e
+(on-the-\015y)h(\014ltering)g(of)g(FITS)f(tables.)76
+b(This)41 b(algorithm)i(essen)m(tially)0 1440 y(pre-compiles)36
+b(the)g(user-supplied)e(selection)k(expression)d(in)m(to)i(a)f(form)g
+(that)g(can)g(b)s(e)f(rapidly)g(ev)-5 b(aluated)37 b(for)0
+1553 y(eac)m(h)31 b(ro)m(w.)40 b(P)m(eter)31 b(Wilson)f(\(RSTX,)f
+(NASA/GSF)m(C\))i(then)e(wrote)h(the)g(parsing)f(routines)g(used)g(b)m
+(y)g(CFITSIO)0 1666 y(based)i(on)f(Lammers')h(design,)g(com)m(bined)g
+(with)g(other)g(tec)m(hniques)g(suc)m(h)g(as)g(the)g(CFITSIO)f
+(iterator)i(routine)0 1779 y(to)g(further)e(enhance)h(the)h(data)g(pro)
+s(cessing)f(throughput.)42 b(This)31 b(e\013ort)h(also)g(b)s
+(ene\014ted)e(from)h(a)h(m)m(uc)m(h)f(earlier)0 1892
+y(lexical)25 b(parsing)f(routine)f(that)h(w)m(as)g(dev)m(elop)s(ed)g(b)
+m(y)g(Ken)m(t)g(Blac)m(kburn)f(\(NASA/GSF)m(C\).)i(More)g(recen)m(tly)
+-8 b(,)27 b(Craig)0 2005 y(Markw)m(ardt)i(\(NASA/GSF)m(C\))g(implemen)m
+(ted)g(additional)g(functions)f(\(median,)h(a)m(v)m(erage,)j(stddev\))c
+(and)g(other)0 2118 y(enhancemen)m(ts)j(to)g(the)g(lexical)h(parser.)0
+2278 y(The)40 b(CFITSIO)g(iterator)i(function)e(is)h(lo)s(osely)h
+(based)f(on)f(similar)i(ideas)f(dev)m(elop)s(ed)g(for)g(the)g(XMM)g
+(Data)0 2391 y(Access)31 b(La)m(y)m(er.)0 2551 y(P)m(eter)25
+b(Wilson)g(\(RSTX,)f(NASA/GSF)m(C\))h(wrote)g(the)f(complete)i(set)e
+(of)h(F)-8 b(ortran-callable)27 b(wrapp)s(ers)22 b(for)i(all)h(the)0
+2664 y(CFITSIO)k(routines,)h(whic)m(h)g(in)g(turn)g(rely)g(on)h(the)f
+(CF)m(OR)-8 b(TRAN)31 b(macro)g(dev)m(elop)s(ed)g(b)m(y)f(Burkhard)f
+(Buro)m(w.)0 2824 y(The)h(syn)m(tax)i(used)e(b)m(y)h(CFITSIO)f(for)g
+(\014ltering)i(or)f(binning)e(input)h(FITS)h(\014les)g(is)g(based)f(on)
+h(ideas)h(dev)m(elop)s(ed)0 2937 y(for)41 b(the)g(AXAF)h(Science)g(Cen)
+m(ter)g(Data)h(Mo)s(del)e(b)m(y)g(Jonathan)g(McDo)m(w)m(ell,)47
+b(An)m(tonella)c(F)-8 b(ruscione,)45 b(Aneta)0 3050 y(Siemigino)m(wsk)
+-5 b(a)27 b(and)e(Bill)i(Jo)m(y)m(e.)41 b(See)26 b(h)m
+(ttp://heasarc.gsfc.nasa.go)m(v/do)s(cs/journal/axa)q(f7.h)m(t)q(ml)32
+b(for)25 b(further)0 3163 y(description)30 b(of)h(the)g(AXAF)g(Data)h
+(Mo)s(del.)0 3323 y(The)j(\014le)g(decompression)g(co)s(de)g(w)m(ere)h
+(tak)m(en)g(directly)g(from)e(the)i(gzip)f(\(GNU)h(zip\))g(program)f
+(dev)m(elop)s(ed)g(b)m(y)0 3436 y(Jean-loup)30 b(Gailly)i(and)e
+(others.)0 3596 y(The)e(new)h(compressed)g(image)h(data)g(format)f
+(\(where)g(the)g(image)h(is)f(tiled)h(and)e(the)h(compressed)g(b)m(yte)
+h(stream)0 3709 y(from)k(eac)m(h)i(tile)h(is)d(stored)h(in)g(a)g
+(binary)f(table\))j(w)m(as)e(implemen)m(ted)g(in)g(collab)s(oration)i
+(with)d(Ric)m(hard)h(White)0 3822 y(\(STScI\),)30 b(P)m(erry)g
+(Green\014eld)h(\(STScI\))f(and)f(Doug)i(T)-8 b(o)s(dy)30
+b(\(NO)m(A)m(O\).)0 3982 y(Doug)h(Mink)g(\(SA)m(O\))f(pro)m(vided)g
+(the)h(routines)f(for)g(con)m(v)m(erting)j(IRAF)d(format)h(images)g(in)
+m(to)h(FITS)d(format.)0 4142 y(Martin)k(Reinec)m(k)m(e)i(\(Max)f(Planc)
+m(k)f(Institute,)h(Garc)m(hing\)\))g(pro)m(vided)f(the)g(mo)s
+(di\014cations)f(to)i(cfortran.h)e(that)0 4255 y(are)d(necessary)h(to)f
+(supp)s(ort)e(64-bit)k(in)m(teger)f(v)-5 b(alues)29 b(when)f(calling)i
+(C)f(routines)g(from)f(fortran)h(programs.)39 b(The)0
+4368 y(cfortran.h)30 b(macros)h(w)m(ere)g(originally)h(dev)m(elop)s(ed)
+e(b)m(y)h(Burkhard)e(Buro)m(w)h(\(CERN\).)0 4528 y(Julian)f(T)-8
+b(a)m(ylor)31 b(\(ESO,)e(Garc)m(hing\))i(pro)m(vided)e(the)g(fast)h(b)m
+(yte-sw)m(apping)g(algorithms)h(that)f(use)f(the)h(SSE2)f(and)0
+4641 y(SSSE3)g(mac)m(hine)i(instructions)f(a)m(v)-5 b(ailable)33
+b(on)d(x86)p 1784 4641 28 4 v 34 w(64)h(CPUs.)0 4801
+y(In)c(addition,)i(man)m(y)f(other)g(p)s(eople)g(ha)m(v)m(e)h(made)f(v)
+-5 b(aluable)29 b(con)m(tributions)f(to)h(the)f(dev)m(elopmen)m(t)h(of)
+f(CFITSIO.)0 4914 y(These)i(include)g(\(with)h(ap)s(ologies)h(to)f
+(others)f(that)h(ma)m(y)g(ha)m(v)m(e)h(inadv)m(erten)m(tly)g(b)s(een)d
+(omitted\):)0 5074 y(Stev)m(e)g(Allen,)g(Carl)f(Ak)m(erlof,)h(Keith)f
+(Arnaud,)g(Morten)g(Krabb)s(e)e(Barfo)s(ed,)j(Ken)m(t)f(Blac)m(kburn,)h
+(G)f(Bo)s(dammer,)0 5187 y(Romk)m(e)h(Bon)m(tek)m(o)s(e,)i(Lucio)d
+(Chiapp)s(etti,)g(Keith)g(Costorf,)g(Robin)g(Corb)s(et,)g(John)e(Da)m
+(vis,)k(Ric)m(hard)e(Fink,)h(Ning)0 5300 y(Gan,)i(Emily)f(Greene,)h
+(Gretc)m(hen)g(Green,)f(Jo)s(e)g(Harrington,)h(Cheng)f(Ho,)h(Phil)f(Ho)
+s(dge,)g(Jim)g(Ingham,)g(Y)-8 b(oshi-)0 5413 y(tak)j(a)44
+b(Ishisaki,)i(Diab)e(Jerius,)h(Mark)f(Levine,)i(T)-8
+b(o)s(dd)42 b(Karak)-5 b(askian,)47 b(Edw)m(ard)42 b(King,)k(Scott)e
+(Ko)s(c)m(h,)i(Claire)0 5526 y(Larkin,)32 b(Rob)g(Managan,)i(Eric)e
+(Mandel,)h(Ric)m(hard)f(Mathar,)h(John)e(Matto)m(x,)k(Carsten)d(Mey)m
+(er,)i(Emi)d(Miy)m(ata,)0 5639 y(Stefan)39 b(Mo)s(c)m(hnac)m(ki,)k(Mik)
+m(e)e(Noble,)h(Oliv)m(er)e(Ob)s(erdorf,)f(Cliv)m(e)i(P)m(age,)i(Arvind)
+38 b(P)m(armar,)j(Je\013)f(P)m(edelt)m(y)-8 b(,)43 b(Tim)p
+eop end
+%%Page: 4 12
+TeXDict begin 4 11 bop 0 299 a Fj(4)2452 b Fh(CHAPTER)30
+b(1.)71 b(INTR)m(ODUCTION)0 555 y Fj(P)m(earson,)40 b(Philipp)s(e)c
+(Prugniel,)j(Maren)e(Purv)m(es,)i(Scott)g(Randall,)g(Chris)d(Rogers,)k
+(Arnold)d(Rots,)i(Rob)e(Sea-)0 668 y(man,)23 b(Barry)e(Sc)m(hlesinger,)
+i(Robin)e(Stebbins,)h(Andrew)d(Szymk)m(o)m(wiak,)25 b(Allyn)c(T)-8
+b(ennan)m(t,)23 b(P)m(eter)f(T)-8 b(eub)s(en,)22 b(James)0
+781 y(Theiler,)k(Doug)g(T)-8 b(o)s(dy)g(,)25 b(Shiro)f(Ueno,)j(Stev)m
+(e)f(W)-8 b(alton,)28 b(Arc)m(hie)d(W)-8 b(arno)s(c)m(k,)27
+b(Alan)e(W)-8 b(atson,)28 b(Dan)d(Whipple,)h(Wim)0 894
+y(Wimmers,)31 b(P)m(eter)g(Y)-8 b(oung,)31 b(Jianjun)e(Xu,)h(and)g
+(Nelson)h(Zarate.)0 1228 y Ff(1.4)135 b(Legal)46 b(Stu\013)0
+1478 y Fj(Cop)m(yrigh)m(t)37 b(\(Unpublished{all)g(righ)m(ts)g(reserv)m
+(ed)g(under)e(the)i(cop)m(yrigh)m(t)h(la)m(ws)f(of)g(the)g(United)g
+(States\),)j(U.S.)0 1591 y(Go)m(v)m(ernmen)m(t)30 b(as)g(represen)m
+(ted)e(b)m(y)h(the)g(Administrator)g(of)g(the)g(National)h(Aeronautics)
+g(and)e(Space)h(Adminis-)0 1704 y(tration.)42 b(No)31
+b(cop)m(yrigh)m(t)g(is)g(claimed)g(in)f(the)h(United)f(States)h(under)e
+(Title)j(17,)f(U.S.)f(Co)s(de.)0 1864 y(P)m(ermission)g(to)g(freely)f
+(use,)h(cop)m(y)-8 b(,)31 b(mo)s(dify)-8 b(,)29 b(and)g(distribute)g
+(this)g(soft)m(w)m(are)i(and)e(its)h(do)s(cumen)m(tation)g(without)0
+1977 y(fee)f(is)f(hereb)m(y)g(gran)m(ted,)i(pro)m(vided)e(that)h(this)f
+(cop)m(yrigh)m(t)i(notice)f(and)f(disclaimer)h(of)f(w)m(arran)m(t)m(y)i
+(app)s(ears)d(in)h(all)0 2090 y(copies.)0 2250 y(DISCLAIMER:)0
+2410 y(THE)33 b(SOFTW)-10 b(ARE)32 b(IS)g(PR)m(O)m(VIDED)i('AS)f(IS')g
+(WITHOUT)f(ANY)i(W)-10 b(ARRANTY)33 b(OF)g(ANY)h(KIND,)f(EI-)0
+2523 y(THER)42 b(EXPRESSED,)f(IMPLIED,)i(OR)e(ST)-8 b(A)g(TUTOR)g(Y,)43
+b(INCLUDING,)f(BUT)h(NOT)e(LIMITED)h(TO,)0 2636 y(ANY)33
+b(W)-10 b(ARRANTY)33 b(THA)-8 b(T)32 b(THE)g(SOFTW)-10
+b(ARE)32 b(WILL)g(CONF)m(ORM)g(TO)g(SPECIFICA)-8 b(TIONS,)30
+b(ANY)0 2749 y(IMPLIED)38 b(W)-10 b(ARRANTIES)37 b(OF)h(MER)m(CHANT)-8
+b(ABILITY,)38 b(FITNESS)f(F)m(OR)h(A)g(P)-8 b(AR)g(TICULAR)38
+b(PUR-)0 2862 y(POSE,)24 b(AND)i(FREEDOM)f(FR)m(OM)h(INFRINGEMENT,)g
+(AND)f(ANY)h(W)-10 b(ARRANTY)25 b(THA)-8 b(T)25 b(THE)g(DOC-)0
+2974 y(UMENT)-8 b(A)g(TION)31 b(WILL)f(CONF)m(ORM)h(TO)e(THE)h(SOFTW)
+-10 b(ARE,)30 b(OR)g(ANY)h(W)-10 b(ARRANTY)31 b(THA)-8
+b(T)30 b(THE)0 3087 y(SOFTW)-10 b(ARE)31 b(WILL)h(BE)g(ERR)m(OR)g
+(FREE.)g(IN)g(NO)g(EVENT)f(SHALL)g(NASA)h(BE)g(LIABLE)g(F)m(OR)g(ANY)0
+3200 y(D)m(AMA)m(GES,)26 b(INCLUDING,)e(BUT)f(NOT)g(LIMITED)h(TO,)f
+(DIRECT,)g(INDIRECT,)g(SPECIAL)f(OR)h(CON-)0 3313 y(SEQUENTIAL)28
+b(D)m(AMA)m(GES,)k(ARISING)d(OUT)g(OF,)h(RESUL)-8 b(TING)29
+b(FR)m(OM,)h(OR)f(IN)h(ANY)g(W)-10 b(A)i(Y)30 b(CON-)0
+3426 y(NECTED)25 b(WITH)g(THIS)f(SOFTW)-10 b(ARE,)25
+b(WHETHER)g(OR)g(NOT)g(BASED)g(UPON)g(W)-10 b(ARRANTY,)26
+b(CON-)0 3539 y(TRA)m(CT,)d(TOR)-8 b(T)23 b(,)g(OR)g(OTHER)-10
+b(WISE,)22 b(WHETHER)i(OR)f(NOT)f(INJUR)-8 b(Y)24 b(W)-10
+b(AS)23 b(SUST)-8 b(AINED)23 b(BY)h(PER-)0 3652 y(SONS)h(OR)i(PR)m
+(OPER)-8 b(TY)26 b(OR)g(OTHER)-10 b(WISE,)26 b(AND)h(WHETHER)g(OR)f
+(NOT)g(LOSS)f(W)-10 b(AS)26 b(SUST)-8 b(AINED)0 3765
+y(FR)m(OM,)37 b(OR)e(AR)m(OSE)h(OUT)f(OF)h(THE)g(RESUL)-8
+b(TS)35 b(OF,)h(OR)f(USE)h(OF,)g(THE)g(SOFTW)-10 b(ARE)35
+b(OR)g(SER-)0 3878 y(VICES)29 b(PR)m(O)m(VIDED)j(HEREUNDER.")p
+eop end
+%%Page: 5 13
+TeXDict begin 5 12 bop 0 1225 a Fg(Chapter)65 b(2)0 1687
+y Fm(Creating)77 b(the)h(CFITSIO)e(Library)0 2216 y Ff(2.1)135
+b(Building)45 b(the)h(Library)0 2466 y Fj(The)h(CFITSIO)f(co)s(de)h(is)
+h(con)m(tained)g(in)f(ab)s(out)g(40)h(C)f(source)h(\014les)f(\(*.c\))i
+(and)e(header)g(\014les)g(\(*.h\).)93 b(On)0 2579 y(V)-10
+b(AX/VMS)31 b(systems)g(2)f(assem)m(bly-co)s(de)i(\014les)e
+(\(vmsieeed.mar)h(and)f(vmsieeer.mar\))i(are)e(also)i(needed.)0
+2739 y(CFITSIO)d(has)h(curren)m(tly)g(b)s(een)g(tested)h(on)f(the)h
+(follo)m(wing)h(platforms)e(\(not)h(up-to-date\):)95
+2959 y Fe(OPERATING)46 b(SYSTEM)523 b(COMPILER)143 3072
+y(Sun)47 b(OS)1002 b(gcc)47 b(and)g(cc)g(\(3.0.1\))143
+3185 y(Sun)g(Solaris)762 b(gcc)47 b(and)g(cc)143 3298
+y(Silicon)f(Graphics)g(IRIX)285 b(gcc)47 b(and)g(cc)143
+3411 y(Silicon)f(Graphics)g(IRIX64)189 b(MIPS)143 3523
+y(Dec)47 b(Alpha)f(OSF/1)572 b(gcc)47 b(and)g(cc)143
+3636 y(DECstation)93 b(Ultrix)428 b(gcc)143 3749 y(Dec)47
+b(Alpha)f(OpenVMS)476 b(cc)143 3862 y(DEC)47 b(VAX/VMS)762
+b(gcc)47 b(and)g(cc)143 3975 y(HP-UX)1049 b(gcc)143 4088
+y(IBM)47 b(AIX)954 b(gcc)143 4201 y(Linux)1049 b(gcc)143
+4314 y(MkLinux)953 b(DR3)143 4427 y(Windows)46 b(95/98/NT)523
+b(Borland)46 b(C++)h(V4.5)143 4540 y(Windows)f(95/98/NT/ME/XP)235
+b(Microsoft/Compaq)43 b(Visual)j(C++)h(v5.0,)g(v6.0)143
+4653 y(Windows)f(95/98/NT)523 b(Cygwin)46 b(gcc)143 4765
+y(MacOS)h(7.1)f(or)i(greater)332 b(Metrowerks)45 b(10.+)143
+4878 y(MacOS-X)h(10.1)h(or)g(greater)189 b(cc)47 b(\(gcc\))0
+5098 y Fj(CFITSIO)26 b(will)j(probably)e(run)f(on)i(most)g(other)h
+(Unix)e(platforms.)40 b(Cra)m(y)28 b(sup)s(ercomputers)e(are)j(curren)m
+(tly)f(not)0 5211 y(supp)s(orted.)0 5495 y Fd(2.1.1)112
+b(Unix)39 b(Systems)0 5714 y Fj(The)30 b(CFITSIO)f(library)h(is)g
+(built)g(on)h(Unix)f(systems)g(b)m(y)g(t)m(yping:)1927
+5942 y(5)p eop end
+%%Page: 6 14
+TeXDict begin 6 13 bop 0 299 a Fj(6)1580 b Fh(CHAPTER)30
+b(2.)112 b(CREA)-8 b(TING)30 b(THE)g(CFITSIO)f(LIBRAR)-8
+b(Y)48 555 y Fe(>)95 b(./configure)45 b([--prefix=/target/insta)o(llat)
+o(ion)o(/pat)o(h])d([--enable-reentrant])764 668 y([--enable-sse2])h
+([--enable-ssse3])48 781 y(>)95 b(make)476 b(\(or)95
+b('make)46 b(shared'\))48 894 y(>)95 b(make)47 b(install)93
+b(\(this)46 b(step)h(is)g(optional\))0 1128 y Fj(at)24
+b(the)g(op)s(erating)g(system)g(prompt.)38 b(The)23 b(con\014gure)g
+(command)g(customizes)i(the)f(Mak)m(e\014le)h(for)f(the)g(particular)0
+1241 y(system,)g(then)d(the)g(`mak)m(e')i(command)e(compiles)h(the)f
+(source)h(\014les)f(and)g(builds)f(the)h(library)-8 b(.)38
+b(T)m(yp)s(e)21 b(`./con\014gure')0 1354 y(and)34 b(not)h(simply)f
+(`con\014gure')h(to)h(ensure)e(that)h(the)g(con\014gure)g(script)f(in)h
+(the)g(curren)m(t)f(directory)h(is)g(run)f(and)0 1467
+y(not)29 b(some)g(other)g(system-wide)g(con\014gure)f(script.)40
+b(The)29 b(optional)h('pre\014x')e(argumen)m(t)h(to)g(con\014gure)g
+(giv)m(es)h(the)0 1580 y(path)e(to)i(the)f(directory)g(where)f(the)h
+(CFITSIO)f(library)g(and)g(include)h(\014les)f(should)g(b)s(e)g
+(installed)i(via)f(the)g(later)0 1692 y('mak)m(e)j(install')f(command.)
+41 b(F)-8 b(or)31 b(example,)143 1926 y Fe(>)48 b(./configure)c
+(--prefix=/usr1/local)0 2160 y Fj(will)25 b(cause)h(the)f('mak)m(e)h
+(install')g(command)f(to)h(cop)m(y)g(the)f(CFITSIO)e(lib)s(c\014tsio)i
+(\014le)h(to)f(/usr1/lo)s(cal/lib)i(and)e(the)0 2273
+y(necessary)33 b(include)e(\014les)i(to)f(/usr1/lo)s(cal/include)j
+(\(assuming)d(of)g(course)g(that)h(the)f(pro)s(cess)g(has)g(p)s
+(ermission)0 2386 y(to)f(write)g(to)g(these)g(directories\).)0
+2546 y(The)42 b(optional)i({enable-reen)m(tran)m(t)g(\015ag)f(will)g
+(attempt)h(to)f(con\014gure)f(CFITSIO)f(so)i(that)g(it)g(can)g(b)s(e)f
+(used)0 2659 y(in)35 b(m)m(ulti-threaded)g(programs.)54
+b(See)35 b(the)g("Using)g(CFITSIO)e(in)i(Multi-threaded)g(En)m
+(vironmen)m(ts")h(section,)0 2772 y(b)s(elo)m(w,)31 b(for)f(more)0
+2932 y(The)24 b(optional)i({enable-sse2)g(and)e({enable-ssse3)i
+(\015ags)e(will)h(cause)g(con\014gure)f(to)h(attempt)h(to)f(build)e
+(CFITSIO)0 3045 y(using)29 b(faster)i(b)m(yte-sw)m(apping)f
+(algorithms.)42 b(See)30 b(the)g("Optimizing)h(Programs")f(c)m(hapter)h
+(of)f(this)g(man)m(ual)g(for)0 3158 y(more)h(information)f(ab)s(out)g
+(these)h(options.)0 3318 y(The)d('mak)m(e)h(shared')f(option)h(builds)e
+(a)i(shared)e(or)i(dynamic)f(v)m(ersion)h(of)f(the)h(CFITSIO)d(library)
+-8 b(.)40 b(When)28 b(using)0 3431 y(the)f(shared)f(library)h(the)g
+(executable)h(co)s(de)f(is)g(not)g(copied)g(in)m(to)h(y)m(our)f
+(program)g(at)g(link)g(time)g(and)g(instead)g(the)0 3544
+y(program)g(lo)s(cates)i(the)f(necessary)g(library)f(co)s(de)h(at)g
+(run)e(time,)j(normally)f(through)e(LD)p 3065 3544 28
+4 v 33 w(LIBRAR)-8 b(Y)p 3514 3544 V 34 w(P)g(A)g(TH)28
+b(or)0 3657 y(some)j(other)f(metho)s(d.)41 b(The)29 b(adv)-5
+b(an)m(tages)33 b(of)d(using)g(a)h(shared)e(library)h(are:)143
+3891 y Fe(1.)95 b(Less)47 b(disk)f(space)h(if)g(you)g(build)f(more)h
+(than)f(1)i(program)143 4004 y(2.)95 b(Less)47 b(memory)f(if)h(more)g
+(than)f(one)h(copy)g(of)g(a)g(program)f(using)h(the)g(shared)334
+4117 y(library)f(is)h(running)f(at)h(the)g(same)g(time)f(since)h(the)g
+(system)f(is)h(smart)334 4230 y(enough)f(to)h(share)g(copies)f(of)h
+(the)g(shared)f(library)g(at)h(run)g(time.)143 4343 y(3.)95
+b(Possibly)46 b(easier)g(maintenance)e(since)j(a)g(new)g(version)f(of)h
+(the)g(shared)334 4456 y(library)f(can)h(be)g(installed)e(without)h
+(relinking)f(all)i(the)g(software)334 4568 y(that)g(uses)f(it)i(\(as)e
+(long)h(as)g(the)g(subroutine)e(names)i(and)f(calling)334
+4681 y(sequences)f(remain)h(unchanged\).)143 4794 y(4.)95
+b(No)47 b(run-time)f(penalty.)0 5028 y Fj(The)30 b(disadv)-5
+b(an)m(tages)32 b(are:)143 5262 y Fe(1.)47 b(More)g(hassle)f(at)h
+(runtime.)94 b(You)46 b(have)h(to)g(either)f(build)h(the)g(programs)286
+5375 y(specially)f(or)h(have)f(LD_LIBRARY_PATH)e(set)j(right.)143
+5488 y(2.)g(There)g(may)g(be)g(a)g(slight)f(start)h(up)g(penalty,)e
+(depending)h(on)h(where)f(you)h(are)286 5601 y(reading)f(the)h(shared)f
+(library)g(and)h(the)g(program)f(from)g(and)h(if)g(your)g(CPU)g(is)286
+5714 y(either)f(really)h(slow)f(or)h(really)f(heavily)g(loaded.)p
+eop end
+%%Page: 7 15
+TeXDict begin 7 14 bop 0 299 a Fh(2.1.)72 b(BUILDING)31
+b(THE)f(LIBRAR)-8 b(Y)2507 b Fj(7)0 555 y(On)32 b(Mac)i(OS)e(X)i
+(platforms)f(the)g('mak)m(e)h(shared')f(command)f(w)m(orks)h(lik)m(e)i
+(on)e(other)g(UNIX)g(platforms,)h(but)f(a)0 668 y(.dylib)f(\014le)g
+(will)g(b)s(e)f(created)i(instead)g(of)f(.so.)46 b(If)31
+b(installed)i(in)f(a)g(nonstandard)f(lo)s(cation,)j(add)d(its)i(lo)s
+(cation)g(to)0 781 y(the)e(D)m(YLD)p 422 781 28 4 v 34
+w(LIBRAR)-8 b(Y)p 872 781 V 33 w(P)g(A)g(TH)31 b(en)m(vironmen)m(t)g(v)
+-5 b(ariable)31 b(so)g(that)g(the)f(library)g(can)h(b)s(e)f(found)f(at)
+i(run)e(time.)0 941 y(On)h(HP/UX)i(systems,)g(the)f(en)m(vironmen)m(t)h
+(v)-5 b(ariable)32 b(CFLA)m(GS)f(should)f(b)s(e)h(set)g(to)h(-Ae)g(b)s
+(efore)f(running)e(con-)0 1054 y(\014gure)h(to)h(enable)g("extended)g
+(ANSI")f(features.)0 1214 y(By)h(default,)h(a)f(set)h(of)f(F)-8
+b(ortran-callable)34 b(wrapp)s(er)29 b(routines)i(are)g(also)h(built)f
+(and)f(included)h(in)f(the)h(CFITSIO)0 1327 y(library)-8
+b(.)70 b(If)40 b(these)g(wrapp)s(er)f(routines)h(are)g(not)h(needed)e
+(\(i.e.,)45 b(the)40 b(CFITSIO)f(library)g(will)i(not)f(b)s(e)g(link)m
+(ed)0 1440 y(to)d(an)m(y)f(F)-8 b(ortran)37 b(applications)g(whic)m(h)f
+(call)h(FITSIO)e(subroutines\))g(then)h(they)g(ma)m(y)h(b)s(e)e
+(omitted)i(from)f(the)0 1553 y(build)28 b(b)m(y)i(t)m(yping)g('mak)m(e)
+g(all-no\014tsio')i(instead)d(of)h(simply)f(t)m(yping)h('mak)m(e'.)42
+b(This)28 b(will)i(reduce)f(the)h(size)g(of)g(the)0 1666
+y(CFITSIO)f(library)h(sligh)m(tly)-8 b(.)0 1826 y(It)33
+b(ma)m(y)g(not)g(b)s(e)f(p)s(ossible)g(to)h(statically)i(link)e
+(programs)f(that)h(use)g(CFITSIO)e(on)h(some)h(platforms)g(\(namely)-8
+b(,)0 1939 y(on)28 b(Solaris)h(2.6\))h(due)e(to)h(the)g(net)m(w)m(ork)g
+(driv)m(ers)f(\(whic)m(h)h(pro)m(vide)g(FTP)f(and)g(HTTP)g(access)h(to)
+h(FITS)d(\014les\).)41 b(It)0 2052 y(is)33 b(p)s(ossible)f(to)i(mak)m
+(e)f(b)s(oth)g(a)g(dynamic)f(and)g(a)i(static)g(v)m(ersion)f(of)g(the)g
+(CFITSIO)e(library)-8 b(,)34 b(but)e(net)m(w)m(ork)i(\014le)0
+2165 y(access)e(will)e(not)h(b)s(e)f(p)s(ossible)g(using)g(the)g
+(static)i(v)m(ersion.)0 2627 y Fd(2.1.2)112 b(VMS)0 2880
+y Fj(On)28 b(V)-10 b(AX/VMS)31 b(and)d(ALPHA/VMS)i(systems)f(the)h(mak)
+m(e)p 2100 2880 V 34 w(g\015oat.com)h(command)e(\014le)g(ma)m(y)h(b)s
+(e)f(executed)h(to)0 2993 y(build)35 b(the)i(c\014tsio.olb)g(ob)5
+b(ject)37 b(library)f(using)g(the)g(default)h(G-\015oating)g(p)s(oin)m
+(t)g(option)f(for)g(double)g(v)-5 b(ariables.)0 3106
+y(The)37 b(mak)m(e)p 405 3106 V 33 w(d\015oat.com)i(and)d(mak)m(e)p
+1279 3106 V 34 w(ieee.com)j(\014les)f(ma)m(y)f(b)s(e)g(used)f(instead)i
+(to)g(build)e(the)h(library)g(with)g(the)0 3219 y(other)26
+b(\015oating)i(p)s(oin)m(t)e(options.)39 b(Note)28 b(that)f(the)f
+(getcwd)h(function)f(that)h(is)f(used)f(in)h(the)h(group.c)f(mo)s(dule)
+f(ma)m(y)0 3332 y(require)44 b(that)i(programs)e(using)g(CFITSIO)f(b)s
+(e)h(link)m(ed)i(with)e(the)h(ALPHA$LIBRAR)-8 b(Y:V)e(AX)m(CR)i(TL.OLB)
+0 3445 y(library)g(.)41 b(See)30 b(the)h(example)g(link)f(line)h(in)f
+(the)h(next)f(section)i(of)e(this)h(do)s(cumen)m(t.)0
+3907 y Fd(2.1.3)112 b(Windo)m(ws)38 b(PCs)0 4161 y Fj(A)28
+b(precompiled)g(DLL)g(v)m(ersion)g(of)g(CFITSIO)e(is)i(a)m(v)-5
+b(ailable)31 b(for)c(IBM-PC)h(users)g(of)g(the)g(Borland)g(or)g
+(Microsoft)0 4274 y(Visual)46 b(C++)e(compilers)i(in)f(the)h(\014les)f
+(c\014tsio)s(dll)p 1799 4274 V 34 w(3xxx)p 2022 4274
+V 33 w(b)s(orland.zip)f(and)h(c\014tsio)s(dll)p 3075
+4274 V 33 w(3xxx)p 3297 4274 V 33 w(v)m(cc.zip,)51 b(where)0
+4386 y('3xxx')45 b(represen)m(ts)f(the)g(curren)m(t)g(release)i(n)m(um)
+m(b)s(er.)81 b(These)44 b(zip)g(arc)m(hiv)m(es)h(also)h(con)m(tains)f
+(other)f(\014les)h(and)0 4499 y(instructions)30 b(on)g(ho)m(w)h(to)g
+(use)f(the)h(CFITSIO)d(DLL)j(library)-8 b(.)0 4659 y(The)28
+b(CFITSIO)g(library)g(ma)m(y)h(also)h(b)s(e)e(built)h(from)f(the)h
+(source)g(co)s(de)g(using)g(the)g(mak)m(e\014le.b)s(c)g(or)g(mak)m
+(e\014le.v)m(cc)0 4772 y(\014les.)55 b(Finally)-8 b(,)38
+b(the)d(mak)m(ep)s(c.bat)h(\014le)f(giv)m(es)i(an)e(example)h(of)f
+(building)f(CFITSIO)g(with)g(the)i(Borland)f(C++)0 4885
+y(v4.5)c(or)g(v5.5)g(compiler)g(using)f(older)h(DOS)f(commands.)0
+5348 y Fd(2.1.4)112 b(Macin)m(tosh)39 b(PCs)0 5601 y
+Fj(When)20 b(building)f(on)i(Mac)g(OS-X,)f(users)g(should)f(follo)m(w)i
+(the)g(Unix)f(instructions,)i(ab)s(o)m(v)m(e.)39 b(See)20
+b(the)h(README.MacOS)0 5714 y(\014le)30 b(for)h(instructions)f(on)g
+(building)g(a)g(Univ)m(ersal)i(Binary)e(that)h(supp)s(orts)e(b)s(oth)g
+(In)m(tel)i(and)f(P)m(o)m(w)m(erPC)h(CPUs.)p eop end
+%%Page: 8 16
+TeXDict begin 8 15 bop 0 299 a Fj(8)1580 b Fh(CHAPTER)30
+b(2.)112 b(CREA)-8 b(TING)30 b(THE)g(CFITSIO)f(LIBRAR)-8
+b(Y)0 555 y Ff(2.2)135 b(T)-11 b(esting)46 b(the)f(Library)0
+805 y Fj(The)40 b(CFITSIO)e(library)i(should)f(b)s(e)g(tested)i(b)m(y)f
+(building)f(and)g(running)g(the)h(testprog.c)h(program)f(that)h(is)0
+918 y(included)30 b(with)g(the)g(release.)42 b(On)30
+b(Unix)g(systems,)h(t)m(yp)s(e:)191 1148 y Fe(\045)47
+b(make)g(testprog)191 1261 y(\045)g(testprog)f(>)h(testprog.lis)191
+1374 y(\045)g(diff)g(testprog.lis)d(testprog.out)191
+1487 y(\045)j(cmp)g(testprog.fit)e(testprog.std)0 1717
+y Fj(On)30 b(VMS)g(systems,)g(\(assuming)h(cc)g(is)f(the)h(name)f(of)h
+(the)f(C)g(compiler)h(command\),)g(t)m(yp)s(e:)191 1947
+y Fe($)47 b(cc)h(testprog.c)191 2060 y($)f(link)g(testprog,)e
+(cfitsio/lib,)g(alpha$library:vaxcrtl/l)o(ib)191 2173
+y($)i(run)g(testprog)0 2402 y Fj(The)42 b(test)h(program)f(should)f
+(pro)s(duce)g(a)i(FITS)e(\014le)i(called)g(`testprog.\014t')h(that)f
+(is)f(iden)m(tical)i(to)f(the)f(`test-)0 2515 y(prog.std')35
+b(FITS)e(\014le)i(included)e(with)h(this)g(release.)54
+b(The)34 b(diagnostic)i(messages)f(\(whic)m(h)g(w)m(ere)g(pip)s(ed)e
+(to)i(the)0 2628 y(\014le)h(testprog.lis)i(in)e(the)h(Unix)f(example\))
+h(should)e(b)s(e)h(iden)m(tical)i(to)f(the)f(listing)h(con)m(tained)h
+(in)e(the)g(\014le)h(test-)0 2741 y(prog.out.)63 b(The)37
+b('di\013)7 b(')38 b(and)f('cmp')h(commands)g(sho)m(wn)f(ab)s(o)m(v)m
+(e)i(should)d(not)i(rep)s(ort)f(an)m(y)h(di\013erences)g(in)g(the)0
+2854 y(\014les.)65 b(\(There)38 b(ma)m(y)h(b)s(e)f(some)h(minor)f
+(format)h(di\013erences,)i(suc)m(h)d(as)h(the)g(presence)f(or)h
+(absence)g(of)f(leading)0 2967 y(zeros,)31 b(or)g(3)f(digit)i(exp)s
+(onen)m(ts)e(in)g(n)m(um)m(b)s(ers,)f(whic)m(h)h(can)h(b)s(e)f
+(ignored\).)0 3127 y(The)e(F)-8 b(ortran)30 b(wrapp)s(ers)d(in)h
+(CFITSIO)f(ma)m(y)j(b)s(e)e(tested)h(with)g(the)g(testf77)h(program)f
+(on)g(Unix)f(systems)h(with:)191 3357 y Fe(\045)47 b(f77)g(-o)g
+(testf77)f(testf77.f)g(-L.)g(-lcfitsio)g(-lnsl)g(-lsocket)95
+3470 y(or)191 3583 y(\045)h(f77)g(-f)g(-o)h(testf77)d(testf77.f)h(-L.)h
+(-lcfitsio)188 b(\(under)46 b(SUN)h(O/S\))95 3696 y(or)191
+3809 y(\045)g(f77)g(-o)g(testf77)f(testf77.f)g(-Wl,-L.)f(-lcfitsio)h
+(-lm)h(-lnsl)f(-lsocket)f(\(HP/UX\))191 4035 y(\045)i(testf77)f(>)i
+(testf77.lis)191 4147 y(\045)f(diff)g(testf77.lis)e(testf77.out)191
+4260 y(\045)i(cmp)g(testf77.fit)e(testf77.std)0 4490
+y Fj(On)31 b(mac)m(hines)h(running)f(SUN)g(O/S,)h(F)-8
+b(ortran)33 b(programs)e(m)m(ust)h(b)s(e)f(compiled)h(with)g(the)g('-f)
+7 b(')32 b(option)h(to)f(force)0 4603 y(double)25 b(precision)h(v)-5
+b(ariables)26 b(to)g(b)s(e)f(aligned)h(on)g(8-b)m(yte)h(b)s(oundarys)c
+(to)j(mak)m(e)h(the)e(fortran-declared)h(v)-5 b(ariables)0
+4716 y(compatible)34 b(with)e(C.)g(A)h(similar)g(compiler)g(option)g
+(ma)m(y)g(b)s(e)f(required)g(on)g(other)h(platforms.)48
+b(F)-8 b(ailing)34 b(to)f(use)0 4829 y(this)26 b(option)g(ma)m(y)g
+(cause)h(the)f(program)f(to)i(crash)e(on)h(FITSIO)f(routines)g(that)i
+(read)f(or)f(write)h(double)g(precision)0 4942 y(v)-5
+b(ariables.)0 5102 y(Also)31 b(note)g(that)f(on)g(some)h(systems,)f
+(the)h(output)e(listing)i(of)g(the)f(testf77)i(program)d(ma)m(y)i
+(di\013er)f(sligh)m(tly)h(from)0 5215 y(the)g(testf77.std)h(template,)g
+(if)f(leading)g(zeros)g(are)g(not)g(prin)m(ted)f(b)m(y)h(default)g(b)s
+(efore)f(the)h(decimal)g(p)s(oin)m(t)g(when)0 5328 y(using)f(F)h
+(format.)0 5488 y(A)37 b(few)f(other)g(utilit)m(y)i(programs)e(are)h
+(included)f(with)g(CFITSIO;)f(the)i(\014rst)e(four)h(of)g(this)h
+(programs)f(can)h(b)s(e)0 5601 y(compiled)e(an)g(link)m(ed)g(b)m(y)g(t)
+m(yping)g(`mak)m(e)h(program)p 1815 5601 28 4 v 33 w(name')f(where)f
+(`program)p 2746 5601 V 33 w(name')h(is)g(the)g(actual)h(name)f(of)0
+5714 y(the)c(program:)p eop end
+%%Page: 9 17
+TeXDict begin 9 16 bop 0 299 a Fh(2.3.)72 b(LINKING)30
+b(PR)m(OGRAMS)h(WITH)f(CFITSIO)1975 b Fj(9)191 555 y
+Fe(speed)46 b(-)i(measures)d(the)i(maximum)f(throughput)f(\(in)i(MB)g
+(per)g(second\))668 668 y(for)g(writing)f(and)h(reading)f(FITS)g(files)
+h(with)f(CFITSIO.)191 894 y(listhead)f(-)j(lists)e(all)h(the)g(header)f
+(keywords)g(in)h(any)g(FITS)f(file)191 1120 y(fitscopy)f(-)j(copies)e
+(any)h(FITS)g(file)f(\(especially)f(useful)h(in)h(conjunction)811
+1233 y(with)g(the)g(CFITSIO's)e(extended)h(input)g(filename)g
+(syntax\).)191 1458 y(cookbook)f(-)j(a)f(sample)f(program)g(that)h
+(performs)e(common)i(read)f(and)811 1571 y(write)h(operations)e(on)i(a)
+g(FITS)g(file.)191 1797 y(iter_a,)f(iter_b,)g(iter_c)g(-)h(examples)f
+(of)h(the)g(CFITSIO)f(iterator)f(routine)0 2167 y Ff(2.3)135
+b(Linking)45 b(Programs)h(with)f(CFITSIO)0 2425 y Fj(When)25
+b(linking)h(applications)h(soft)m(w)m(are)g(with)e(the)h(CFITSIO)e
+(library)-8 b(,)27 b(sev)m(eral)g(system)f(libraries)g(usually)f(need)0
+2538 y(to)36 b(b)s(e)f(sp)s(eci\014ed)g(on)g(the)g(link)h(command)f
+(line.)56 b(On)34 b(Unix)i(systems,)h(the)e(most)h(reliable)g(w)m(a)m
+(y)h(to)f(determine)0 2651 y(what)26 b(libraries)h(are)f(required)g(is)
+g(to)h(t)m(yp)s(e)f('mak)m(e)i(testprog')f(and)f(see)h(what)f
+(libraries)h(the)f(con\014gure)g(script)g(has)0 2764
+y(added.)39 b(The)25 b(t)m(ypical)j(libraries)e(that)g(need)g(to)g(b)s
+(e)g(added)f(are)h(-lm)h(\(the)f(math)g(library\))g(and)f(-lnsl)h(and)g
+(-lso)s(c)m(k)m(et)0 2877 y(\(needed)k(only)g(for)g(FTP)g(and)f(HTTP)g
+(\014le)h(access\).)43 b(These)30 b(latter)h(2)f(libraries)g(are)h(not)
+f(needed)g(on)g(VMS)g(and)0 2989 y(Windo)m(ws)g(platforms,)h(b)s
+(ecause)f(FTP)h(\014le)f(access)i(is)e(not)h(curren)m(tly)f(supp)s
+(orted)f(on)h(those)h(platforms.)0 3150 y(Note)i(that)g(when)e
+(upgrading)g(to)i(a)f(new)m(er)g(v)m(ersion)g(of)g(CFITSIO)f(it)h(is)g
+(usually)g(necessary)g(to)h(recompile,)h(as)0 3263 y(w)m(ell)d(as)g
+(relink,)g(the)f(programs)g(that)h(use)f(CFITSIO,)f(b)s(ecause)i(the)f
+(de\014nitions)g(in)g(\014tsio.h)h(often)f(c)m(hange.)0
+3633 y Ff(2.4)135 b(Using)46 b(CFITSIO)e(in)h(Multi-threaded)g(En)l
+(vironmen)l(ts)0 3890 y Fj(CFITSIO)d(can)h(b)s(e)g(used)f(either)i
+(with)e(the)i(POSIX)e(pthreads)g(in)m(terface)j(or)e(the)h(Op)s(enMP)d
+(in)m(terface)k(for)0 4003 y(m)m(ulti-threaded)g(parallel)g(programs.)
+81 b(When)43 b(used)h(in)f(a)i(m)m(ulti-threaded)f(en)m(vironmen)m(t,)k
+(the)c(CFITSIO)0 4116 y(library)26 b(*m)m(ust*)h(b)s(e)e(built)h(using)
+g(the)g(-D)p 1426 4116 28 4 v 34 w(REENTRANT)f(compiler)i(directiv)m
+(e.)41 b(This)25 b(can)i(b)s(e)e(done)h(using)g(the)0
+4229 y(follo)m(wing)32 b(build)d(commands:)95 4520 y
+Fe(>./configure)45 b(--enable-reentrant)95 4633 y(>)j(make)0
+4924 y Fj(A)32 b(function)g(called)i(\014ts)p 845 4924
+V 32 w(is)p 938 4924 V 33 w(reen)m(tran)m(t)f(is)g(a)m(v)-5
+b(ailable)34 b(to)f(test)h(whether)d(or)i(not)f(CFITSIO)f(w)m(as)h
+(compiled)h(with)0 5036 y(the)28 b(-D)p 258 5036 V 34
+w(REENTRANT)f(directiv)m(e.)42 b(When)28 b(this)g(feature)g(is)g
+(enabled,)h(m)m(ultiple)g(threads)e(can)i(call)g(an)m(y)g(of)f(the)0
+5149 y(CFITSIO)k(routines)h(to)h(sim)m(ultaneously)g(read)f(or)h(write)
+f(separate)h(FITS)f(\014les.)49 b(Multiple)34 b(threads)f(can)h(also)0
+5262 y(read)29 b(data)h(from)e(the)h(same)h(FITS)e(\014le)h(sim)m
+(ultaneously)-8 b(,)31 b(as)e(long)h(as)f(the)g(\014le)g(w)m(as)h(op)s
+(ened)e(indep)s(enden)m(tly)g(b)m(y)0 5375 y(eac)m(h)37
+b(thread.)58 b(This)35 b(relies)i(on)f(the)g(op)s(erating)h(system)f
+(to)h(correctly)g(deal)g(with)f(reading)g(the)g(same)h(\014le)f(b)m(y)0
+5488 y(m)m(ultiple)30 b(pro)s(cesses.)41 b(Di\013eren)m(t)30
+b(threads)g(should)e(not)i(share)f(the)h(same)g('\014ts\014le')g(p)s
+(oin)m(ter)f(to)i(read)e(an)h(op)s(ened)0 5601 y(FITS)40
+b(\014le,)j(unless)d(lo)s(c)m(ks)h(are)g(placed)f(around)g(the)g(calls)
+i(to)f(the)g(CFITSIO)d(reading)j(routines.)71 b(Di\013eren)m(t)0
+5714 y(threads)30 b(should)f(nev)m(er)i(try)f(to)h(write)g(to)g(the)g
+(same)f(FITS)g(\014le.)p eop end
+%%Page: 10 18
+TeXDict begin 10 17 bop 0 299 a Fj(10)1535 b Fh(CHAPTER)30
+b(2.)112 b(CREA)-8 b(TING)30 b(THE)g(CFITSIO)f(LIBRAR)-8
+b(Y)0 555 y Ff(2.5)135 b(Getting)46 b(Started)g(with)f(CFITSIO)0
+810 y Fj(In)27 b(order)h(to)g(e\013ectiv)m(ely)j(use)d(the)g(CFITSIO)e
+(library)i(it)g(is)g(recommended)g(that)g(new)f(users)h(b)s(egin)f(b)m
+(y)h(reading)0 923 y(the)g(\\CFITSIO)g(Quic)m(k)g(Start)g(Guide".)41
+b(It)28 b(con)m(tains)h(all)h(the)e(basic)h(information)f(needed)g(to)h
+(write)f(programs)0 1036 y(that)c(p)s(erform)f(most)h(t)m(yp)s(es)g(of)
+g(op)s(erations)g(on)g(FITS)f(\014les.)39 b(The)23 b(set)i(of)f
+(example)g(FITS)g(utilit)m(y)h(programs)e(that)0 1149
+y(are)29 b(a)m(v)-5 b(ailable)31 b(from)d(the)g(CFITSIO)f(w)m(eb)i
+(site)g(are)g(also)g(v)m(ery)g(useful)f(for)g(learning)h(ho)m(w)f(to)h
+(use)f(CFITSIO.)f(T)-8 b(o)0 1262 y(learn)23 b(ev)m(en)g(more)g(ab)s
+(out)f(the)h(capabilities)h(of)f(the)g(CFITSIO)e(library)h(the)h(follo)
+m(wing)h(steps)e(are)h(recommended:)0 1422 y(1.)41 b(Read)31
+b(the)f(follo)m(wing)i(short)e(`FITS)g(Primer')g(c)m(hapter)h(for)f(an)
+h(o)m(v)m(erview)h(of)e(the)h(structure)f(of)g(FITS)g(\014les.)0
+1582 y(2.)40 b(Review)28 b(the)f(Programming)g(Guidelines)h(in)f
+(Chapter)f(4)i(to)g(b)s(ecome)f(familiar)h(with)f(the)h(con)m(v)m(en)m
+(tions)h(used)0 1695 y(b)m(y)h(the)h(CFITSIO)e(in)m(terface.)0
+1855 y(3.)74 b(Refer)41 b(to)h(the)g(co)s(okb)s(o)s(ok.c,)j
+(listhead.c,)h(and)40 b(\014tscop)m(y)-8 b(.c)43 b(programs)e(that)h
+(are)g(included)e(with)h(this)h(re-)0 1968 y(lease)g(for)e(examples)h
+(of)g(routines)f(that)h(p)s(erform)e(v)-5 b(arious)41
+b(common)g(FITS)f(\014le)g(op)s(erations.)72 b(T)m(yp)s(e)40
+b('mak)m(e)0 2081 y(program)p 339 2081 28 4 v 33 w(name')30
+b(to)h(compile)h(and)d(link)i(these)g(programs)f(on)g(Unix)g(systems.)0
+2241 y(4.)40 b(W)-8 b(rite)30 b(a)e(simple)g(program)g(to)g(read)g(or)g
+(write)g(a)h(FITS)e(\014le)h(using)g(the)g(Basic)h(In)m(terface)g
+(routines)f(describ)s(ed)0 2354 y(in)i(Chapter)g(5.)0
+2514 y(5.)79 b(Scan)43 b(through)f(the)h(more)g(sp)s(ecialized)i
+(routines)d(that)i(are)f(describ)s(ed)f(in)h(the)g(follo)m(wing)i(c)m
+(hapters)e(to)0 2627 y(b)s(ecome)31 b(familiar)g(with)f(the)h
+(functionalit)m(y)g(that)g(they)g(pro)m(vide.)0 2986
+y Ff(2.6)135 b(Example)46 b(Program)0 3241 y Fj(The)c(follo)m(wing)j
+(listing)f(sho)m(ws)e(an)h(example)h(of)f(ho)m(w)g(to)g(use)g(the)g
+(CFITSIO)f(routines)g(in)h(a)g(C)g(program.)0 3354 y(Refer)26
+b(to)g(the)g(co)s(okb)s(o)s(ok.c)g(program)f(that)i(is)e(included)g
+(with)g(the)h(CFITSIO)e(distribution)h(for)g(other)h(example)0
+3466 y(routines.)0 3627 y(This)38 b(program)h(creates)h(a)f(new)f(FITS)
+g(\014le,)k(con)m(taining)e(a)f(FITS)f(image.)68 b(An)38
+b(`EXPOSURE')h(k)m(eyw)m(ord)g(is)0 3740 y(written)27
+b(to)g(the)f(header,)i(then)e(the)h(image)g(data)h(are)f(written)f(to)h
+(the)g(FITS)f(\014le)g(b)s(efore)h(closing)g(the)g(FITS)f(\014le.)0
+4020 y Fe(#include)46 b("fitsio.h")92 b(/*)47 b(required)f(by)h(every)g
+(program)e(that)i(uses)g(CFITSIO)93 b(*/)0 4133 y(main\(\))0
+4246 y({)191 4359 y(fitsfile)45 b(*fptr;)333 b(/*)47
+b(pointer)f(to)h(the)g(FITS)g(file;)f(defined)g(in)h(fitsio.h)f(*/)191
+4472 y(int)h(status,)f(ii,)h(jj;)191 4585 y(long)94 b(fpixel)46
+b(=)i(1,)f(naxis)f(=)i(2,)f(nelements,)e(exposure;)191
+4698 y(long)i(naxes[2])e(=)j({)f(300,)g(200)g(};)142
+b(/*)47 b(image)g(is)g(300)g(pixels)f(wide)h(by)g(200)g(rows)f(*/)191
+4811 y(short)g(array[200][300];)191 5036 y(status)g(=)h(0;)429
+b(/*)48 b(initialize)d(status)h(before)g(calling)g(fitsio)g(routines)f
+(*/)191 5149 y(fits_create_file\(&fptr,)c("testfile.fits",)j
+(&status\);)140 b(/*)48 b(create)e(new)h(file)f(*/)191
+5375 y(/*)h(Create)f(the)h(primary)f(array)g(image)h(\(16-bit)e(short)i
+(integer)f(pixels)g(*/)191 5488 y(fits_create_img\(fptr,)c(SHORT_IMG,)j
+(naxis,)h(naxes,)g(&status\);)191 5714 y(/*)h(Write)f(a)i(keyword;)d
+(must)i(pass)g(the)g(ADDRESS)e(of)j(the)f(value)f(*/)p
+eop end
+%%Page: 11 19
+TeXDict begin 11 18 bop 0 299 a Fh(2.6.)72 b(EXAMPLE)31
+b(PR)m(OGRAM)2618 b Fj(11)191 555 y Fe(exposure)45 b(=)j(1500.;)191
+668 y(fits_update_key\(fptr,)42 b(TLONG,)k("EXPOSURE",)f(&exposure,)430
+781 y("Total)h(Exposure)f(Time",)h(&status\);)191 1007
+y(/*)h(Initialize)e(the)i(values)f(in)h(the)g(image)g(with)f(a)i
+(linear)e(ramp)g(function)g(*/)191 1120 y(for)h(\(jj)g(=)g(0;)g(jj)h(<)
+f(naxes[1];)e(jj++\))382 1233 y(for)i(\(ii)g(=)g(0;)g(ii)g(<)h
+(naxes[0];)d(ii++\))573 1346 y(array[jj][ii])f(=)j(ii)h(+)f(jj;)191
+1571 y(nelements)e(=)j(naxes[0])d(*)j(naxes[1];)474 b(/*)48
+b(number)e(of)h(pixels)f(to)h(write)g(*/)191 1797 y(/*)g(Write)f(the)h
+(array)g(of)g(integers)e(to)j(the)f(image)f(*/)191 1910
+y(fits_write_img\(fptr,)c(TSHORT,)k(fpixel,)g(nelements,)f(array[0],)g
+(&status\);)191 2136 y(fits_close_file\(fptr,)d(&status\);)570
+b(/*)47 b(close)g(the)g(file)f(*/)191 2362 y(fits_report_error\(stderr)
+o(,)c(status\);)93 b(/*)47 b(print)g(out)g(any)f(error)h(messages)e(*/)
+191 2475 y(return\()h(status)g(\);)0 2588 y(})p eop end
+%%Page: 12 20
+TeXDict begin 12 19 bop 0 299 a Fj(12)1535 b Fh(CHAPTER)30
+b(2.)112 b(CREA)-8 b(TING)30 b(THE)g(CFITSIO)f(LIBRAR)-8
+b(Y)p eop end
+%%Page: 13 21
+TeXDict begin 13 20 bop 0 1225 a Fg(Chapter)65 b(3)0
+1687 y Fm(A)78 b(FITS)f(Primer)0 2180 y Fj(This)23 b(section)j(giv)m
+(es)f(a)g(brief)e(o)m(v)m(erview)j(of)e(the)h(structure)e(of)i(FITS)e
+(\014les.)38 b(Users)24 b(should)g(refer)f(to)i(the)g(do)s(cumen-)0
+2293 y(tation)j(a)m(v)-5 b(ailable)30 b(from)d(the)g(NOST,)f(as)i
+(describ)s(ed)e(in)h(the)g(in)m(tro)s(duction,)h(for)f(more)g(detailed)
+i(information)e(on)0 2406 y(FITS)j(formats.)0 2566 y(FITS)e(w)m(as)h
+(\014rst)g(dev)m(elop)s(ed)g(in)f(the)h(late)i(1970's)g(as)e(a)g
+(standard)f(data)i(in)m(terc)m(hange)g(format)f(b)s(et)m(w)m(een)h(v)-5
+b(arious)0 2679 y(astronomical)36 b(observ)-5 b(atories.)52
+b(Since)34 b(then)g(FITS)f(has)h(b)s(ecome)g(the)h(standard)e(data)i
+(format)f(supp)s(orted)e(b)m(y)0 2791 y(most)f(astronomical)h(data)f
+(analysis)g(soft)m(w)m(are)h(pac)m(k)-5 b(ages.)0 2952
+y(A)34 b(FITS)f(\014le)g(consists)h(of)g(one)g(or)g(more)g(Header)g(+)f
+(Data)i(Units)f(\(HDUs\),)i(where)d(the)h(\014rst)f(HDU)h(is)g(called)0
+3065 y(the)j(`Primary)f(HDU',)i(or)f(`Primary)f(Arra)m(y'.)60
+b(The)36 b(primary)g(arra)m(y)h(con)m(tains)h(an)e(N-dimensional)i
+(arra)m(y)f(of)0 3177 y(pixels,)30 b(suc)m(h)g(as)g(a)h(1-D)g(sp)s
+(ectrum,)e(a)h(2-D)h(image,)h(or)e(a)g(3-D)i(data)e(cub)s(e.)40
+b(Six)30 b(di\013eren)m(t)g(primary)f(data)i(t)m(yp)s(es)0
+3290 y(are)j(supp)s(orted:)44 b(Unsigned)33 b(8-bit)h(b)m(ytes,)h
+(16-bit,)g(32-bit,)h(and)c(64-bit)j(signed)e(in)m(tegers,)i(and)e(32)h
+(and)f(64-bit)0 3403 y(\015oating)28 b(p)s(oin)m(t)e(reals.)40
+b(FITS)27 b(also)g(has)g(a)g(con)m(v)m(en)m(tion)i(for)d(storing)i(16)f
+(and)f(32-bit)i(unsigned)e(in)m(tegers)i(\(see)g(the)0
+3516 y(later)k(section)h(en)m(titled)g(`Unsigned)e(In)m(tegers')h(for)f
+(more)h(details\).)44 b(The)31 b(primary)g(HDU)h(ma)m(y)g(also)g
+(consist)g(of)0 3629 y(only)e(a)h(header)f(with)h(a)f(n)m(ull)h(arra)m
+(y)f(con)m(taining)i(no)f(data)g(pixels.)0 3789 y(An)m(y)i(n)m(um)m(b)s
+(er)e(of)h(additional)i(HDUs)f(ma)m(y)g(follo)m(w)h(the)e(primary)g
+(arra)m(y;)i(these)f(additional)h(HDUs)f(are)g(called)0
+3902 y(FITS)d(`extensions'.)41 b(There)30 b(are)h(curren)m(tly)f(3)h(t)
+m(yp)s(es)g(of)f(extensions)h(de\014ned)e(b)m(y)h(the)h(FITS)f
+(standard:)136 4171 y Fc(\017)46 b Fj(Image)31 b(Extension)g(-)g(a)f
+(N-dimensional)h(arra)m(y)g(of)g(pixels,)g(lik)m(e)g(in)f(a)h(primary)e
+(arra)m(y)136 4368 y Fc(\017)46 b Fj(ASCI)s(I)29 b(T)-8
+b(able)31 b(Extension)g(-)f(ro)m(ws)h(and)e(columns)h(of)h(data)g(in)f
+(ASCI)s(I)f(c)m(haracter)j(format)136 4564 y Fc(\017)46
+b Fj(Binary)31 b(T)-8 b(able)31 b(Extension)f(-)h(ro)m(ws)f(and)g
+(columns)g(of)h(data)g(in)f(binary)f(represen)m(tation)0
+4833 y(In)k(eac)m(h)i(case)g(the)f(HDU)h(consists)g(of)f(an)g(ASCI)s(I)
+e(Header)i(Unit)h(follo)m(w)m(ed)g(b)m(y)f(an)g(optional)h(Data)g
+(Unit.)52 b(F)-8 b(or)0 4946 y(historical)37 b(reasons,)g(eac)m(h)f
+(Header)g(or)g(Data)h(unit)e(m)m(ust)g(b)s(e)g(an)g(exact)i(m)m
+(ultiple)f(of)g(2880)h(8-bit)f(b)m(ytes)g(long.)0 5059
+y(An)m(y)30 b(un)m(used)g(space)g(is)h(padded)e(with)h(\014ll)g(c)m
+(haracters)i(\(ASCI)s(I)d(blanks)h(or)h(zeros\).)0 5219
+y(Eac)m(h)i(Header)f(Unit)h(consists)g(of)f(an)m(y)g(n)m(um)m(b)s(er)f
+(of)i(80-c)m(haracter)i(k)m(eyw)m(ord)d(records)g(or)g(`card)h(images')
+g(whic)m(h)0 5332 y(ha)m(v)m(e)f(the)e(general)i(form:)95
+5601 y Fe(KEYNAME)46 b(=)i(value)e(/)i(comment)d(string)95
+5714 y(NULLKEY)h(=)334 b(/)48 b(comment:)d(This)i(keyword)f(has)g(no)i
+(value)1905 5942 y Fj(13)p eop end
+%%Page: 14 22
+TeXDict begin 14 21 bop 0 299 a Fj(14)2398 b Fh(CHAPTER)30
+b(3.)112 b(A)30 b(FITS)g(PRIMER)0 555 y Fj(The)35 b(k)m(eyw)m(ord)i
+(names)f(ma)m(y)g(b)s(e)g(up)f(to)h(8)h(c)m(haracters)g(long)g(and)e
+(can)h(only)h(con)m(tain)g(upp)s(ercase)e(letters,)k(the)0
+668 y(digits)25 b(0-9,)i(the)e(h)m(yphen,)g(and)f(the)h(underscore)e(c)
+m(haracter.)41 b(The)24 b(k)m(eyw)m(ord)h(name)g(is)f(\(usually\))h
+(follo)m(w)m(ed)i(b)m(y)d(an)0 781 y(equals)29 b(sign)g(and)f(a)g
+(space)i(c)m(haracter)g(\(=)e(\))h(in)f(columns)h(9)g(-)f(10)i(of)f
+(the)f(record,)h(follo)m(w)m(ed)i(b)m(y)d(the)h(v)-5
+b(alue)29 b(of)g(the)0 894 y(k)m(eyw)m(ord)34 b(whic)m(h)g(ma)m(y)g(b)s
+(e)f(either)h(an)g(in)m(teger,)i(a)e(\015oating)g(p)s(oin)m(t)g(n)m(um)
+m(b)s(er,)g(a)g(c)m(haracter)h(string)e(\(enclosed)i(in)0
+1007 y(single)28 b(quotes\),)i(or)e(a)g(b)s(o)s(olean)g(v)-5
+b(alue)28 b(\(the)g(letter)h(T)f(or)f(F\).)i(A)f(k)m(eyw)m(ord)g(ma)m
+(y)h(also)f(ha)m(v)m(e)h(a)g(n)m(ull)e(or)h(unde\014ned)0
+1120 y(v)-5 b(alue)31 b(if)f(there)h(is)f(no)g(sp)s(eci\014ed)g(v)-5
+b(alue)31 b(string,)g(as)f(in)g(the)h(second)f(example,)i(ab)s(o)m(v)m
+(e)0 1280 y(The)42 b(last)h(k)m(eyw)m(ord)g(in)f(the)h(header)f(is)g
+(alw)m(a)m(ys)i(the)f(`END')g(k)m(eyw)m(ord)g(whic)m(h)f(has)g(no)h(v)
+-5 b(alue)42 b(or)h(commen)m(t)0 1393 y(\014elds.)d(There)30
+b(are)h(man)m(y)f(rules)g(go)m(v)m(erning)i(the)e(exact)i(format)f(of)f
+(a)h(k)m(eyw)m(ord)f(record)h(\(see)g(the)f(NOST)g(FITS)0
+1506 y(Standard\))c(so)i(it)f(is)h(b)s(etter)f(to)h(rely)f(on)g
+(standard)g(in)m(terface)h(soft)m(w)m(are)h(lik)m(e)f(CFITSIO)e(to)i
+(correctly)h(construct)0 1619 y(or)h(to)h(parse)g(the)f(k)m(eyw)m(ord)h
+(records)f(rather)g(than)h(try)f(to)h(deal)g(directly)g(with)f(the)g
+(ra)m(w)h(FITS)f(formats.)0 1779 y(Eac)m(h)37 b(Header)g(Unit)f(b)s
+(egins)g(with)g(a)g(series)h(of)f(required)g(k)m(eyw)m(ords)g(whic)m(h)
+g(dep)s(end)f(on)h(the)g(t)m(yp)s(e)h(of)f(HDU.)0 1892
+y(These)31 b(required)g(k)m(eyw)m(ords)h(sp)s(ecify)g(the)f(size)i(and)
+e(format)h(of)g(the)g(follo)m(wing)h(Data)g(Unit.)45
+b(The)31 b(header)g(ma)m(y)0 2005 y(con)m(tain)h(other)f(optional)g(k)m
+(eyw)m(ords)g(to)h(describ)s(e)e(other)g(asp)s(ects)h(of)g(the)g(data,)
+g(suc)m(h)g(as)g(the)f(units)g(or)h(scaling)0 2118 y(v)-5
+b(alues.)44 b(Other)31 b(COMMENT)g(or)g(HISTOR)-8 b(Y)30
+b(k)m(eyw)m(ords)i(are)g(also)g(frequen)m(tly)g(added)e(to)i(further)e
+(do)s(cumen)m(t)0 2230 y(the)h(data)g(\014le.)0 2391
+y(The)36 b(optional)h(Data)h(Unit)f(immediately)g(follo)m(ws)h(the)e
+(last)h(2880-b)m(yte)i(blo)s(c)m(k)e(in)f(the)g(Header)h(Unit.)59
+b(Some)0 2503 y(HDUs)31 b(do)f(not)h(ha)m(v)m(e)g(a)g(Data)h(Unit)f
+(and)f(only)g(consist)h(of)g(the)f(Header)h(Unit.)0 2664
+y(If)24 b(there)i(is)f(more)g(than)f(one)h(HDU)h(in)f(the)g(FITS)f
+(\014le,)i(then)f(the)g(Header)h(Unit)f(of)g(the)g(next)g(HDU)h
+(immediately)0 2777 y(follo)m(ws)g(the)e(last)i(2880-b)m(yte)h(blo)s(c)
+m(k)e(of)g(the)f(previous)g(Data)j(Unit)d(\(or)h(Header)g(Unit)g(if)f
+(there)h(is)g(no)f(Data)i(Unit\).)0 2937 y(The)k(main)g(required)g(k)m
+(eyw)m(ords)g(in)g(FITS)g(primary)g(arra)m(ys)g(or)h(image)g
+(extensions)g(are:)136 3172 y Fc(\017)46 b Fj(BITPIX)32
+b({)g(de\014nes)e(the)i(data)g(t)m(yp)s(e)g(of)g(the)g(arra)m(y:)43
+b(8,)33 b(16,)g(32,)g(64,)g(-32,)g(-64)g(for)e(unsigned)f(8{bit)j(b)m
+(yte,)227 3284 y(16{bit)41 b(signed)f(in)m(teger,)j(32{bit)f(signed)d
+(in)m(teger,)44 b(32{bit)d(IEEE)e(\015oating)h(p)s(oin)m(t,)i(and)e
+(64{bit)h(IEEE)227 3397 y(double)30 b(precision)h(\015oating)g(p)s(oin)
+m(t,)g(resp)s(ectiv)m(ely)-8 b(.)136 3585 y Fc(\017)46
+b Fj(NAXIS)30 b({)h(the)g(n)m(um)m(b)s(er)e(of)h(dimensions)g(in)g(the)
+h(arra)m(y)-8 b(,)31 b(usually)f(0,)h(1,)g(2,)g(3,)g(or)g(4.)136
+3773 y Fc(\017)46 b Fj(NAXISn)30 b({)h(\(n)f(ranges)g(from)g(1)h(to)g
+(NAXIS\))g(de\014nes)e(the)i(size)g(of)g(eac)m(h)g(dimension.)0
+4008 y(FITS)e(tables)i(start)g(with)f(the)g(k)m(eyw)m(ord)g(XTENSION)g
+(=)f(`T)-8 b(ABLE')31 b(\(for)f(ASCI)s(I)f(tables\))i(or)f(XTENSION)f
+(=)0 4120 y(`BINT)-8 b(ABLE')32 b(\(for)e(binary)g(tables\))h(and)f(ha)
+m(v)m(e)i(the)e(follo)m(wing)i(main)e(k)m(eyw)m(ords:)136
+4355 y Fc(\017)46 b Fj(TFIELDS)30 b({)h(n)m(um)m(b)s(er)e(of)h
+(\014elds)g(or)h(columns)f(in)g(the)g(table)136 4543
+y Fc(\017)46 b Fj(NAXIS2)31 b({)g(n)m(um)m(b)s(er)e(of)h(ro)m(ws)h(in)f
+(the)g(table)136 4731 y Fc(\017)46 b Fj(TTYPEn)29 b({)i(for)f(eac)m(h)i
+(column)e(\(n)g(ranges)h(from)f(1)g(to)h(TFIELDS\))g(giv)m(es)g(the)g
+(name)f(of)h(the)f(column)136 4918 y Fc(\017)46 b Fj(TF)m(ORMn)31
+b({)f(the)h(data)g(t)m(yp)s(e)f(of)h(the)g(column)136
+5106 y Fc(\017)46 b Fj(TUNITn)30 b({)g(the)h(ph)m(ysical)g(units)f(of)g
+(the)h(column)f(\(optional\))0 5341 y(Users)k(should)f(refer)h(to)h
+(the)f(FITS)g(Supp)s(ort)e(O\016ce)i(at)h Fe(http://fits.gsfc.nasa.gov)
+27 b Fj(for)34 b(further)f(infor-)0 5454 y(mation)e(ab)s(out)f(the)h
+(FITS)e(format)i(and)f(related)h(soft)m(w)m(are)h(pac)m(k)-5
+b(ages.)p eop end
+%%Page: 15 23
+TeXDict begin 15 22 bop 0 1225 a Fg(Chapter)65 b(4)0
+1687 y Fm(Programming)77 b(Guidelines)0 2216 y Ff(4.1)135
+b(CFITSIO)44 b(De\014nitions)0 2466 y Fj(An)m(y)30 b(program)g(that)h
+(uses)f(the)h(CFITSIO)d(in)m(terface)k(m)m(ust)e(include)g(the)h
+(\014tsio.h)f(header)g(\014le)h(with)f(the)g(state-)0
+2579 y(men)m(t)95 2818 y Fe(#include)46 b("fitsio.h")0
+3057 y Fj(This)30 b(header)h(\014le)h(con)m(tains)g(the)f(protot)m(yp)s
+(es)h(for)f(all)h(the)f(CFITSIO)f(user)g(in)m(terface)j(routines)e(as)g
+(w)m(ell)h(as)g(the)0 3170 y(de\014nitions)g(of)g(v)-5
+b(arious)32 b(constan)m(ts)h(used)e(in)h(the)h(in)m(terface.)47
+b(It)32 b(also)h(de\014nes)e(a)i(C)f(structure)f(of)h(t)m(yp)s(e)h
+(`\014ts\014le')0 3283 y(that)j(is)g(used)f(b)m(y)g(CFITSIO)f(to)j
+(store)f(the)g(relev)-5 b(an)m(t)37 b(parameters)f(that)g(de\014ne)f
+(the)h(format)g(of)g(a)g(particular)0 3396 y(FITS)c(\014le.)48
+b(Application)34 b(programs)f(m)m(ust)g(de\014ne)f(a)h(p)s(oin)m(ter)g
+(to)g(this)g(structure)g(for)f(eac)m(h)i(FITS)e(\014le)h(that)h(is)0
+3508 y(to)i(b)s(e)f(op)s(ened.)56 b(This)35 b(structure)g(is)h
+(initialized)h(\(i.e.,)i(memory)c(is)h(allo)s(cated)h(for)f(the)g
+(structure\))f(when)g(the)0 3621 y(FITS)h(\014le)g(is)h(\014rst)e(op)s
+(ened)h(or)g(created)i(with)e(the)g(\014ts)p 1949 3621
+28 4 v 33 w(op)s(en)p 2172 3621 V 32 w(\014le)g(or)h(\014ts)p
+2596 3621 V 32 w(create)p 2864 3621 V 34 w(\014le)g(routines.)59
+b(This)35 b(\014ts\014le)0 3734 y(p)s(oin)m(ter)c(is)h(then)f(passed)g
+(as)g(the)h(\014rst)e(argumen)m(t)i(to)g(ev)m(ery)g(other)g(CFITSIO)d
+(routine)j(that)g(op)s(erates)g(on)f(the)0 3847 y(FITS)h(\014le.)48
+b(Application)34 b(programs)f(m)m(ust)g(not)g(directly)g(read)g(or)g
+(write)g(elemen)m(ts)h(in)f(this)g(\014ts\014le)f(structure)0
+3960 y(b)s(ecause)e(the)h(de\014nition)f(of)h(the)f(structure)g(ma)m(y)
+h(c)m(hange)g(in)g(future)e(v)m(ersions)i(of)f(CFITSIO.)0
+4120 y(A)45 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)g(constan)m(ts)h
+(are)f(also)g(de\014ned)f(in)g(\014tsio.h)h(for)f(the)h(con)m(v)m
+(enience)i(of)e(application)0 4233 y(programmers.)55
+b(Use)35 b(of)h(these)f(sym)m(b)s(olic)h(constan)m(ts)g(rather)f(than)g
+(the)h(actual)g(n)m(umeric)f(v)-5 b(alue)36 b(will)f(help)g(to)0
+4346 y(mak)m(e)c(the)g(source)f(co)s(de)h(more)g(readable)f(and)g
+(easier)i(for)e(others)g(to)h(understand.)0 4585 y Fe(String)46
+b(Lengths,)g(for)h(use)f(when)h(allocating)e(character)g(arrays:)95
+4811 y(#define)h(FLEN_FILENAME)e(1025)j(/*)g(max)g(length)f(of)h(a)h
+(filename)857 b(*/)95 4924 y(#define)46 b(FLEN_KEYWORD)140
+b(72)95 b(/*)47 b(max)g(length)f(of)h(a)h(keyword)905
+b(*/)95 5036 y(#define)46 b(FLEN_CARD)284 b(81)95 b(/*)47
+b(max)g(length)f(of)h(a)h(FITS)f(header)f(card)476 b(*/)95
+5149 y(#define)46 b(FLEN_VALUE)236 b(71)95 b(/*)47 b(max)g(length)f(of)
+h(a)h(keyword)e(value)g(string)285 b(*/)95 5262 y(#define)46
+b(FLEN_COMMENT)140 b(73)95 b(/*)47 b(max)g(length)f(of)h(a)h(keyword)e
+(comment)g(string)189 b(*/)95 5375 y(#define)46 b(FLEN_ERRMSG)188
+b(81)95 b(/*)47 b(max)g(length)f(of)h(a)h(CFITSIO)e(error)g(message)237
+b(*/)95 5488 y(#define)46 b(FLEN_STATUS)188 b(31)95 b(/*)47
+b(max)g(length)f(of)h(a)h(CFITSIO)e(status)g(text)g(string)h(*/)95
+5714 y(Note)g(that)g(FLEN_KEYWORD)d(is)j(longer)f(than)h(the)g(nominal)
+f(8-character)f(keyword)1905 5942 y Fj(15)p eop end
+%%Page: 16 24
+TeXDict begin 16 23 bop 0 299 a Fj(16)1763 b Fh(CHAPTER)29
+b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)95 555 y Fe(name)47
+b(length)f(because)g(the)h(HIERARCH)e(convention)g(supports)h(longer)g
+(keyword)g(names.)0 781 y(Access)g(modes)g(when)h(opening)f(a)h(FITS)g
+(file:)95 1007 y(#define)f(READONLY)94 b(0)95 1120 y(#define)46
+b(READWRITE)g(1)0 1346 y(BITPIX)g(data)h(type)f(code)h(values)f(for)h
+(FITS)g(images:)95 1571 y(#define)f(BYTE_IMG)284 b(8)96
+b(/*)f(8-bit)46 b(unsigned)f(integers)h(*/)95 1684 y(#define)g
+(SHORT_IMG)189 b(16)95 b(/*)47 b(16-bit)141 b(signed)46
+b(integers)g(*/)95 1797 y(#define)g(LONG_IMG)237 b(32)95
+b(/*)47 b(32-bit)141 b(signed)46 b(integers)g(*/)95 1910
+y(#define)g(LONGLONG_IMG)f(64)95 b(/*)47 b(64-bit)141
+b(signed)46 b(integers)g(*/)95 2023 y(#define)g(FLOAT_IMG)141
+b(-32)95 b(/*)47 b(32-bit)f(single)g(precision)f(floating)h(point)g(*/)
+95 2136 y(#define)g(DOUBLE_IMG)93 b(-64)i(/*)47 b(64-bit)f(double)g
+(precision)f(floating)h(point)g(*/)95 2362 y(The)h(following)f(4)h
+(data)g(type)f(codes)h(are)g(also)f(supported)g(by)h(CFITSIO:)95
+2475 y(#define)f(SBYTE_IMG)93 b(10)143 b(/*)95 b(8-bit)46
+b(signed)g(integers,)g(equivalent)f(to)i(*/)1241 2588
+y(/*)95 b(BITPIX)46 b(=)h(8,)h(BSCALE)e(=)h(1,)g(BZERO)g(=)g(-128)g(*/)
+95 2700 y(#define)f(USHORT_IMG)93 b(20)i(/*)47 b(16-bit)f(unsigned)g
+(integers,)f(equivalent)g(to)i(*/)1241 2813 y(/*)95 b(BITPIX)46
+b(=)h(16,)g(BSCALE)f(=)i(1,)f(BZERO)f(=)i(32768)e(*/)95
+2926 y(#define)g(ULONG_IMG)141 b(40)95 b(/*)47 b(32-bit)f(unsigned)g
+(integers,)f(equivalent)g(to)i(*/)1241 3039 y(/*)95 b(BITPIX)46
+b(=)h(32,)g(BSCALE)f(=)i(1,)f(BZERO)f(=)i(2147483648)d(*/)0
+3265 y(Codes)h(for)h(the)g(data)g(type)f(of)i(binary)e(table)g(columns)
+g(and/or)g(for)h(the)0 3378 y(data)g(type)f(of)h(variables)f(when)g
+(reading)g(or)h(writing)f(keywords)g(or)h(data:)1432
+3604 y(DATATYPE)714 b(TFORM)46 b(CODE)95 3717 y(#define)g(TBIT)476
+b(1)96 b(/*)1335 b('X')47 b(*/)95 3830 y(#define)f(TBYTE)381
+b(11)95 b(/*)47 b(8-bit)f(unsigned)g(byte,)332 b('B')47
+b(*/)95 3942 y(#define)f(TLOGICAL)237 b(14)95 b(/*)47
+b(logicals)e(\(int)i(for)g(keywords)236 b(*/)1289 4055
+y(/*)95 b(and)46 b(char)h(for)g(table)f(cols)142 b('L')47
+b(*/)95 4168 y(#define)f(TSTRING)285 b(16)95 b(/*)47
+b(ASCII)f(string,)666 b('A')47 b(*/)95 4281 y(#define)f(TSHORT)333
+b(21)95 b(/*)47 b(signed)f(short,)666 b('I')47 b(*/)95
+4394 y(#define)f(TLONG)381 b(41)95 b(/*)47 b(signed)f(long,)905
+b(*/)95 4507 y(#define)46 b(TLONGLONG)189 b(81)95 b(/*)47
+b(64-bit)f(long)h(signed)f(integer)f('K')i(*/)95 4620
+y(#define)f(TFLOAT)333 b(42)95 b(/*)47 b(single)f(precision)f(float,)
+189 b('E')47 b(*/)95 4733 y(#define)f(TDOUBLE)285 b(82)95
+b(/*)47 b(double)f(precision)f(float,)189 b('D')47 b(*/)95
+4846 y(#define)f(TCOMPLEX)237 b(83)95 b(/*)47 b(complex)f(\(pair)g(of)h
+(floats\))141 b('C')47 b(*/)95 4959 y(#define)f(TDBLCOMPLEX)f(163)95
+b(/*)47 b(double)f(complex)g(\(2)h(doubles\))e('M')i(*/)95
+5185 y(The)g(following)f(data)g(type)h(codes)f(are)h(also)g(supported)e
+(by)i(CFITSIO:)95 5297 y(#define)f(TINT)429 b(31)95 b(/*)47
+b(int)1335 b(*/)95 5410 y(#define)46 b(TSBYTE)333 b(12)95
+b(/*)47 b(8-bit)f(signed)g(byte,)428 b('S')47 b(*/)95
+5523 y(#define)f(TUINT)381 b(30)95 b(/*)47 b(unsigned)e(int)715
+b('V')47 b(*/)95 5636 y(#define)f(TUSHORT)285 b(20)95
+b(/*)47 b(unsigned)e(short)619 b('U')95 b(*/)p eop end
+%%Page: 17 25
+TeXDict begin 17 24 bop 0 299 a Fh(4.2.)72 b(CURRENT)30
+b(HEADER)h(D)m(A)-8 b(T)g(A)32 b(UNIT)e(\(CHDU\))1786
+b Fj(17)95 555 y Fe(#define)46 b(TULONG)333 b(40)95 b(/*)47
+b(unsigned)e(long)858 b(*/)95 781 y(The)47 b(following)f(data)g(type)h
+(code)g(is)g(only)f(for)h(use)g(with)g(fits\\_get\\_coltype)95
+894 y(#define)f(TINT32BIT)189 b(41)95 b(/*)47 b(signed)f(32-bit)g(int,)
+428 b('J')47 b(*/)0 1233 y(HDU)g(type)g(code)f(values)g(\(value)g
+(returned)g(when)h(moving)f(to)h(new)g(HDU\):)95 1458
+y(#define)f(IMAGE_HDU)93 b(0)i(/*)48 b(Primary)d(Array)i(or)g(IMAGE)f
+(HDU)h(*/)95 1571 y(#define)f(ASCII_TBL)93 b(1)i(/*)48
+b(ASCII)94 b(table)46 b(HDU)h(*/)95 1684 y(#define)f(BINARY_TBL)f(2)95
+b(/*)48 b(Binary)e(table)g(HDU)h(*/)95 1797 y(#define)f(ANY_HDU)142
+b(-1)94 b(/*)48 b(matches)d(any)i(type)g(of)g(HDU)g(*/)0
+2023 y(Column)f(name)h(and)g(string)f(matching)f(case-sensitivity:)95
+2249 y(#define)h(CASESEN)142 b(1)g(/*)48 b(do)f(case-sensitive)d
+(string)i(match)g(*/)95 2362 y(#define)g(CASEINSEN)g(0)142
+b(/*)48 b(do)f(case-insensitive)c(string)j(match)h(*/)0
+2588 y(Logical)f(states)g(\(if)h(TRUE)f(and)h(FALSE)g(are)g(not)g
+(already)e(defined\):)95 2813 y(#define)h(TRUE)h(1)95
+2926 y(#define)f(FALSE)h(0)0 3152 y(Values)f(to)h(represent)f
+(undefined)f(floating)g(point)i(numbers:)95 3378 y(#define)f
+(FLOATNULLVALUE)92 b(-9.11912E-36F)95 3491 y(#define)46
+b(DOUBLENULLVALUE)e(-9.1191291391491E-36)0 3717 y(Image)i(compression)f
+(algorithm)g(definitions)95 3942 y(#define)h(RICE_1)333
+b(11)95 4055 y(#define)46 b(GZIP_1)333 b(21)95 4168 y(#define)46
+b(PLIO_1)333 b(31)95 4281 y(#define)46 b(HCOMPRESS_1)93
+b(41)0 4664 y Ff(4.2)135 b(Curren)l(t)46 b(Header)f(Data)h(Unit)g
+(\(CHDU\))0 4924 y Fj(The)37 b(concept)h(of)g(the)f(Curren)m(t)g
+(Header)g(and)g(Data)i(Unit,)h(or)d(CHDU,)h(is)f(fundamen)m(tal)h(to)g
+(the)f(use)g(of)h(the)0 5036 y(CFITSIO)31 b(library)-8
+b(.)46 b(A)32 b(simple)h(FITS)e(image)j(ma)m(y)f(only)f(con)m(tain)i(a)
+e(single)h(Header)g(and)f(Data)h(unit)f(\(HDU\),)0 5149
+y(but)39 b(in)g(general)i(FITS)e(\014les)h(can)g(con)m(tain)h(m)m
+(ultiple)g(Header)f(Data)h(Units)f(\(also)h(kno)m(wn)e(as)h
+(`extensions'\),)0 5262 y(concatenated)c(one)f(after)f(the)h(other)f
+(in)g(the)g(\014le.)53 b(The)33 b(user)h(can)g(sp)s(ecify)g(whic)m(h)g
+(HDU)h(should)e(b)s(e)g(initially)0 5375 y(op)s(ened)j(at)i(run)d(time)
+j(b)m(y)f(giving)h(the)f(HDU)h(name)f(or)g(n)m(um)m(b)s(er)f(after)h
+(the)g(ro)s(ot)h(\014le)f(name.)60 b(F)-8 b(or)38 b(example,)0
+5488 y('m)m(y\014le.\014ts[4]')i(op)s(ens)d(the)h(5th)h(HDU)g(in)f(the)
+g(\014le)g(\(note)h(that)g(the)f(n)m(um)m(b)s(ering)f(starts)i(with)f
+(0\),)j(and)c('m)m(y-)0 5601 y(\014le.\014ts[EVENTS])k(op)s(ens)f(the)h
+(HDU)h(with)e(the)h(name)g('EVENTS')g(\(as)g(de\014ned)f(b)m(y)h(the)g
+(EXTNAME)g(or)0 5714 y(HDUNAME)35 b(k)m(eyw)m(ords\).)50
+b(If)33 b(no)g(HDU)h(is)f(sp)s(eci\014ed)g(then)g(CFITSIO)e(op)s(ens)i
+(the)g(\014rst)g(HDU)h(\(the)g(primary)p eop end
+%%Page: 18 26
+TeXDict begin 18 25 bop 0 299 a Fj(18)1763 b Fh(CHAPTER)29
+b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 555 y Fj(arra)m(y\))24
+b(b)m(y)e(default.)39 b(The)22 b(CFITSIO)f(routines)i(whic)m(h)g(read)f
+(and)g(write)i(data)f(only)g(op)s(erate)g(within)g(the)g(op)s(ened)0
+668 y(HDU,)32 b(Other)e(CFITSIO)f(routines)i(are)g(pro)m(vided)f(to)i
+(mo)m(v)m(e)g(to)f(and)f(op)s(en)g(an)m(y)h(other)g(existing)h(HDU)f
+(within)0 781 y(the)g(FITS)e(\014le)i(or)f(to)h(app)s(end)e(or)h
+(insert)g(new)g(HDUs)h(in)f(the)h(FITS)f(\014le.)0 1111
+y Ff(4.3)135 b(F)-11 b(unction)44 b(Names)i(and)f(V)-11
+b(ariable)46 b(Datat)l(yp)t(es)0 1361 y Fj(Most)33 b(of)f(the)g
+(CFITSIO)f(routines)h(ha)m(v)m(e)h(b)s(oth)e(a)i(short)e(name)h(as)h(w)
+m(ell)g(as)f(a)g(longer)h(descriptiv)m(e)g(name.)45 b(The)0
+1474 y(short)32 b(name)g(is)g(only)g(5)h(or)f(6)g(c)m(haracters)h(long)
+g(and)f(is)g(similar)g(to)h(the)f(subroutine)f(name)h(in)g(the)g(F)-8
+b(ortran-77)0 1587 y(v)m(ersion)38 b(of)g(FITSIO.)f(The)h(longer)g
+(name)g(is)g(more)g(descriptiv)m(e)h(and)e(it)h(is)g(recommended)g
+(that)g(it)h(b)s(e)e(used)0 1699 y(instead)31 b(of)f(the)h(short)f
+(name)g(to)h(more)g(clearly)h(do)s(cumen)m(t)e(the)g(source)h(co)s(de.)
+0 1860 y(Man)m(y)c(of)f(the)g(CFITSIO)f(routines)h(come)h(in)e
+(families)i(whic)m(h)f(di\013er)g(only)g(in)g(the)g(data)h(t)m(yp)s(e)f
+(of)g(the)g(asso)s(ciated)0 1973 y(parameter\(s\).)45
+b(The)31 b(data)h(t)m(yp)s(e)g(of)g(these)g(routines)f(is)h(indicated)g
+(b)m(y)f(the)h(su\016x)e(of)i(the)g(routine)f(name.)44
+b(The)0 2085 y(short)27 b(routine)h(names)g(ha)m(v)m(e)h(a)f(1)g(or)f
+(2)h(c)m(haracter)i(su\016x)c(\(e.g.,)31 b('j')c(in)h('\013pkyj'\))g
+(while)f(the)h(long)g(routine)g(names)0 2198 y(ha)m(v)m(e)k(a)e(4)h(c)m
+(haracter)h(or)e(longer)h(su\016x)f(as)g(sho)m(wn)g(in)g(the)h(follo)m
+(wing)h(table:)191 2432 y Fe(Long)285 b(Short)94 b(Data)191
+2545 y(Names)237 b(Names)94 b(Type)191 2658 y(-----)237
+b(-----)94 b(----)191 2771 y(_bit)381 b(x)190 b(bit)191
+2883 y(_byt)381 b(b)190 b(unsigned)46 b(byte)191 2996
+y(_sbyt)333 b(sb)142 b(signed)46 b(byte)191 3109 y(_sht)381
+b(i)190 b(short)47 b(integer)191 3222 y(_lng)381 b(j)190
+b(long)47 b(integer)191 3335 y(_lnglng)237 b(jj)142 b(8-byte)46
+b(LONGLONG)g(integer)g(\(see)g(note)h(below\))191 3448
+y(_usht)333 b(ui)142 b(unsigned)46 b(short)g(integer)191
+3561 y(_ulng)333 b(uj)142 b(unsigned)46 b(long)g(integer)191
+3674 y(_uint)333 b(uk)142 b(unsigned)46 b(int)h(integer)191
+3787 y(_int)381 b(k)190 b(int)47 b(integer)191 3900 y(_flt)381
+b(e)190 b(real)47 b(exponential)e(floating)g(point)i(\(float\))191
+4013 y(_fixflt)237 b(f)190 b(real)47 b(fixed-decimal)d(format)i
+(floating)g(point)g(\(float\))191 4125 y(_dbl)381 b(d)190
+b(double)46 b(precision)g(real)g(floating-point)e(\(double\))191
+4238 y(_fixdbl)237 b(g)190 b(double)46 b(precision)g(fixed-format)e
+(floating)i(point)g(\(double\))191 4351 y(_cmp)381 b(c)190
+b(complex)46 b(reals)g(\(pairs)h(of)g(float)f(values\))191
+4464 y(_fixcmp)237 b(fc)142 b(complex)46 b(reals,)g(fixed-format)f
+(floating)g(point)191 4577 y(_dblcmp)237 b(m)190 b(double)46
+b(precision)g(complex)f(\(pairs)i(of)g(double)f(values\))191
+4690 y(_fixdblcmp)93 b(fm)142 b(double)46 b(precision)g(complex,)f
+(fixed-format)g(floating)g(point)191 4803 y(_log)381
+b(l)190 b(logical)46 b(\(int\))191 4916 y(_str)381 b(s)190
+b(character)46 b(string)0 5149 y Fj(The)32 b(logical)j(data)f(t)m(yp)s
+(e)f(corresp)s(onds)e(to)j(`in)m(t')f(for)g(logical)i(k)m(eyw)m(ord)e
+(v)-5 b(alues,)34 b(and)e(`b)m(yte')i(for)f(logical)i(binary)0
+5262 y(table)40 b(columns.)67 b(In)39 b(other)g(w)m(ords,)i(the)f(v)-5
+b(alue)39 b(when)g(writing)g(a)h(logical)h(k)m(eyw)m(ord)f(m)m(ust)f(b)
+s(e)g(stored)g(in)g(an)0 5375 y(`in)m(t')g(v)-5 b(ariable,)40
+b(and)e(m)m(ust)f(b)s(e)g(stored)h(in)g(a)g(`c)m(har')h(arra)m(y)f
+(when)f(reading)h(or)f(writing)h(to)h(`L')f(columns)f(in)h(a)0
+5488 y(binary)c(table.)56 b(Implicit)35 b(data)h(t)m(yp)s(e)f(con)m(v)m
+(ersion)i(is)e(not)g(supp)s(orted)e(for)i(logical)j(table)e(columns,)g
+(but)e(is)h(for)0 5601 y(k)m(eyw)m(ords,)30 b(so)f(a)h(logical)h(k)m
+(eyw)m(ord)f(ma)m(y)f(b)s(e)g(read)f(and)h(cast)h(to)g(an)m(y)f(n)m
+(umerical)h(data)f(t)m(yp)s(e;)h(a)g(returned)d(v)-5
+b(alue)0 5714 y(=)30 b(0)h(indicates)g(false,)g(and)f(an)m(y)h(other)f
+(v)-5 b(alue)31 b(=)f(true.)p eop end
+%%Page: 19 27
+TeXDict begin 19 26 bop 0 299 a Fh(4.3.)72 b(FUNCTION)30
+b(NAMES)h(AND)g(V)-10 b(ARIABLE)30 b(D)m(A)-8 b(T)g(A)g(TYPES)1409
+b Fj(19)0 555 y(The)24 b(`in)m(t')i(data)g(t)m(yp)s(e)f(ma)m(y)h(b)s(e)
+e(2)h(b)m(ytes)h(long)f(on)g(some)g(old)g(PC)g(compilers,)h(but)f
+(otherwise)g(it)g(is)g(nearly)g(alw)m(a)m(ys)0 668 y(4)i(b)m(ytes)g
+(long.)40 b(Some)27 b(64-bit)h(mac)m(hines,)g(lik)m(e)g(the)f
+(Alpha/OSF,)g(de\014ne)f(the)h(`short',)h(`in)m(t',)h(and)d(`long')i
+(in)m(teger)0 781 y(data)j(t)m(yp)s(es)f(to)i(b)s(e)d(2,)i(4,)g(and)f
+(8)h(b)m(ytes)g(long,)g(resp)s(ectiv)m(ely)-8 b(.)0 941
+y(Because)40 b(there)e(is)h(no)f(univ)m(ersal)h(C)f(compiler)g
+(standard)g(for)g(the)h(name)f(of)h(the)f(8-b)m(yte)i(in)m(teger)g
+(datat)m(yp)s(e,)0 1054 y(the)33 b(\014tsio.h)h(include)f(\014le)g(t)m
+(yp)s(edef)7 b('s)33 b('LONGLONG')h(to)g(b)s(e)e(equiv)-5
+b(alen)m(t)35 b(to)f(an)f(appropriate)g(8-b)m(yte)i(in)m(teger)0
+1167 y(data)c(t)m(yp)s(e)g(on)f(eac)m(h)i(supp)s(orted)d(platform.)41
+b(F)-8 b(or)31 b(maxim)m(um)f(soft)m(w)m(are)i(p)s(ortabilit)m(y)g(it)f
+(is)f(recommended)g(that)0 1280 y(this)g(LONGLONG)g(datat)m(yp)s(e)h(b)
+s(e)e(used)g(to)i(de\014ne)e(8-b)m(yte)i(in)m(teger)h(v)-5
+b(ariables)30 b(rather)g(than)g(using)f(the)i(nativ)m(e)0
+1393 y(data)h(t)m(yp)s(e)g(name)f(on)h(a)f(particular)h(platform.)44
+b(On)31 b(most)h(32-bit)g(Unix)g(and)e(Mac)j(OS-X)e(op)s(erating)h
+(systems)0 1506 y(LONGLONG)h(is)f(equiv)-5 b(alen)m(t)34
+b(to)f(the)g(in)m(trinsic)g('long)g(long')h(8-b)m(yte)g(in)m(teger)f
+(datat)m(yp)s(e.)49 b(On)31 b(64-bit)j(systems)0 1619
+y(\(whic)m(h)e(curren)m(tly)g(includes)f(Alpha)h(OSF/1,)g(64-bit)h(Sun)
+e(Solaris,)h(64-bit)h(SGI)f(MIPS,)f(and)g(64-bit)i(Itanium)0
+1732 y(and)28 b(Opteron)g(PC)h(systems\),)g(LONGLONG)g(is)g(simply)f(t)
+m(yp)s(edef)7 b('ed)29 b(to)g(b)s(e)g(equiv)-5 b(alen)m(t)30
+b(to)f('long'.)42 b(Microsoft)0 1844 y(Visual)33 b(C++)e(V)-8
+b(ersion)33 b(6.0)g(do)s(es)f(not)g(de\014ne)g(a)h('long)g(long')g
+(data)g(t)m(yp)s(e,)g(so)f(LONGLONG)h(is)f(t)m(yp)s(edef)7
+b('ed)32 b(to)0 1957 y(b)s(e)e(equiv)-5 b(alen)m(t)32
+b(to)f(the)f(')p 853 1957 28 4 v 887 1957 V 66 w(in)m(t64')i(data)f(t)m
+(yp)s(e)g(on)f(32-bit)h(windo)m(ws)f(systems)h(when)e(using)h(Visual)h
+(C++.)0 2118 y(A)j(related)h(issue)e(that)i(a\013ects)g(the)f(p)s
+(ortabilit)m(y)g(of)g(soft)m(w)m(are)i(is)d(ho)m(w)h(to)h(prin)m(t)e
+(out)h(the)g(v)-5 b(alue)34 b(of)g(a)g('LONG-)0 2230
+y(LONG')e(v)-5 b(ariable)32 b(with)f(prin)m(tf.)44 b(Dev)m(elop)s(ers)
+33 b(ma)m(y)f(\014nd)e(it)i(con)m(v)m(enien)m(t)h(to)g(use)e(the)h
+(follo)m(wing)h(prepro)s(cessing)0 2343 y(statemen)m(ts)f(in)e(their)h
+(C)f(programs)g(to)h(handle)f(this)g(in)g(a)h(mac)m(hine-p)s(ortable)g
+(manner:)0 2593 y Fe(#if)47 b(defined\(_MSC_VER\))c(/*)k(Microsoft)e
+(Visual)i(C++)f(*/)477 2706 y(printf\("\045I64d",)e(longlongvalue\);)0
+2932 y(#elif)i(\(USE_LL_SUFFIX)e(==)j(1\))477 3045 y
+(printf\("\045lld",)d(longlongvalue\);)0 3271 y(#else)477
+3384 y(printf\("\045ld",)g(longlongvalue\);)0 3496 y(#endif)0
+3746 y Fj(Similarly)-8 b(,)32 b(the)f(name)g(of)g(the)h(C)e(utilit)m(y)
+j(routine)e(that)g(con)m(v)m(erts)i(a)e(c)m(haracter)i(string)d(of)i
+(digits)f(in)m(to)h(a)g(8-b)m(yte)0 3859 y(in)m(teger)g(v)-5
+b(alue)31 b(is)f(platform)g(dep)s(enden)m(t:)0 4109 y
+Fe(#if)47 b(defined\(_MSC_VER\))c(/*)k(Microsoft)e(Visual)i(C++)f(*/)
+286 4222 y(/*)i(VC++)e(6.0)h(does)g(not)g(seem)f(to)h(have)g(an)g
+(8-byte)f(conversion)f(routine)h(*/)0 4448 y(#elif)g(\(USE_LL_SUFFIX)e
+(==)j(1\))477 4561 y(longlongvalue)d(=)k(atoll\(*string\);)0
+4787 y(#else)477 4899 y(longlongvalue)c(=)k(atol\(*string\);)0
+5012 y(#endif)0 5262 y Fj(When)23 b(dealing)h(with)f(the)h(FITS)f(b)m
+(yte)h(data)g(t)m(yp)s(e)f(it)h(is)g(imp)s(ortan)m(t)f(to)h(remem)m(b)s
+(er)f(that)h(the)g(ra)m(w)f(v)-5 b(alues)24 b(\(b)s(efore)0
+5375 y(an)m(y)h(scaling)g(b)m(y)f(the)h(BSCALE)e(and)h(BZER)m(O,)g(or)h
+(TSCALn)d(and)i(TZER)m(On)f(k)m(eyw)m(ord)i(v)-5 b(alues\))25
+b(in)f(b)m(yte)h(arra)m(ys)0 5488 y(\(BITPIX)37 b(=)f(8\))h(or)f(b)m
+(yte)i(columns)e(\(TF)m(ORMn)h(=)f('B'\))h(are)g(in)m(terpreted)g(as)g
+(unsigned)e(b)m(ytes)i(with)g(v)-5 b(alues)0 5601 y(ranging)34
+b(from)g(0)g(to)h(255.)53 b(Some)34 b(C)g(compilers)h(de\014ne)e(a)h
+('c)m(har')h(v)-5 b(ariable)35 b(as)g(signed,)g(so)f(it)h(is)f(imp)s
+(ortan)m(t)g(to)0 5714 y(explicitly)e(declare)f(a)g(n)m(umeric)f(c)m
+(har)h(v)-5 b(ariable)31 b(as)g('unsigned)e(c)m(har')i(to)g(a)m(v)m
+(oid)h(an)m(y)f(am)m(biguit)m(y)p eop end
+%%Page: 20 28
+TeXDict begin 20 27 bop 0 299 a Fj(20)1763 b Fh(CHAPTER)29
+b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 555 y Fj(One)22
+b(feature)h(of)g(the)g(CFITSIO)e(routines)i(is)f(that)i(they)f(can)g
+(op)s(erate)g(on)f(a)h(`X')h(\(bit\))f(column)g(in)f(a)h(binary)f
+(table)0 668 y(as)33 b(though)f(it)h(w)m(ere)g(a)g(`B')g(\(b)m(yte\))h
+(column.)47 b(F)-8 b(or)33 b(example)g(a)g(`11X')h(data)f(t)m(yp)s(e)g
+(column)f(can)h(b)s(e)f(in)m(terpreted)0 781 y(the)c(same)h(as)f(a)g
+(`2B')i(column)e(\(i.e.,)i(2)e(unsigned)f(8-bit)i(b)m(ytes\).)41
+b(In)27 b(some)i(instances,)g(it)f(can)h(b)s(e)e(more)h(e\016cien)m(t)0
+894 y(to)j(read)f(and)g(write)h(whole)f(b)m(ytes)h(at)g(a)g(time,)g
+(rather)g(than)f(reading)g(or)h(writing)f(eac)m(h)i(individual)d(bit.)0
+1054 y(The)36 b(complex)i(and)e(double)h(precision)g(complex)h(data)g
+(t)m(yp)s(es)f(are)g(not)g(directly)h(supp)s(orted)d(in)i(ANSI)f(C)h
+(so)0 1167 y(these)g(data)g(t)m(yp)s(es)f(should)f(b)s(e)h(in)m
+(terpreted)h(as)f(pairs)g(of)h(\015oat)g(or)f(double)g(v)-5
+b(alues,)38 b(resp)s(ectiv)m(ely)-8 b(,)40 b(where)c(the)0
+1280 y(\014rst)30 b(v)-5 b(alue)30 b(in)h(eac)m(h)g(pair)f(is)h(the)f
+(real)h(part,)g(and)e(the)i(second)f(is)h(the)f(imaginary)h(part.)0
+1606 y Ff(4.4)135 b(Supp)t(ort)44 b(for)h(Unsigned)h(In)l(tegers)g(and)
+f(Signed)g(Bytes)0 1856 y Fj(Although)33 b(FITS)f(do)s(es)g(not)h
+(directly)h(supp)s(ort)d(unsigned)g(in)m(tegers)j(as)f(one)g(of)g(its)h
+(fundamen)m(tal)e(data)i(t)m(yp)s(es,)0 1969 y(FITS)27
+b(can)h(still)h(b)s(e)e(used)g(to)i(e\016cien)m(tly)h(store)e(unsigned)
+f(in)m(teger)i(data)g(v)-5 b(alues)28 b(in)g(images)h(and)e(binary)g
+(tables.)0 2082 y(The)42 b(con)m(v)m(en)m(tion)j(used)d(in)g(FITS)g
+(\014les)h(is)f(to)i(store)f(the)g(unsigned)e(in)m(tegers)j(as)f
+(signed)g(in)m(tegers)h(with)e(an)0 2195 y(asso)s(ciated)34
+b(o\013set)f(\(sp)s(eci\014ed)f(b)m(y)g(the)g(BZER)m(O)g(or)g(TZER)m
+(On)f(k)m(eyw)m(ord\).)47 b(F)-8 b(or)33 b(example,)g(to)g(store)g
+(unsigned)0 2308 y(16-bit)g(in)m(teger)g(v)-5 b(alues)32
+b(in)f(a)h(FITS)f(image)i(the)e(image)i(w)m(ould)f(b)s(e)e(de\014ned)h
+(as)h(a)g(signed)f(16-bit)i(in)m(teger)g(\(with)0 2421
+y(BITPIX)c(k)m(eyw)m(ord)g(=)g(SHOR)-8 b(T)p 1132 2421
+28 4 v 32 w(IMG)30 b(=)e(16\))j(with)d(the)i(k)m(eyw)m(ords)f(BSCALE)f
+(=)h(1.0)h(and)f(BZER)m(O)g(=)f(32768.)0 2534 y(Th)m(us)34
+b(the)h(unsigned)f(v)-5 b(alues)35 b(of)g(0,)i(32768,)h(and)d(65535,)j
+(for)d(example,)i(are)e(ph)m(ysically)h(stored)f(in)g(the)g(FITS)0
+2647 y(image)40 b(as)e(-32768,)43 b(0,)e(and)d(32767,)k(resp)s(ectiv)m
+(ely;)i(CFITSIO)37 b(automatically)k(adds)c(the)i(BZER)m(O)f(o\013set)h
+(to)0 2759 y(these)g(v)-5 b(alues)39 b(when)f(they)g(are)h(read.)65
+b(Similarly)-8 b(,)42 b(in)c(the)h(case)h(of)e(unsigned)g(32-bit)i(in)m
+(tegers)f(the)g(BITPIX)0 2872 y(k)m(eyw)m(ord)c(w)m(ould)f(b)s(e)g
+(equal)h(to)h(LONG)p 1392 2872 V 32 w(IMG)f(=)g(32)g(and)f(BZER)m(O)g
+(w)m(ould)h(b)s(e)f(equal)h(to)g(2147483648)k(\(i.e.)55
+b(2)0 2985 y(raised)30 b(to)h(the)g(31st)g(p)s(o)m(w)m(er\).)0
+3145 y(The)j(CFITSIO)g(in)m(terface)i(routines)f(will)g(e\016cien)m
+(tly)i(and)d(transparen)m(tly)i(apply)e(the)h(appropriate)g(o\013set)h
+(in)0 3258 y(these)29 b(cases)h(so)f(in)g(general)h(application)g
+(programs)f(do)g(not)g(need)f(to)i(b)s(e)e(concerned)h(with)g(ho)m(w)g
+(the)g(unsigned)0 3371 y(v)-5 b(alues)44 b(are)h(actually)h(stored)e
+(in)f(the)i(FITS)e(\014le.)82 b(As)44 b(a)g(con)m(v)m(enience)j(for)c
+(users,)k(CFITSIO)c(has)h(sev)m(eral)0 3484 y(prede\014ned)19
+b(constan)m(ts)j(for)f(the)g(v)-5 b(alue)21 b(of)g(BITPIX)g(\(USHOR)-8
+b(T)p 2189 3484 V 33 w(IMG,)21 b(ULONG)p 2790 3484 V
+33 w(IMG\))h(and)e(for)h(the)g(TF)m(ORMn)0 3597 y(v)-5
+b(alue)36 b(in)f(the)h(case)g(of)g(binary)f(tables)h(\(`U')h(and)e
+(`V'\))h(whic)m(h)f(programmers)g(can)h(use)f(when)g(creating)i(FITS)0
+3710 y(\014les)i(con)m(taining)h(unsigned)e(in)m(teger)i(v)-5
+b(alues.)66 b(The)39 b(follo)m(wing)h(co)s(de)f(fragmen)m(t)g
+(illustrates)h(ho)m(w)f(to)h(write)f(a)0 3823 y(FITS)30
+b(1-D)h(primary)f(arra)m(y)g(of)h(unsigned)e(16-bit)j(in)m(tegers:)286
+4034 y Fe(unsigned)46 b(short)g(uarray[100];)286 4147
+y(int)h(naxis,)f(status;)286 4260 y(long)h(naxes[10],)e(group,)h
+(firstelem,)f(nelements;)334 4373 y(...)286 4486 y(status)h(=)i(0;)286
+4599 y(naxis)f(=)g(1;)286 4712 y(naxes[0])f(=)h(100;)286
+4825 y(fits_create_img\(fptr,)42 b(USHORT_IMG,)j(naxis,)h(naxes,)g
+(&status\);)286 5051 y(firstelem)g(=)h(1;)286 5164 y(nelements)f(=)h
+(100;)286 5276 y(fits_write_img\(fptr,)c(TUSHORT,)i(firstelem,)g
+(nelements,)1241 5389 y(uarray,)h(&status\);)334 5502
+y(...)0 5714 y Fj(In)40 b(the)h(ab)s(o)m(v)m(e)i(example,)h(the)e(2nd)e
+(parameter)h(in)g(\014ts)p 1998 5714 V 33 w(create)p
+2267 5714 V 34 w(img)g(tells)h(CFITSIO)e(to)i(write)f(the)g(header)p
+eop end
+%%Page: 21 29
+TeXDict begin 21 28 bop 0 299 a Fh(4.4.)72 b(SUPPOR)-8
+b(T)30 b(F)m(OR)g(UNSIGNED)h(INTEGERS)f(AND)h(SIGNED)f(BYTES)942
+b Fj(21)0 555 y(k)m(eyw)m(ords)34 b(appropriate)g(for)f(an)g(arra)m(y)i
+(of)e(16-bit)i(unsigned)e(in)m(tegers)i(\(i.e.,)h(BITPIX)d(=)g(16)i
+(and)e(BZER)m(O)g(=)0 668 y(32768\).)41 b(Then)23 b(the)h(\014ts)p
+834 668 28 4 v 32 w(write)p 1068 668 V 33 w(img)h(routine)f(writes)f
+(the)i(arra)m(y)f(of)g(unsigned)f(short)g(in)m(tegers)i(\(uarra)m(y\))g
+(in)m(to)g(the)0 781 y(primary)f(arra)m(y)h(of)g(the)g(FITS)f(\014le.)
+39 b(Similarly)-8 b(,)27 b(a)e(32-bit)i(unsigned)c(in)m(teger)j(image)h
+(ma)m(y)e(b)s(e)f(created)i(b)m(y)f(setting)0 894 y(the)34
+b(second)f(parameter)h(in)f(\014ts)p 1130 894 V 33 w(create)p
+1399 894 V 34 w(img)h(equal)g(to)g(`ULONG)p 2330 894
+V 33 w(IMG')g(and)f(b)m(y)h(calling)g(the)g(\014ts)p
+3491 894 V 33 w(write)p 3726 894 V 33 w(img)0 1007 y(routine)j(with)f
+(the)h(second)f(parameter)h(=)f(TULONG)h(to)g(write)g(the)f(arra)m(y)h
+(of)g(unsigned)f(long)h(image)h(pixel)0 1120 y(v)-5 b(alues.)0
+1280 y(An)27 b(analogous)h(set)f(of)g(routines)g(are)g(a)m(v)-5
+b(ailable)30 b(for)c(reading)h(or)g(writing)g(unsigned)f(in)m(teger)i
+(v)-5 b(alues)28 b(and)e(signed)0 1393 y(b)m(yte)i(v)-5
+b(alues)28 b(in)g(a)g(FITS)f(binary)g(table)i(extension.)40
+b(When)28 b(sp)s(ecifying)f(the)h(TF)m(ORMn)g(k)m(eyw)m(ord)g(v)-5
+b(alue)28 b(whic)m(h)0 1506 y(de\014nes)36 b(the)h(format)g(of)g(a)h
+(column,)g(CFITSIO)d(recognized)k(3)e(additional)h(data)f(t)m(yp)s(e)g
+(co)s(des)g(b)s(esides)f(those)0 1619 y(already)30 b(de\014ned)f(in)g
+(the)h(FITS)f(standard:)40 b(`U')30 b(meaning)g(a)g(16-bit)h(unsigned)e
+(in)m(teger)i(column,)f(`V')g(for)g(a)g(32-)0 1732 y(bit)c(unsigned)e
+(in)m(teger)j(column,)g(and)e('S')g(for)g(a)h(signed)g(b)m(yte)g
+(column.)39 b(These)25 b(non-standard)g(data)h(t)m(yp)s(e)g(co)s(des)0
+1844 y(are)36 b(not)g(actually)i(written)e(in)m(to)g(the)g(FITS)g
+(\014le)f(but)h(instead)g(are)g(just)f(used)g(in)m(ternally)i(within)e
+(CFITSIO.)0 1957 y(The)30 b(follo)m(wing)i(co)s(de)e(fragmen)m(t)h
+(illustrates)h(ho)m(w)e(to)h(use)f(these)h(features:)286
+2214 y Fe(unsigned)46 b(short)g(uarray[100];)286 2327
+y(unsigned)g(int)95 b(varray[100];)286 2552 y(int)47
+b(colnum,)f(tfields,)g(status;)286 2665 y(long)h(nrows,)f(firstrow,)f
+(firstelem,)g(nelements,)g(pcount;)286 2891 y(char)i(extname[])e(=)j
+("Test_table";)521 b(/*)47 b(extension)f(name)g(*/)286
+3117 y(/*)i(define)e(the)h(name,)f(data)h(type,)f(and)h(physical)e
+(units)i(for)g(the)g(2)g(columns)f(*/)286 3230 y(char)h(*ttype[])f(=)h
+({)g("Col_1",)f("Col_2",)g("Col_3")f(};)286 3343 y(char)i(*tform[])f(=)
+h({)g("1U",)285 b("1V",)190 b("1S"};)94 b(/*)47 b(special)f(CFITSIO)g
+(codes)g(*/)286 3456 y(char)h(*tunit[])f(=)h({)g(")h(",)381
+b(")48 b(",)190 b(")47 b(")h(};)334 3569 y(...)525 3794
+y(/*)f(write)g(the)f(header)h(keywords)e(*/)286 3907
+y(status)94 b(=)48 b(0;)286 4020 y(nrows)142 b(=)48 b(1;)286
+4133 y(tfields)e(=)i(3)286 4246 y(pcount)94 b(=)48 b(0;)286
+4359 y(fits_create_tbl\(fptr,)42 b(BINARY_TBL,)j(nrows,)h(tfields,)g
+(ttype,)g(tform,)764 4472 y(tunit,)g(extname,)f(&status\);)525
+4698 y(/*)i(write)g(the)f(unsigned)g(shorts)g(to)h(the)g(1st)g(column)f
+(*/)286 4811 y(colnum)190 b(=)47 b(1;)286 4924 y(firstrow)94
+b(=)47 b(1;)286 5036 y(firstelem)f(=)h(1;)286 5149 y(nelements)f(=)h
+(100;)286 5262 y(fits_write_col\(fptr,)c(TUSHORT,)i(colnum,)h
+(firstrow,)f(firstelem,)668 5375 y(nelements,)g(uarray,)h(&status\);)
+525 5601 y(/*)h(now)g(write)f(the)h(unsigned)f(longs)g(to)h(the)g(2nd)g
+(column)f(*/)286 5714 y(colnum)190 b(=)47 b(2;)p eop
+end
+%%Page: 22 30
+TeXDict begin 22 29 bop 0 299 a Fj(22)1763 b Fh(CHAPTER)29
+b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)286 555 y Fe
+(fits_write_col\(fptr,)43 b(TUINT,)j(colnum,)g(firstrow,)f(firstelem,)
+668 668 y(nelements,)g(varray,)h(&status\);)334 781 y(...)0
+1027 y Fj(Note)22 b(that)g(the)f(non-standard)f(TF)m(ORM)h(v)-5
+b(alues)21 b(for)g(the)g(3)g(columns,)i(`U')e(and)g(`V',)h(tell)g
+(CFITSIO)d(to)j(write)f(the)0 1140 y(k)m(eyw)m(ords)27
+b(appropriate)f(for)g(unsigned)f(16-bit)j(and)d(unsigned)h(32-bit)h(in)
+m(tegers,)i(resp)s(ectiv)m(ely)e(\(i.e.,)i(TF)m(ORMn)0
+1252 y(=)39 b('1I')i(and)e(TZER)m(On)f(=)h(32678)j(for)e(unsigned)e
+(16-bit)j(in)m(tegers,)j(and)39 b(TF)m(ORMn)h(=)f('1J')h(and)f(TZER)m
+(On)0 1365 y(=)c(2147483648)40 b(for)35 b(unsigned)f(32-bit)i(in)m
+(tegers\).)57 b(The)35 b('S')g(TF)m(ORMn)g(v)-5 b(alue)36
+b(tells)h(CFITSIO)c(to)j(write)g(the)0 1478 y(k)m(eyw)m(ords)30
+b(appropriate)g(for)g(a)g(signed)g(8-bit)h(b)m(yte)f(column)g(with)f
+(TF)m(ORMn)h(=)g('1B')h(and)e(TZER)m(On)g(=)g(-128.)0
+1591 y(The)h(calls)h(to)h(\014ts)p 628 1591 28 4 v 32
+w(write)p 862 1591 V 33 w(col)f(then)f(write)h(the)g(arra)m(ys)f(of)h
+(unsigned)e(in)m(teger)j(v)-5 b(alues)31 b(to)g(the)f(columns.)0
+1923 y Ff(4.5)135 b(Dealing)47 b(with)e(Character)h(Strings)0
+2173 y Fj(The)36 b(c)m(haracter)j(string)d(v)-5 b(alues)38
+b(in)e(a)h(FITS)f(header)h(or)g(in)f(an)h(ASCI)s(I)e(column)i(in)f(a)i
+(FITS)e(table)h(extension)0 2286 y(are)i(generally)i(padded)d(out)h
+(with)g(non-signi\014can)m(t)h(space)f(c)m(haracters)i(\(ASCI)s(I)d
+(32\))i(to)g(\014ll)f(up)f(the)h(header)0 2399 y(record)33
+b(or)h(the)f(column)h(width.)49 b(When)33 b(reading)h(a)g(FITS)e
+(string)i(v)-5 b(alue,)35 b(the)e(CFITSIO)f(routines)i(will)f(strip)0
+2512 y(o\013)38 b(these)f(non-signi\014can)m(t)h(trailing)g(spaces)f
+(and)g(will)g(return)f(a)i(n)m(ull-terminated)g(string)f(v)-5
+b(alue)37 b(con)m(taining)0 2624 y(only)d(the)g(signi\014can)m(t)g(c)m
+(haracters.)52 b(Leading)34 b(spaces)g(in)g(a)g(FITS)f(string)g(are)h
+(considered)g(signi\014can)m(t.)52 b(If)33 b(the)0 2737
+y(string)i(con)m(tains)h(all)g(blanks,)g(then)e(CFITSIO)g(will)h
+(return)f(a)h(single)g(blank)g(c)m(haracter,)j(i.e,)f(the)e(\014rst)f
+(blank)0 2850 y(is)c(considered)f(to)i(b)s(e)e(signi\014can)m(t,)i
+(since)f(it)g(distinguishes)g(the)g(string)f(from)h(a)g(n)m(ull)f(or)h
+(unde\014ned)e(string,)i(but)0 2963 y(the)h(remaining)f(trailing)h
+(spaces)g(are)g(not)g(signi\014can)m(t.)0 3123 y(Similarly)-8
+b(,)41 b(when)c(writing)h(string)g(v)-5 b(alues)38 b(to)h(a)g(FITS)e
+(\014le)h(the)g(CFITSIO)f(routines)h(exp)s(ect)g(to)h(get)g(a)g(n)m
+(ull-)0 3236 y(terminated)33 b(string)g(as)g(input;)g(CFITSIO)e(will)i
+(pad)f(the)h(string)g(with)f(blanks)g(if)h(necessary)g(when)f(writing)g
+(it)0 3349 y(to)f(the)g(FITS)e(\014le.)0 3509 y(When)j(calling)i
+(CFITSIO)d(routines)i(that)g(return)e(a)i(c)m(haracter)h(string)f(it)g
+(is)f(vital)i(that)f(the)g(size)g(of)g(the)g(c)m(har)0
+3622 y(arra)m(y)38 b(b)s(e)g(large)h(enough)e(to)i(hold)e(the)h(en)m
+(tire)h(string)f(of)g(c)m(haracters,)k(otherwise)c(CFITSIO)e(will)i(o)m
+(v)m(erwrite)0 3735 y(whatev)m(er)d(memory)e(lo)s(cations)i(follo)m(w)g
+(the)f(c)m(har)h(arra)m(y)-8 b(,)35 b(p)s(ossibly)e(causing)h(the)g
+(program)g(to)g(execute)h(incor-)0 3848 y(rectly)-8 b(.)42
+b(This)30 b(t)m(yp)s(e)g(of)h(error)f(can)h(b)s(e)f(di\016cult)g(to)h
+(debug,)f(so)h(programmers)f(should)f(alw)m(a)m(ys)j(ensure)e(that)h
+(the)0 3961 y(c)m(har)c(arra)m(ys)g(are)g(allo)s(cated)i(enough)d
+(space)i(to)f(hold)g(the)f(longest)i(p)s(ossible)f(string,)g
+Fi(including)h Fj(the)f(terminat-)0 4074 y(ing)k(NULL)g(c)m(haracter.)
+45 b(The)30 b(\014tsio.h)h(\014le)h(con)m(tains)g(the)f(follo)m(wing)i
+(de\014ned)d(constan)m(ts)i(whic)m(h)f(programmers)0
+4187 y(are)g(strongly)g(encouraged)g(to)g(use)f(whenev)m(er)g(they)h
+(are)f(allo)s(cating)j(space)e(for)f(c)m(har)h(arra)m(ys:)0
+4432 y Fe(#define)46 b(FLEN_FILENAME)e(1025)j(/*)g(max)g(length)f(of)h
+(a)g(filename)f(*/)0 4545 y(#define)g(FLEN_KEYWORD)140
+b(72)95 b(/*)47 b(max)g(length)f(of)h(a)g(keyword)94
+b(*/)0 4658 y(#define)46 b(FLEN_CARD)284 b(81)95 b(/*)47
+b(length)f(of)h(a)h(FITS)e(header)g(card)h(*/)0 4771
+y(#define)f(FLEN_VALUE)236 b(71)95 b(/*)47 b(max)g(length)f(of)h(a)g
+(keyword)f(value)h(string)f(*/)0 4884 y(#define)g(FLEN_COMMENT)140
+b(73)95 b(/*)47 b(max)g(length)f(of)h(a)g(keyword)f(comment)g(string)g
+(*/)0 4997 y(#define)g(FLEN_ERRMSG)188 b(81)95 b(/*)47
+b(max)g(length)f(of)h(a)g(CFITSIO)f(error)h(message)e(*/)0
+5110 y(#define)h(FLEN_STATUS)188 b(31)95 b(/*)47 b(max)g(length)f(of)h
+(a)g(CFITSIO)f(status)g(text)h(string)f(*/)0 5355 y Fj(F)-8
+b(or)23 b(example,)h(when)d(declaring)i(a)f(c)m(har)g(arra)m(y)h(to)f
+(hold)g(the)g(v)-5 b(alue)22 b(string)g(of)g(FITS)f(k)m(eyw)m(ord,)k
+(use)c(the)h(follo)m(wing)0 5468 y(statemen)m(t:)191
+5714 y Fe(char)47 b(value[FLEN_VALUE];)p eop end
+%%Page: 23 31
+TeXDict begin 23 30 bop 0 299 a Fh(4.6.)72 b(IMPLICIT)29
+b(D)m(A)-8 b(T)g(A)32 b(TYPE)e(CONVERSION)1938 b Fj(23)0
+555 y(Note)41 b(that)f(FLEN)p 686 555 28 4 v 33 w(KEYW)m(ORD)g(is)f
+(longer)h(than)f(needed)g(for)g(the)h(nominal)f(8-c)m(haracter)j(k)m
+(eyw)m(ord)e(name)0 668 y(b)s(ecause)30 b(the)h(HIERAR)m(CH)f(con)m(v)m
+(en)m(tion)j(supp)s(orts)28 b(longer)j(k)m(eyw)m(ord)g(names.)0
+999 y Ff(4.6)135 b(Implicit)46 b(Data)g(T)l(yp)t(e)f(Con)l(v)l(ersion)0
+1249 y Fj(The)29 b(CFITSIO)e(routines)i(that)h(read)f(and)f(write)i(n)m
+(umerical)f(data)h(can)g(p)s(erform)d(implicit)j(data)g(t)m(yp)s(e)f
+(con)m(v)m(er-)0 1362 y(sion.)39 b(This)25 b(means)h(that)g(the)g(data)
+g(t)m(yp)s(e)g(of)g(the)g(v)-5 b(ariable)26 b(or)g(arra)m(y)g(in)f(the)
+h(program)g(do)s(es)f(not)h(need)f(to)i(b)s(e)e(the)0
+1475 y(same)g(as)f(the)h(data)g(t)m(yp)s(e)g(of)f(the)h(v)-5
+b(alue)25 b(in)f(the)g(FITS)g(\014le.)39 b(Data)26 b(t)m(yp)s(e)f(con)m
+(v)m(ersion)g(is)g(supp)s(orted)d(for)i(n)m(umerical)0
+1588 y(and)37 b(string)g(data)g(t)m(yp)s(es)h(\(if)f(the)g(string)g
+(con)m(tains)i(a)e(v)-5 b(alid)38 b(n)m(um)m(b)s(er)e(enclosed)h(in)g
+(quotes\))h(when)e(reading)i(a)0 1701 y(FITS)30 b(header)h(k)m(eyw)m
+(ord)g(v)-5 b(alue)31 b(and)f(for)h(n)m(umeric)g(v)-5
+b(alues)31 b(when)f(reading)h(or)f(writing)h(v)-5 b(alues)31
+b(in)g(the)g(primary)0 1814 y(arra)m(y)24 b(or)g(a)h(table)f(column.)39
+b(CFITSIO)22 b(returns)h(status)h(=)f(NUM)p 2267 1814
+V 34 w(O)m(VERFLO)m(W)i(if)e(the)h(con)m(v)m(erted)i(data)e(v)-5
+b(alue)0 1927 y(exceeds)33 b(the)g(range)g(of)g(the)f(output)g(data)i
+(t)m(yp)s(e.)47 b(Implicit)33 b(data)g(t)m(yp)s(e)g(con)m(v)m(ersion)h
+(is)e(not)h(supp)s(orted)d(within)0 2039 y(binary)g(tables)h(for)f
+(string,)g(logical,)k(complex,)d(or)f(double)g(complex)h(data)g(t)m(yp)
+s(es.)0 2200 y(In)g(addition,)h(an)m(y)f(table)h(column)f(ma)m(y)h(b)s
+(e)f(read)g(as)h(if)f(it)h(con)m(tained)g(string)f(v)-5
+b(alues.)44 b(In)31 b(the)g(case)i(of)e(n)m(umeric)0
+2313 y(columns)f(the)h(returned)e(string)h(will)h(b)s(e)f(formatted)h
+(using)e(the)i(TDISPn)e(displa)m(y)i(format)f(if)h(it)g(exists.)0
+2643 y Ff(4.7)135 b(Data)46 b(Scaling)0 2894 y Fj(When)38
+b(reading)f(n)m(umerical)i(data)f(v)-5 b(alues)38 b(in)f(the)h(primary)
+f(arra)m(y)h(or)g(a)g(table)h(column,)h(the)d(v)-5 b(alues)38
+b(will)h(b)s(e)0 3006 y(scaled)f(automatically)j(b)m(y)c(the)g(BSCALE)g
+(and)g(BZER)m(O)g(\(or)h(TSCALn)e(and)h(TZER)m(On\))f(header)h(v)-5
+b(alues)38 b(if)0 3119 y(they)31 b(are)f(presen)m(t)h(in)f(the)g
+(header.)41 b(The)30 b(scaled)h(data)g(that)g(is)f(returned)g(to)h(the)
+f(reading)h(program)f(will)h(ha)m(v)m(e)382 3361 y Fe(output)46
+b(value)g(=)i(\(FITS)e(value\))g(*)i(BSCALE)e(+)h(BZERO)0
+3603 y Fj(\(a)30 b(corresp)s(onding)e(form)m(ula)h(using)g(TSCALn)e
+(and)i(TZER)m(On)e(is)i(used)g(when)f(reading)h(from)g(table)h
+(columns\).)0 3716 y(In)h(the)i(case)g(of)f(in)m(teger)h(output)f(v)-5
+b(alues)32 b(the)h(\015oating)g(p)s(oin)m(t)f(scaled)g(v)-5
+b(alue)33 b(is)f(truncated)g(to)h(an)f(in)m(teger)h(\(not)0
+3828 y(rounded)i(to)j(the)f(nearest)h(in)m(teger\).)62
+b(The)36 b(\014ts)p 1673 3828 V 32 w(set)p 1816 3828
+V 34 w(bscale)i(and)e(\014ts)p 2430 3828 V 32 w(set)p
+2573 3828 V 34 w(tscale)i(routines)f(\(describ)s(ed)f(in)h(the)0
+3941 y(`Adv)-5 b(anced')29 b(c)m(hapter\))h(ma)m(y)g(b)s(e)e(used)h(to)
+g(o)m(v)m(erride)i(the)e(scaling)h(parameters)f(de\014ned)f(in)h(the)g
+(header)g(\(e.g.,)i(to)0 4054 y(turn)e(o\013)i(the)g(scaling)g(so)g
+(that)g(the)f(program)g(can)h(read)f(the)h(ra)m(w)f(unscaled)h(v)-5
+b(alues)30 b(from)g(the)h(FITS)e(\014le\).)0 4214 y(When)44
+b(writing)h(n)m(umerical)g(data)g(to)g(the)g(primary)f(arra)m(y)h(or)f
+(to)h(a)g(table)h(column)e(the)h(data)g(v)-5 b(alues)45
+b(will)0 4327 y(generally)29 b(b)s(e)f(automatically)j(in)m(v)m(ersely)
+f(scaled)f(b)m(y)f(the)g(v)-5 b(alue)29 b(of)f(the)h(BSCALE)e(and)h
+(BZER)m(O)g(\(or)h(TSCALn)0 4440 y(and)35 b(TZER)m(On\))f(k)m(eyw)m
+(ord)i(v)-5 b(alues)35 b(if)h(they)f(they)g(exist)i(in)e(the)g(header.)
+55 b(These)35 b(k)m(eyw)m(ords)h(m)m(ust)f(ha)m(v)m(e)i(b)s(een)0
+4553 y(written)31 b(to)h(the)g(header)f(b)s(efore)g(an)m(y)g(data)h(is)
+g(written)f(for)g(them)g(to)h(ha)m(v)m(e)h(an)m(y)e(immediate)i
+(e\013ect.)45 b(One)30 b(ma)m(y)0 4666 y(also)h(use)g(the)f(\014ts)p
+623 4666 V 33 w(set)p 767 4666 V 33 w(bscale)i(and)d(\014ts)p
+1367 4666 V 33 w(set)p 1511 4666 V 33 w(tscale)j(routines)f(to)g
+(de\014ne)f(or)g(o)m(v)m(erride)i(the)f(scaling)g(k)m(eyw)m(ords)g(in)0
+4779 y(the)e(header)g(\(e.g.,)i(to)e(turn)f(o\013)h(the)g(scaling)h(so)
+f(that)h(the)f(program)f(can)h(write)g(the)g(ra)m(w)g(unscaled)g(v)-5
+b(alues)29 b(in)m(to)0 4892 y(the)d(FITS)g(\014le\).)40
+b(If)25 b(scaling)i(is)g(p)s(erformed,)e(the)i(in)m(v)m(erse)g(scaled)g
+(output)e(v)-5 b(alue)27 b(that)g(is)f(written)g(in)m(to)h(the)g(FITS)0
+5005 y(\014le)j(will)h(ha)m(v)m(e)430 5246 y Fe(FITS)46
+b(value)h(=)g(\(\(input)f(value\))g(-)h(BZERO\))f(/)i(BSCALE)0
+5488 y Fj(\(a)39 b(corresp)s(onding)d(form)m(ula)i(using)g(TSCALn)e
+(and)h(TZER)m(On)g(is)h(used)f(when)f(writing)i(to)h(table)g
+(columns\).)0 5601 y(Rounding)34 b(to)i(the)g(nearest)g(in)m(teger,)i
+(rather)d(than)g(truncation,)j(is)d(p)s(erformed)f(when)g(writing)h(in)
+m(teger)i(data)0 5714 y(t)m(yp)s(es)30 b(to)i(the)e(FITS)g(\014le.)p
+eop end
+%%Page: 24 32
+TeXDict begin 24 31 bop 0 299 a Fj(24)1763 b Fh(CHAPTER)29
+b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 555 y Ff(4.8)135
+b(Supp)t(ort)44 b(for)h(IEEE)h(Sp)t(ecial)f(V)-11 b(alues)0
+807 y Fj(The)26 b(ANSI/IEEE-754)h(\015oating-p)s(oin)m(t)h(n)m(um)m(b)s
+(er)d(standard)g(de\014nes)h(certain)h(sp)s(ecial)g(v)-5
+b(alues)26 b(that)h(are)g(used)e(to)0 920 y(represen)m(t)j(suc)m(h)g
+(quan)m(tities)h(as)f(Not-a-Num)m(b)s(er)h(\(NaN\),)h(denormalized,)f
+(under\015o)m(w,)e(o)m(v)m(er\015o)m(w,)j(and)d(in\014nit)m(y)-8
+b(.)0 1033 y(\(See)29 b(the)f(App)s(endix)e(in)i(the)g(NOST)g(FITS)f
+(standard)g(or)h(the)g(NOST)g(FITS)f(User's)h(Guide)g(for)g(a)g(list)h
+(of)f(these)0 1146 y(v)-5 b(alues\).)55 b(The)34 b(CFITSIO)f(routines)i
+(that)g(read)g(\015oating)g(p)s(oin)m(t)g(data)h(in)e(FITS)g(\014les)h
+(recognize)h(these)g(IEEE)0 1259 y(sp)s(ecial)k(v)-5
+b(alues)39 b(and)g(b)m(y)g(default)g(in)m(terpret)h(the)f(o)m(v)m
+(er\015o)m(w)i(and)d(in\014nit)m(y)h(v)-5 b(alues)40
+b(as)f(b)s(eing)g(equiv)-5 b(alen)m(t)41 b(to)f(a)0 1372
+y(NaN,)35 b(and)e(con)m(v)m(ert)i(the)f(under\015o)m(w)e(and)h
+(denormalized)h(v)-5 b(alues)34 b(in)m(to)h(zeros.)51
+b(In)33 b(some)h(cases)h(programmers)0 1485 y(ma)m(y)42
+b(w)m(an)m(t)g(access)g(to)g(the)g(ra)m(w)f(IEEE)g(v)-5
+b(alues,)44 b(without)d(an)m(y)h(mo)s(di\014cation)g(b)m(y)f(CFITSIO.)f
+(This)g(can)i(b)s(e)0 1598 y(done)35 b(b)m(y)h(calling)h(the)e(\014ts)p
+935 1598 28 4 v 33 w(read)p 1140 1598 V 32 w(img)h(or)g(\014ts)p
+1593 1598 V 32 w(read)p 1797 1598 V 33 w(col)g(routines)g(while)f(sp)s
+(ecifying)g(0.0)i(as)f(the)f(v)-5 b(alue)36 b(of)g(the)0
+1711 y(NULL)-10 b(V)g(AL)37 b(parameter.)63 b(This)36
+b(will)i(force)g(CFITSIO)e(to)i(simply)f(pass)g(the)g(IEEE)g(v)-5
+b(alues)38 b(through)f(to)h(the)0 1824 y(application)24
+b(program)f(without)g(an)m(y)h(mo)s(di\014cation.)38
+b(This)23 b(is)g(not)g(fully)g(supp)s(orted)e(on)i(V)-10
+b(AX/VMS)24 b(mac)m(hines,)0 1937 y(ho)m(w)m(ev)m(er,)k(where)c(there)h
+(is)g(no)f(easy)i(w)m(a)m(y)g(to)f(b)m(ypass)g(the)g(default)g(in)m
+(terpretation)h(of)f(the)g(IEEE)f(sp)s(ecial)h(v)-5 b(alues.)0
+2049 y(This)27 b(is)i(also)g(not)f(supp)s(orted)e(when)i(reading)g
+(\015oating-p)s(oin)m(t)h(images)g(that)g(ha)m(v)m(e)h(b)s(een)d
+(compressed)h(with)g(the)0 2162 y(FITS)33 b(tiled)h(image)g
+(compression)f(con)m(v)m(en)m(tion)j(that)e(is)f(discussed)g(in)g
+(section)h(5.6;)i(the)e(pixels)f(v)-5 b(alues)34 b(in)f(tile)0
+2275 y(compressed)d(images)i(are)f(represen)m(ted)g(b)m(y)g(scaled)g
+(in)m(tegers,)h(and)e(a)i(reserv)m(ed)e(in)m(teger)j(v)-5
+b(alue)31 b(\(not)g(a)g(NaN\))h(is)0 2388 y(used)e(to)h(represen)m(t)f
+(unde\014ned)e(pixels.)0 2732 y Ff(4.9)135 b(Error)46
+b(Status)f(V)-11 b(alues)45 b(and)g(the)g(Error)g(Message)h(Stac)l(k)0
+2984 y Fj(Nearly)36 b(all)g(the)g(CFITSIO)e(routines)h(return)f(an)h
+(error)g(status)h(v)-5 b(alue)35 b(in)g(2)h(w)m(a)m(ys:)51
+b(as)36 b(the)f(v)-5 b(alue)36 b(of)g(the)f(last)0 3097
+y(parameter)29 b(in)f(the)g(function)g(call,)j(and)d(as)g(the)h
+(returned)e(v)-5 b(alue)29 b(of)f(the)h(function)f(itself.)41
+b(This)27 b(pro)m(vides)i(some)0 3210 y(\015exibilit)m(y)37
+b(in)e(the)h(w)m(a)m(y)h(programmers)e(can)h(test)h(if)f(an)f(error)h
+(o)s(ccurred,)g(as)g(illustrated)h(in)e(the)h(follo)m(wing)i(2)0
+3323 y(co)s(de)31 b(fragmen)m(ts:)191 3592 y Fe(if)47
+b(\()h(fits_write_record\(fptr,)41 b(card,)46 b(&status\))g(\))430
+3704 y(printf\(")f(Error)h(occurred)g(while)g(writing)g(keyword."\);)0
+3930 y(or,)191 4156 y(fits_write_record\(fptr,)41 b(card,)47
+b(&status\);)191 4269 y(if)g(\()h(status)e(\))430 4382
+y(printf\(")f(Error)h(occurred)g(while)g(writing)g(keyword."\);)0
+4650 y Fj(A)27 b(listing)h(of)g(all)g(the)f(CFITSIO)f(status)i(co)s(de)
+f(v)-5 b(alues)28 b(is)f(giv)m(en)h(at)g(the)g(end)e(of)i(this)f(do)s
+(cumen)m(t.)39 b(Programmers)0 4763 y(are)33 b(encouraged)g(to)g(use)f
+(the)h(sym)m(b)s(olic)f(mnemonics)g(\(de\014ned)g(in)g(\014tsio.h\))h
+(rather)f(than)g(the)h(actual)h(in)m(teger)0 4876 y(status)d(v)-5
+b(alues)30 b(to)i(impro)m(v)m(e)f(the)f(readabilit)m(y)i(of)f(their)f
+(co)s(de.)0 5036 y(The)i(CFITSIO)f(library)g(uses)h(an)g(`inherited)h
+(status')g(con)m(v)m(en)m(tion)h(for)e(the)h(status)f(parameter)h(whic)
+m(h)f(means)0 5149 y(that)37 b(if)f(a)h(routine)f(is)h(called)g(with)f
+(a)h(p)s(ositiv)m(e)g(input)f(v)-5 b(alue)36 b(of)h(the)g(status)f
+(parameter)h(as)g(input,)g(then)f(the)0 5262 y(routine)j(will)f(exit)i
+(immediately)g(without)e(c)m(hanging)i(the)e(v)-5 b(alue)39
+b(of)g(the)g(status)g(parameter.)65 b(Th)m(us,)40 b(if)f(one)0
+5375 y(passes)24 b(the)h(status)g(v)-5 b(alue)25 b(returned)f(from)g
+(eac)m(h)i(CFITSIO)d(routine)h(as)h(input)f(to)h(the)g(next)g(CFITSIO)e
+(routine,)0 5488 y(then)28 b(whenev)m(er)g(an)g(error)g(is)h(detected)g
+(all)h(further)d(CFITSIO)f(pro)s(cessing)i(will)h(cease.)42
+b(This)27 b(con)m(v)m(en)m(tion)k(can)0 5601 y(simplify)h(the)h(error)f
+(c)m(hec)m(king)j(in)d(application)i(programs)e(b)s(ecause)h(it)g(is)g
+(not)g(necessary)g(to)g(c)m(hec)m(k)i(the)d(v)-5 b(alue)0
+5714 y(of)30 b(the)g(status)h(parameter)f(after)h(ev)m(ery)g(single)f
+(CFITSIO)f(routine)h(call.)42 b(If)30 b(a)g(program)g(con)m(tains)h(a)g
+(sequence)p eop end
+%%Page: 25 33
+TeXDict begin 25 32 bop 0 299 a Fh(4.10.)73 b(V)-10 b(ARIABLE-LENGTH)31
+b(ARRA)-8 b(YS)30 b(IN)g(BINAR)-8 b(Y)32 b(T)-8 b(ABLES)1327
+b Fj(25)0 555 y(of)28 b(sev)m(eral)i(CFITSIO)d(calls,)j(one)e(can)h
+(just)e(c)m(hec)m(k)j(the)f(status)f(v)-5 b(alue)29 b(after)g(the)f
+(last)h(call.)41 b(Since)29 b(the)f(returned)0 668 y(status)33
+b(v)-5 b(alues)33 b(are)g(generally)h(distinctiv)m(e,)h(it)f(should)d
+(b)s(e)i(p)s(ossible)f(to)h(determine)g(whic)m(h)g(routine)g
+(originally)0 781 y(returned)c(the)i(error)f(status.)0
+941 y(CFITSIO)c(also)i(main)m(tains)h(an)e(in)m(ternal)h(stac)m(k)h(of)
+f(error)f(messages)h(\(80-c)m(haracter)j(maxim)m(um)c(length\))h(whic)m
+(h)0 1054 y(in)36 b(man)m(y)g(cases)h(pro)m(vide)f(a)g(more)g(detailed)
+i(explanation)f(of)f(the)g(cause)h(of)f(the)g(error)g(than)f(is)h(pro)m
+(vided)g(b)m(y)0 1167 y(the)k(error)e(status)i(n)m(um)m(b)s(er)e
+(alone.)69 b(It)39 b(is)h(recommended)f(that)g(the)h(error)f(message)h
+(stac)m(k)h(b)s(e)e(prin)m(ted)g(out)0 1280 y(whenev)m(er)g(a)g
+(program)g(detects)h(a)f(CFITSIO)e(error.)66 b(The)38
+b(function)h(\014ts)p 2653 1280 28 4 v 32 w(rep)s(ort)p
+2931 1280 V 32 w(error)g(will)g(prin)m(t)g(out)g(the)0
+1393 y(en)m(tire)31 b(error)e(message)h(stac)m(k,)i(or)d(alternativ)m
+(ely)k(one)d(ma)m(y)g(call)h(\014ts)p 2376 1393 V 32
+w(read)p 2580 1393 V 33 w(errmsg)e(to)h(get)h(the)f(error)f(messages)0
+1506 y(one)i(at)g(a)g(time.)0 1879 y Ff(4.10)136 b(V)-11
+b(ariable-Length)45 b(Arra)l(ys)g(in)g(Binary)g(T)-11
+b(ables)0 2138 y Fj(CFITSIO)33 b(pro)m(vides)i(easy-to-use)h(supp)s
+(ort)d(for)i(reading)g(and)f(writing)h(data)g(in)g(v)-5
+b(ariable)35 b(length)g(\014elds)g(of)g(a)0 2251 y(binary)g(table.)56
+b(The)35 b(v)-5 b(ariable)36 b(length)f(columns)g(ha)m(v)m(e)i(TF)m
+(ORMn)e(k)m(eyw)m(ord)h(v)-5 b(alues)35 b(of)h(the)f(form)g
+(`1Pt\(len\)')0 2363 y(where)25 b(`t')i(is)e(the)h(data)g(t)m(yp)s(e)g
+(co)s(de)g(\(e.g.,)j(I,)c(J,)h(E,)f(D,)i(etc.\))40 b(and)25
+b(`len')i(is)e(an)h(in)m(teger)h(sp)s(ecifying)e(the)h(maxim)m(um)0
+2476 y(length)k(of)f(the)h(v)m(ector)h(in)e(the)h(table.)41
+b(\(CFITSIO)28 b(also)j(supp)s(orts)c(the)j(exp)s(erimen)m(tal)g('Q')g
+(datat)m(yp)s(e,)h(whic)m(h)e(is)0 2589 y(iden)m(tical)37
+b(to)e(the)g('P')g(t)m(yp)s(e)g(except)h(that)g(is)f(supp)s(orts)e(is)h
+(a)i(64-bit)g(address)e(space)h(and)f(hence)h(m)m(uc)m(h)g(larger)0
+2702 y(data)28 b(structures\).)40 b(If)27 b(the)h(v)-5
+b(alue)28 b(of)g(`len')g(is)f(not)h(sp)s(eci\014ed)f(when)g(the)g
+(table)i(is)f(created)g(\(e.g.,)i(if)e(the)g(TF)m(ORM)0
+2815 y(k)m(eyw)m(ord)d(v)-5 b(alue)26 b(is)f(simply)g(sp)s(eci\014ed)f
+(as)h('1PE')h(instead)f(of)g('1PE\(400\))j(\),)e(then)f(CFITSIO)f(will)
+h(automatically)0 2928 y(scan)34 b(the)g(table)h(when)e(it)h(is)g
+(closed)h(to)f(determine)g(the)g(maxim)m(um)g(length)h(of)f(the)g(v)m
+(ector)h(and)e(will)i(app)s(end)0 3041 y(this)30 b(v)-5
+b(alue)31 b(to)g(the)g(TF)m(ORMn)f(v)-5 b(alue.)0 3201
+y(The)29 b(same)h(routines)g(that)g(read)f(and)g(write)h(data)g(in)g
+(an)f(ordinary)g(\014xed)g(length)h(binary)f(table)h(extension)h(are)0
+3314 y(also)41 b(used)d(for)i(v)-5 b(ariable)40 b(length)g(\014elds,)h
+(ho)m(w)m(ev)m(er,)j(the)c(routine)f(parameters)h(tak)m(e)h(on)f(a)g
+(sligh)m(tly)g(di\013eren)m(t)0 3427 y(in)m(terpretation)32
+b(as)e(describ)s(ed)g(b)s(elo)m(w.)0 3587 y(All)37 b(the)f(data)h(in)f
+(a)h(v)-5 b(ariable)37 b(length)f(\014eld)g(is)g(written)h(in)m(to)g
+(an)f(area)h(called)h(the)e(`heap')g(whic)m(h)g(follo)m(ws)i(the)0
+3700 y(main)31 b(\014xed-length)h(FITS)e(binary)h(table.)44
+b(The)31 b(size)h(of)f(the)h(heap,)f(in)g(b)m(ytes,)h(is)g(sp)s
+(eci\014ed)e(b)m(y)h(the)h(PCOUNT)0 3813 y(k)m(eyw)m(ord)21
+b(in)f(the)h(FITS)f(header.)37 b(When)20 b(creating)i(a)f(new)f(binary)
+g(table,)j(the)e(initial)h(v)-5 b(alue)21 b(of)f(PCOUNT)g(should)0
+3926 y(usually)27 b(b)s(e)h(set)g(to)g(zero.)41 b(CFITSIO)26
+b(will)i(recompute)g(the)g(size)g(of)g(the)g(heap)g(as)g(the)g(data)g
+(is)g(written)f(and)h(will)0 4039 y(automatically)g(up)s(date)c(the)i
+(PCOUNT)e(k)m(eyw)m(ord)h(v)-5 b(alue)26 b(when)e(the)h(table)h(is)f
+(closed.)40 b(When)25 b(writing)g(v)-5 b(ariable)0 4152
+y(length)34 b(data)g(to)g(a)g(table,)i(CFITSIO)c(will)h(automatically)k
+(extend)c(the)h(size)g(of)g(the)g(heap)f(area)h(if)g(necessary)-8
+b(,)0 4264 y(so)31 b(that)g(an)m(y)f(follo)m(wing)i(HDUs)f(do)f(not)h
+(get)h(o)m(v)m(erwritten.)0 4425 y(By)e(default)f(the)h(heap)f(data)i
+(area)f(starts)g(immediately)h(after)f(the)f(last)i(ro)m(w)e(of)h(the)g
+(\014xed-length)f(table.)42 b(This)0 4538 y(default)27
+b(starting)g(lo)s(cation)i(ma)m(y)e(b)s(e)f(o)m(v)m(erridden)h(b)m(y)g
+(the)g(THEAP)f(k)m(eyw)m(ord,)i(but)f(this)f(is)h(not)g(recommended.)0
+4650 y(If)34 b(additional)h(ro)m(ws)f(of)g(data)h(are)g(added)e(to)i
+(the)f(table,)j(CFITSIO)32 b(will)j(automatically)i(shift)c(the)i(the)f
+(heap)0 4763 y(do)m(wn)g(to)i(mak)m(e)f(ro)s(om)g(for)f(the)h(new)f(ro)
+m(ws,)i(but)e(it)i(is)e(ob)m(viously)i(b)s(e)e(more)h(e\016cien)m(t)h
+(to)f(initially)h(create)h(the)0 4876 y(table)31 b(with)e(the)h
+(necessary)g(n)m(um)m(b)s(er)f(of)h(blank)f(ro)m(ws,)h(so)g(that)g(the)
+g(heap)g(do)s(es)f(not)h(needed)g(to)g(b)s(e)f(constan)m(tly)0
+4989 y(mo)m(v)m(ed.)0 5149 y(When)36 b(writing)g(ro)m(w)g(of)h(data)f
+(to)h(a)g(v)-5 b(ariable)37 b(length)f(\014eld)g(the)g(en)m(tire)i
+(arra)m(y)e(of)g(v)-5 b(alues)37 b(for)f(a)g(giv)m(en)i(ro)m(w)e(of)0
+5262 y(the)30 b(table)h(m)m(ust)e(b)s(e)h(written)g(with)f(a)h(single)h
+(call)g(to)f(\014ts)p 1986 5262 V 33 w(write)p 2221 5262
+V 33 w(col.)42 b(The)29 b(total)i(length)g(of)f(the)g(arra)m(y)g(is)g
+(giv)m(en)0 5375 y(b)m(y)j(nelemen)m(ts)h(+)f(\014rstelem)g(-)g(1.)49
+b(Additional)34 b(elemen)m(ts)h(cannot)e(b)s(e)g(app)s(ended)e(to)j(an)
+f(existing)h(v)m(ector)h(at)f(a)0 5488 y(later)c(time)g(since)g(an)m(y)
+g(attempt)g(to)g(do)g(so)f(will)h(simply)f(o)m(v)m(erwrite)i(all)f(the)
+f(previously)h(written)f(data)h(and)f(the)0 5601 y(new)36
+b(data)h(will)g(b)s(e)f(written)g(to)h(a)g(new)f(area)h(of)g(the)g
+(heap.)58 b(The)36 b(\014ts)p 2496 5601 V 33 w(compress)p
+2889 5601 V 32 w(heap)g(routine)h(is)f(pro)m(vided)0
+5714 y(to)h(compress)g(the)g(heap)g(and)f(reco)m(v)m(er)i(an)m(y)f(un)m
+(used)f(space.)60 b(T)-8 b(o)37 b(a)m(v)m(oid)i(ha)m(ving)e(to)h(deal)f
+(with)f(this)h(issue,)h(it)p eop end
+%%Page: 26 34
+TeXDict begin 26 33 bop 0 299 a Fj(26)1763 b Fh(CHAPTER)29
+b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 555 y Fj(is)f(recommended)h
+(that)g(ro)m(ws)f(in)g(a)h(v)-5 b(ariable)32 b(length)g(\014eld)f
+(should)f(only)i(b)s(e)f(written)g(once.)45 b(An)31 b(exception)h(to)0
+668 y(this)e(general)h(rule)f(o)s(ccurs)g(when)f(setting)i(elemen)m(ts)
+h(of)e(an)g(arra)m(y)g(as)h(unde\014ned.)38 b(It)30 b(is)h(allo)m(w)m
+(ed)h(to)e(\014rst)g(write)0 781 y(a)e(dumm)m(y)f(v)-5
+b(alue)28 b(in)m(to)h(the)f(arra)m(y)h(with)e(\014ts)p
+1534 781 28 4 v 33 w(write)p 1769 781 V 33 w(col,)j(and)d(then)g(call)j
+(\014ts)p 2632 781 V 32 w(write)p 2866 781 V 33 w(col)p
+3009 781 V 34 w(n)m(ul)d(to)i(\015ag)f(the)g(desired)0
+894 y(elemen)m(ts)h(as)f(unde\014ned.)38 b(Note)29 b(that)g(the)f(ro)m
+(ws)g(of)g(a)g(table,)i(whether)d(\014xed)g(or)h(v)-5
+b(ariable)29 b(length,)g(do)f(not)g(ha)m(v)m(e)0 1007
+y(to)j(b)s(e)f(written)g(consecutiv)m(ely)j(and)d(ma)m(y)h(b)s(e)e
+(written)i(in)f(an)m(y)h(order.)0 1167 y(When)40 b(writing)h(to)g(a)g
+(v)-5 b(ariable)41 b(length)g(ASCI)s(I)e(c)m(haracter)j(\014eld)e
+(\(e.g.,)45 b(TF)m(ORM)c(=)f('1P)-8 b(A'\))43 b(only)d(a)h(single)0
+1280 y(c)m(haracter)22 b(string)e(can)h(b)s(e)e(written.)38
+b(The)20 b(`\014rstelem')g(and)g(`nelemen)m(ts')i(parameter)e(v)-5
+b(alues)21 b(in)f(the)g(\014ts)p 3526 1280 V 33 w(write)p
+3761 1280 V 33 w(col)0 1393 y(routine)35 b(are)h(ignored)f(and)f(the)i
+(n)m(um)m(b)s(er)d(of)j(c)m(haracters)g(to)g(write)f(is)h(simply)e
+(determined)h(b)m(y)g(the)g(length)h(of)0 1506 y(the)31
+b(input)e(n)m(ull-terminated)i(c)m(haracter)h(string.)0
+1666 y(The)21 b(\014ts)p 305 1666 V 33 w(write)p 540
+1666 V 33 w(descript)g(routine)h(is)f(useful)g(in)g(situations)i(where)
+e(m)m(ultiple)h(ro)m(ws)g(of)g(a)g(v)-5 b(ariable)22
+b(length)g(column)0 1779 y(ha)m(v)m(e)32 b(the)e(iden)m(tical)i(arra)m
+(y)f(of)g(v)-5 b(alues.)41 b(One)30 b(can)g(simply)g(write)h(the)f
+(arra)m(y)h(once)g(for)g(the)f(\014rst)g(ro)m(w,)g(and)g(then)0
+1892 y(use)c(\014ts)p 280 1892 V 32 w(write)p 514 1892
+V 33 w(descript)g(to)g(write)g(the)g(same)h(descriptor)e(v)-5
+b(alues)27 b(in)m(to)g(the)f(other)g(ro)m(ws;)h(all)g(the)f(ro)m(ws)g
+(will)g(then)0 2005 y(p)s(oin)m(t)k(to)h(the)g(same)g(storage)h(lo)s
+(cation)g(th)m(us)e(sa)m(ving)h(disk)f(space.)0 2165
+y(When)35 b(reading)g(from)f(a)i(v)-5 b(ariable)35 b(length)h(arra)m(y)
+f(\014eld)g(one)g(can)g(only)h(read)e(as)i(man)m(y)f(elemen)m(ts)h(as)f
+(actually)0 2278 y(exist)i(in)e(that)i(ro)m(w)e(of)h(the)g(table;)k
+(reading)c(do)s(es)g(not)g(automatically)i(con)m(tin)m(ue)f(with)f(the)
+g(next)g(ro)m(w)g(of)g(the)0 2391 y(table)29 b(as)f(o)s(ccurs)g(when)f
+(reading)h(an)g(ordinary)g(\014xed)f(length)h(table)h(\014eld.)40
+b(A)m(ttempts)29 b(to)g(read)f(more)g(than)g(this)0 2503
+y(will)k(cause)h(an)e(error)h(status)g(to)g(b)s(e)f(returned.)44
+b(One)32 b(can)g(determine)g(the)g(n)m(um)m(b)s(er)e(of)i(elemen)m(ts)h
+(in)f(eac)m(h)h(ro)m(w)0 2616 y(of)e(a)f(v)-5 b(ariable)31
+b(column)g(with)f(the)g(\014ts)p 1329 2616 V 33 w(read)p
+1534 2616 V 32 w(descript)h(routine.)0 3218 y Ff(4.11)136
+b(Multiple)45 b(Access)g(to)g(the)g(Same)h(FITS)d(File)0
+3521 y Fj(CFITSIO)35 b(supp)s(orts)g(sim)m(ultaneous)i(read)f(and)g
+(write)h(access)g(to)h(m)m(ultiple)f(HDUs)g(in)f(the)h(same)g(FITS)f
+(\014le.)0 3634 y(Th)m(us,)26 b(one)f(can)h(op)s(en)f(the)h(same)f
+(FITS)g(\014le)h(t)m(wice)h(within)d(a)i(single)g(program)g(and)e(mo)m
+(v)m(e)j(to)g(2)e(di\013eren)m(t)h(HDUs)0 3747 y(in)d(the)h(\014le,)h
+(and)e(then)g(read)h(and)f(write)h(data)g(or)f(k)m(eyw)m(ords)h(to)h
+(the)e(2)h(extensions)g(just)f(as)h(if)g(one)f(w)m(ere)h(accessing)0
+3860 y(2)k(completely)h(separate)g(FITS)e(\014les.)40
+b(Since)27 b(in)h(general)g(it)g(is)g(not)g(p)s(ossible)f(to)i(ph)m
+(ysically)f(op)s(en)f(the)h(same)g(\014le)0 3973 y(t)m(wice)e(and)e
+(then)g(exp)s(ect)h(to)g(b)s(e)f(able)h(to)h(sim)m(ultaneously)f(\(or)g
+(in)f(alternating)i(succession\))g(write)e(to)i(2)e(di\013eren)m(t)0
+4086 y(lo)s(cations)35 b(in)f(the)g(\014le,)h(CFITSIO)d(recognizes)k
+(when)d(the)h(\014le)f(to)i(b)s(e)e(op)s(ened)g(\(in)h(the)g(call)h(to)
+g(\014ts)p 3499 4086 V 32 w(op)s(en)p 3721 4086 V 32
+w(\014le\))0 4199 y(has)29 b(already)g(b)s(een)f(op)s(ened)g(and)h
+(instead)g(of)g(actually)h(op)s(ening)e(the)i(\014le)e(again,)j(just)d
+(logically)k(links)c(the)h(new)0 4312 y(\014le)e(to)h(the)f(old)h
+(\014le.)39 b(\(This)27 b(of)g(course)h(do)s(es)e(not)i(prev)m(en)m(t)f
+(the)h(same)f(\014le)g(from)g(b)s(eing)g(sim)m(ultaneously)h(op)s(ened)
+0 4425 y(b)m(y)g(more)h(than)f(one)g(program\).)40 b(Then)28
+b(b)s(efore)g(CFITSIO)e(reads)i(or)h(writes)f(to)h(either)g
+(\(logical\))i(\014le,)e(it)g(mak)m(es)0 4538 y(sure)i(that)h(an)m(y)g
+(mo)s(di\014cations)g(made)g(to)g(the)g(other)g(\014le)f(ha)m(v)m(e)i
+(b)s(een)e(completely)i(\015ushed)d(from)h(the)h(in)m(ternal)0
+4650 y(bu\013ers)f(to)h(the)h(\014le.)45 b(Th)m(us,)31
+b(in)h(principle,)g(one)g(could)g(op)s(en)g(a)g(\014le)g(t)m(wice,)i
+(in)e(one)g(case)h(p)s(oin)m(ting)f(to)h(the)f(\014rst)0
+4763 y(extension)27 b(and)e(in)h(the)g(other)h(p)s(oin)m(ting)f(to)h
+(the)f(2nd)f(extension)i(and)f(then)f(write)i(data)f(to)h(b)s(oth)f
+(extensions,)h(in)0 4876 y(an)m(y)33 b(order,)f(without)h(danger)f(of)g
+(corrupting)g(the)h(\014le.)46 b(There)32 b(ma)m(y)h(b)s(e)f(some)h
+(e\016ciency)g(p)s(enalties)g(in)f(doing)0 4989 y(this)26
+b(ho)m(w)m(ev)m(er,)j(since)e(CFITSIO)e(has)i(to)g(\015ush)e(all)i(the)
+g(in)m(ternal)g(bu\013ers)f(related)h(to)h(one)e(\014le)h(b)s(efore)f
+(switc)m(hing)0 5102 y(to)33 b(the)g(other,)h(so)f(it)h(w)m(ould)e
+(still)i(b)s(e)e(pruden)m(t)f(to)j(minimize)f(the)g(n)m(um)m(b)s(er)e
+(of)i(times)h(one)f(switc)m(hes)g(bac)m(k)h(and)0 5215
+y(forth)c(b)s(et)m(w)m(een)h(doing)f(I/O)h(to)g(di\013eren)m(t)g(HDUs)g
+(in)f(the)g(same)h(\014le.)0 5375 y(Some)f(restriction)h(apply:)40
+b(a)30 b(FITS)f(\014le)h(cannot)g(b)s(e)f(op)s(ened)h(the)g(\014rst)f
+(time)h(with)g(READONL)-8 b(Y)30 b(access,)i(and)0 5488
+y(then)i(op)s(ened)g(a)h(second)g(time)g(with)g(READ)m(WRITE)g(access,)
+i(b)s(ecause)e(this)f(ma)m(y)i(b)s(e)e(ph)m(yically)h(imp)s(ossible)0
+5601 y(\(e.g.,)g(if)e(the)g(\014le)f(resides)h(on)f(read-only)h(media)g
+(suc)m(h)g(as)g(a)g(CDR)m(OM\).)g(Also,)h(in)f(m)m(ulti-threaded)g(en)m
+(virono-)0 5714 y(men)m(ts,)e(one)g(should)e(nev)m(er)i(op)s(en)e(the)i
+(same)g(\014le)f(with)g(write)h(access)g(in)g(di\013eren)m(t)f
+(threads.)p eop end
+%%Page: 27 35
+TeXDict begin 27 34 bop 0 299 a Fh(4.12.)73 b(WHEN)31
+b(THE)f(FINAL)g(SIZE)f(OF)i(THE)f(FITS)f(HDU)i(IS)f(UNKNO)m(WN)978
+b Fj(27)0 555 y Ff(4.12)136 b(When)44 b(the)h(Final)h(Size)f(of)g(the)g
+(FITS)f(HDU)h(is)g(Unkno)l(wn)0 816 y Fj(It)27 b(is)h(not)f(required)f
+(to)i(kno)m(w)f(the)h(total)h(size)f(of)f(a)h(FITS)e(data)i(arra)m(y)g
+(or)f(table)h(b)s(efore)f(b)s(eginning)f(to)i(write)g(the)0
+928 y(data)k(to)f(the)g(FITS)f(\014le.)43 b(In)30 b(the)h(case)h(of)f
+(the)g(primary)f(arra)m(y)h(or)g(an)f(image)j(extension,)e(one)h
+(should)d(initially)0 1041 y(create)i(the)e(arra)m(y)h(with)e(the)i
+(size)g(of)f(the)g(highest)g(dimension)g(\(largest)i(NAXISn)d(k)m(eyw)m
+(ord\))i(set)g(to)g(a)f(dumm)m(y)0 1154 y(v)-5 b(alue,)26
+b(suc)m(h)e(as)g(1.)39 b(Then)23 b(after)i(all)g(the)g(data)f(ha)m(v)m
+(e)i(b)s(een)d(written)h(and)g(the)g(true)g(dimensions)g(are)g(kno)m
+(wn,)h(then)0 1267 y(the)33 b(NAXISn)f(v)-5 b(alue)33
+b(should)f(b)s(e)g(up)s(dated)g(using)g(the)h(\014ts)p
+2069 1267 28 4 v 33 w(up)s(date)p 2378 1267 V 32 w(k)m(ey)g(routine)g
+(b)s(efore)g(mo)m(ving)g(to)h(another)0 1380 y(extension)d(or)f
+(closing)i(the)e(FITS)g(\014le.)0 1540 y(When)f(writing)g(to)g(FITS)g
+(tables,)h(CFITSIO)d(automatically)32 b(k)m(eeps)e(trac)m(k)g(of)f(the)
+g(highest)h(ro)m(w)f(n)m(um)m(b)s(er)e(that)0 1653 y(is)32
+b(written)g(to,)h(and)e(will)h(increase)h(the)f(size)h(of)f(the)g
+(table)g(if)g(necessary)-8 b(.)46 b(CFITSIO)30 b(will)i(also)h
+(automatically)0 1766 y(insert)j(space)h(in)f(the)g(FITS)f(\014le)i(if)
+f(necessary)-8 b(,)39 b(to)e(ensure)e(that)i(the)f(data)h('heap',)h(if)
+e(it)h(exists,)h(and/or)f(an)m(y)0 1879 y(additional)29
+b(HDUs)g(that)g(follo)m(w)g(the)g(table)g(do)f(not)h(get)g(o)m(v)m
+(erwritten)h(as)e(new)g(ro)m(ws)g(are)h(written)f(to)h(the)g(table.)0
+2039 y(As)37 b(a)h(general)g(rule)f(it)h(is)f(b)s(est)g(to)h(sp)s
+(ecify)f(the)h(initial)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)f(=)g(0)g(when)
+g(the)g(table)h(is)g(created,)0 2152 y(then)g(let)h(CFITSIO)e(k)m(eep)i
+(trac)m(k)g(of)g(the)f(n)m(um)m(b)s(er)f(of)i(ro)m(ws)f(that)h(are)f
+(actually)i(written.)65 b(The)38 b(application)0 2265
+y(program)e(should)f(not)i(man)m(ually)g(up)s(date)e(the)i(n)m(um)m(b)s
+(er)e(of)h(ro)m(ws)g(in)g(the)h(table)g(\(as)g(giv)m(en)g(b)m(y)f(the)h
+(NAXIS2)0 2378 y(k)m(eyw)m(ord\))j(since)f(CFITSIO)e(do)s(es)i(this)g
+(automatically)-8 b(.)69 b(If)38 b(a)i(table)f(is)g(initially)i
+(created)f(with)e(more)h(than)0 2491 y(zero)i(ro)m(ws,)j(then)c(this)h
+(will)f(usually)h(b)s(e)f(considered)g(as)h(the)g(minim)m(um)f(size)h
+(of)g(the)g(table,)j(ev)m(en)d(if)g(few)m(er)0 2604 y(ro)m(ws)30
+b(are)g(actually)h(written)f(to)h(the)f(table.)41 b(Th)m(us,)30
+b(if)f(a)i(table)f(is)g(initially)h(created)g(with)f(NAXIS2)g(=)g(20,)h
+(and)0 2717 y(CFITSIO)g(only)i(writes)f(10)i(ro)m(ws)e(of)h(data)g(b)s
+(efore)f(closing)i(the)f(table,)h(then)e(NAXIS2)h(will)g(remain)f
+(equal)h(to)0 2829 y(20.)50 b(If)33 b(ho)m(w)m(ev)m(er,)i(30)g(ro)m(ws)
+e(of)g(data)h(are)g(written)f(to)h(this)f(table,)i(then)e(NAXIS2)h
+(will)f(b)s(e)g(increased)g(from)g(20)0 2942 y(to)f(30.)44
+b(The)31 b(one)g(exception)i(to)f(this)f(automatic)i(up)s(dating)d(of)h
+(the)h(NAXIS2)f(k)m(eyw)m(ord)h(is)f(if)g(the)h(application)0
+3055 y(program)c(directly)g(mo)s(di\014es)f(the)i(v)-5
+b(alue)28 b(of)g(NAXIS2)g(\(up)f(or)h(do)m(wn\))g(itself)h(just)e(b)s
+(efore)h(closing)h(the)f(table.)41 b(In)0 3168 y(this)28
+b(case,)i(CFITSIO)d(do)s(es)h(not)h(up)s(date)e(NAXIS2)i(again,)h
+(since)f(it)g(assumes)f(that)h(the)f(application)i(program)0
+3281 y(m)m(ust)i(ha)m(v)m(e)h(had)f(a)g(go)s(o)s(d)g(reason)h(for)f(c)m
+(hanging)h(the)f(v)-5 b(alue)33 b(directly)-8 b(.)47
+b(This)31 b(is)h(not)h(recommended,)f(ho)m(w)m(ev)m(er,)0
+3394 y(and)j(is)h(only)g(pro)m(vided)g(for)f(bac)m(kw)m(ard)h
+(compatibilit)m(y)i(with)e(soft)m(w)m(are)h(that)g(initially)g(creates)
+g(a)f(table)h(with)0 3507 y(a)d(large)h(n)m(um)m(b)s(er)e(of)h(ro)m
+(ws,)h(than)f(decreases)g(the)h(NAXIS2)f(v)-5 b(alue)34
+b(to)h(the)f(actual)h(smaller)g(v)-5 b(alue)34 b(just)f(b)s(efore)0
+3620 y(closing)e(the)g(table.)0 4004 y Ff(4.13)136 b(CFITSIO)44
+b(Size)h(Limitations)0 4264 y Fj(CFITSIO)29 b(places)j(v)m(ery)f(few)g
+(restrictions)g(on)g(the)g(size)g(of)g(FITS)f(\014les)h(that)g(it)h
+(reads)e(or)h(writes.)42 b(There)30 b(are)i(a)0 4377
+y(few)e(limits,)h(ho)m(w)m(ev)m(er,)h(that)f(ma)m(y)g(a\013ect)h(some)f
+(extreme)g(cases:)0 4538 y(1.)43 b(The)31 b(maxim)m(um)g(n)m(um)m(b)s
+(er)f(of)h(FITS)f(\014les)h(that)h(ma)m(y)g(b)s(e)e(sim)m(ultaneously)i
+(op)s(ened)f(b)m(y)g(CFITSIO)e(is)i(set)h(b)m(y)0 4650
+y(NMAXFILES)i(as)g(de\014ned)f(in)h(\014tsio2.h.)52 b(It)34
+b(is)g(curren)m(tly)g(set)h(=)f(300)h(b)m(y)f(default.)52
+b(CFITSIO)32 b(will)i(allo)s(cate)0 4763 y(ab)s(out)f(80)g(*)h
+(NMAXFILES)f(b)m(ytes)g(of)g(memory)g(for)g(in)m(ternal)g(use.)48
+b(Note)34 b(that)g(the)f(underlying)f(C)g(compiler)0
+4876 y(or)39 b(op)s(erating)h(system,)j(ma)m(y)d(ha)m(v)m(e)g(a)g
+(smaller)g(limit)h(on)e(the)h(n)m(um)m(b)s(er)e(of)i(op)s(ened)e
+(\014les.)68 b(The)39 b(C)h(sym)m(b)s(olic)0 4989 y(constan)m(t)31
+b(F)m(OPEN)p 690 4989 V 34 w(MAX)f(is)g(in)m(tended)g(to)h(de\014ne)e
+(the)i(maxim)m(um)f(n)m(um)m(b)s(er)e(of)j(\014les)f(that)g(ma)m(y)h
+(op)s(en)e(at)i(once)0 5102 y(\(including)g(an)m(y)g(other)g(text)h(or)
+f(binary)f(\014les)h(that)h(ma)m(y)f(b)s(e)g(op)s(en,)f(not)h(just)g
+(FITS)f(\014les\).)43 b(On)30 b(some)h(systems)0 5215
+y(it)g(has)f(b)s(een)g(found)f(that)i(gcc)g(supp)s(orts)e(a)h(maxim)m
+(um)h(of)f(255)i(op)s(ened)e(\014les.)0 5375 y(2.)67
+b(It)40 b(used)e(to)i(b)s(e)e(common)i(for)f(computer)g(systems)g(to)h
+(only)f(supp)s(ort)f(disk)g(\014les)h(up)f(to)i(2**31)i(b)m(ytes)d(=)0
+5488 y(2.1)k(GB)g(in)f(size,)47 b(but)41 b(most)i(systems)f(no)m(w)g
+(supp)s(ort)f(larger)i(\014les.)76 b(CFITSIO)41 b(can)i(optionally)g
+(read)g(and)0 5601 y(write)37 b(these)h(so-called)h('large)f(\014les')g
+(that)f(are)h(greater)g(than)f(2.1)h(GB)g(on)f(platforms)g(where)g
+(they)g(are)h(sup-)0 5714 y(p)s(orted,)43 b(but)d(this)g(usually)h
+(requires)f(that)i(sp)s(ecial)f(compiler)g(option)g(\015ags)g(b)s(e)f
+(sp)s(eci\014ed)g(to)i(turn)d(on)i(this)p eop end
+%%Page: 28 36
+TeXDict begin 28 35 bop 0 299 a Fj(28)1763 b Fh(CHAPTER)29
+b(4.)112 b(PR)m(OGRAMMING)32 b(GUIDELINES)0 555 y Fj(option.)69
+b(On)39 b(lin)m(ux)h(and)f(solaris)i(systems)f(the)g(compiler)g
+(\015ags)g(are)g('-D)p 2617 555 28 4 v 34 w(LAR)m(GEFILE)p
+3184 555 V 33 w(SOUR)m(CE')f(and)g(`-)0 668 y(D)p 74
+668 V 33 w(FILE)p 318 668 V 33 w(OFFSET)p 719 668 V 32
+w(BITS=64'.)i(These)29 b(\015ags)h(ma)m(y)g(also)h(w)m(ork)f(on)g
+(other)g(platforms)f(but)g(this)h(has)g(not)g(b)s(een)0
+781 y(tested.)43 b(Starting)31 b(with)f(v)m(ersion)h(3.0)h(of)f
+(CFITSIO,)f(the)h(default)f(Mak)m(e\014le)j(that)e(is)g(distributed)f
+(with)g(CFIT-)0 894 y(SIO)h(will)h(include)g(these)g(2)g(compiler)h
+(\015ags)f(when)e(building)h(on)h(Solaris)g(and)g(Lin)m(ux)f(PC)g
+(systems.)45 b(Users)32 b(on)0 1007 y(other)g(platforms)g(will)g(need)f
+(to)i(add)e(these)h(compiler)h(\015ags)f(man)m(ually)g(if)g(they)g(w)m
+(an)m(t)g(to)h(supp)s(ort)d(large)j(\014les.)0 1120 y(In)j(most)i
+(cases)g(it)g(app)s(ears)e(that)i(it)g(is)f(not)h(necessary)f(to)h
+(include)f(these)h(compiler)g(\015ags)f(when)f(compiling)0
+1233 y(application)c(co)s(de)e(that)h(call)h(the)e(CFITSIO)f(library)h
+(routines.)0 1393 y(When)i(CFITSIO)e(is)i(built)g(with)g(large)h
+(\014le)f(supp)s(ort)e(\(e.g.,)35 b(on)d(Solaris)g(and)f(Lin)m(ux)h(PC)
+f(system)h(b)m(y)g(default\))0 1506 y(then)e(it)h(can)g(read)f(and)g
+(write)g(FITS)g(data)h(\014les)f(on)h(disk)e(that)i(ha)m(v)m(e)h(an)m
+(y)f(of)f(these)h(conditions:)136 1766 y Fc(\017)46 b
+Fj(FITS)30 b(\014les)g(larger)h(than)f(2.1)i(GB)f(in)f(size)136
+1953 y Fc(\017)46 b Fj(FITS)30 b(images)h(con)m(taining)h(greater)g
+(than)e(2.1)h(G)g(pixels)136 2141 y Fc(\017)46 b Fj(FITS)34
+b(images)i(that)g(ha)m(v)m(e)g(one)f(dimension)f(with)g(more)h(than)g
+(2.1)h(G)f(pixels)g(\(as)g(giv)m(en)h(b)m(y)f(one)g(of)g(the)227
+2254 y(NAXISn)30 b(k)m(eyw)m(ord\))136 2441 y Fc(\017)46
+b Fj(FITS)26 b(tables)h(con)m(taining)g(more)g(than)f(2.1E09)i(ro)m(ws)
+e(\(giv)m(en)i(b)m(y)e(the)g(NAXIS2)h(k)m(eyw)m(ord\),)h(or)e(with)g
+(ro)m(ws)227 2554 y(that)31 b(are)g(more)g(than)f(2.1)h(GB)g(wide)f
+(\(giv)m(en)i(b)m(y)e(the)h(NAXIS1)f(k)m(eyw)m(ord\))136
+2742 y Fc(\017)46 b Fj(FITS)36 b(binary)f(tables)i(with)f(a)h(v)-5
+b(ariable-length)38 b(arra)m(y)f(heap)f(that)h(is)f(larger)h(than)f
+(2.1)h(GB)g(\(giv)m(en)h(b)m(y)227 2855 y(the)31 b(PCOUNT)e(k)m(eyw)m
+(ord\))0 3115 y(The)c(curren)m(t)g(maxim)m(um)g(FITS)f(\014le)h(size)h
+(supp)s(orted)e(b)m(y)h(CFITSIO)e(is)j(ab)s(out)f(6)g(terab)m(ytes)i
+(\(con)m(taining)g(2**31)0 3227 y(FITS)d(blo)s(c)m(ks,)i(eac)m(h)g
+(2880)h(b)m(ytes)e(in)f(size\).)40 b(Curren)m(tly)-8
+b(,)26 b(supp)s(ort)d(for)i(large)g(\014les)g(in)g(CFITSIO)e(has)h(b)s
+(een)g(tested)0 3340 y(on)30 b(the)h(Lin)m(ux,)f(Solaris,)h(and)f(IBM)g
+(AIX)h(op)s(erating)g(systems.)0 3501 y(Note)26 b(that)f(when)e
+(writing)h(application)i(programs)e(that)h(are)f(in)m(tended)g(to)h
+(supp)s(ort)e(large)i(\014les)g(it)f(is)h(imp)s(ortan)m(t)0
+3613 y(to)31 b(use)g(64-bit)g(in)m(teger)h(v)-5 b(ariables)31
+b(to)h(store)f(quan)m(tities)h(suc)m(h)e(as)h(the)f(dimensions)g(of)h
+(images,)h(or)f(the)f(n)m(um)m(b)s(er)0 3726 y(of)38
+b(ro)m(ws)f(in)h(a)g(table.)63 b(These)38 b(programs)f(m)m(ust)g(also)i
+(call)g(the)f(sp)s(ecial)g(v)m(ersions)g(of)g(some)g(of)g(the)f
+(CFITSIO)0 3839 y(routines)28 b(that)h(ha)m(v)m(e)h(b)s(een)d(adapted)i
+(to)g(supp)s(ort)e(64-bit)i(in)m(tegers.)42 b(The)27
+b(names)i(of)f(these)h(routines)f(end)g(in)g('ll')0 3952
+y(\('el')k('el'\))g(to)f(distinguish)e(them)i(from)f(the)g(32-bit)i(in)
+m(teger)g(v)m(ersion)e(\(e.g.,)j(\014ts)p 2766 3952 V
+32 w(get)p 2918 3952 V 34 w(n)m(um)p 3127 3952 V 32 w(ro)m(wsll\).)p
+eop end
+%%Page: 29 37
+TeXDict begin 29 36 bop 0 1225 a Fg(Chapter)65 b(5)0
+1687 y Fm(Basic)77 b(CFITSIO)f(In)-6 b(terface)77 b(Routines)0
+2180 y Fj(This)30 b(c)m(hapter)i(describ)s(es)e(the)i(basic)f(routines)
+g(in)g(the)g(CFITSIO)e(user)i(in)m(terface)h(that)g(pro)m(vide)f(all)h
+(the)g(func-)0 2293 y(tions)j(normally)g(needed)g(to)g(read)g(and)f
+(write)h(most)h(FITS)e(\014les.)54 b(It)35 b(is)g(recommended)f(that)i
+(these)f(routines)0 2406 y(b)s(e)d(used)g(for)g(most)h(applications)h
+(and)e(that)h(the)f(more)h(adv)-5 b(anced)33 b(routines)f(describ)s(ed)
+g(in)g(the)h(next)f(c)m(hapter)0 2518 y(only)e(b)s(e)g(used)g(in)g(sp)s
+(ecial)h(circumstances)g(when)e(necessary)-8 b(.)0 2679
+y(The)30 b(follo)m(wing)i(con)m(v)m(en)m(tions)g(are)f(used)e(in)i
+(this)f(c)m(hapter)h(in)f(the)g(description)h(of)f(eac)m(h)i(function:)
+0 2839 y(1.)39 b(Most)25 b(functions)e(ha)m(v)m(e)i(2)f(names:)37
+b(a)24 b(long)h(descriptiv)m(e)f(name)g(and)f(a)i(short)e(concise)i
+(name.)38 b(Both)25 b(names)f(are)0 2952 y(listed)g(on)f(the)g(\014rst)
+f(line)i(of)f(the)h(follo)m(wing)g(descriptions,)h(separated)e(b)m(y)h
+(a)f(slash)g(\(/\))h(c)m(haracter.)40 b(Programmers)0
+3065 y(ma)m(y)27 b(use)g(either)g(name)g(in)f(their)h(programs)g(but)f
+(the)h(long)g(names)g(are)g(recommended)f(to)i(help)e(do)s(cumen)m(t)h
+(the)0 3177 y(co)s(de)k(and)e(mak)m(e)j(it)f(easier)g(to)g(read.)0
+3338 y(2.)42 b(A)30 b(righ)m(t)h(arro)m(w)g(sym)m(b)s(ol)f(\()p
+Fb(>)p Fj(\))h(is)g(used)f(in)g(the)h(function)f(descriptions)g(to)i
+(separate)f(the)g(input)f(parameters)0 3451 y(from)j(the)g(output)f
+(parameters)i(in)f(the)g(de\014nition)g(of)g(eac)m(h)h(routine.)49
+b(This)32 b(sym)m(b)s(ol)h(is)g(not)g(actually)i(part)e(of)0
+3563 y(the)e(C)f(calling)h(sequence.)0 3724 y(3.)41 b(The)30
+b(function)g(parameters)h(are)g(de\014ned)e(in)h(more)g(detail)i(in)e
+(the)g(alphab)s(etical)i(listing)f(in)f(App)s(endix)f(B.)0
+3884 y(4.)39 b(The)23 b(\014rst)g(argumen)m(t)g(in)h(almost)g(all)h
+(the)e(functions)g(is)h(a)g(p)s(oin)m(ter)f(to)h(a)g(structure)f(of)h
+(t)m(yp)s(e)g(`\014ts\014le'.)38 b(Memory)0 3997 y(for)26
+b(this)g(structure)f(is)h(allo)s(cated)i(b)m(y)e(CFITSIO)e(when)h(the)h
+(FITS)g(\014le)g(is)g(\014rst)f(op)s(ened)g(or)h(created)h(and)e(is)h
+(freed)0 4110 y(when)j(the)i(FITS)f(\014le)g(is)g(closed.)0
+4270 y(5.)53 b(The)34 b(last)h(argumen)m(t)f(in)g(almost)i(all)f(the)f
+(functions)g(is)g(the)h(error)f(status)g(parameter.)53
+b(It)35 b(m)m(ust)f(b)s(e)f(equal)0 4383 y(to)k(0)g(on)f(input,)h
+(otherwise)g(the)f(function)g(will)h(immediately)g(exit)g(without)g
+(doing)f(an)m(ything.)59 b(A)36 b(non-zero)0 4496 y(output)27
+b(v)-5 b(alue)27 b(indicates)i(that)e(an)g(error)g(o)s(ccurred)g(in)g
+(the)g(function.)39 b(In)27 b(most)g(cases)h(the)g(status)f(v)-5
+b(alue)28 b(is)f(also)0 4608 y(returned)i(as)i(the)f(v)-5
+b(alue)31 b(of)g(the)f(function)g(itself.)0 4935 y Ff(5.1)135
+b(CFITSIO)44 b(Error)h(Status)h(Routines)0 5168 y Fi(1)81
+b Fj(Return)27 b(a)j(descriptiv)m(e)f(text)h(string)e(\(30)i(c)m(har)f
+(max.\))41 b(corresp)s(onding)28 b(to)h(a)g(CFITSIO)e(error)h(status)h
+(co)s(de.)95 5385 y Fe(void)47 b(fits_get_errstatus)c(/)k(ffgerr)f
+(\(int)h(status,)f(>)h(char)g(*err_text\))0 5601 y Fi(2)81
+b Fj(Return)35 b(the)h(top)g(\(oldest\))h(80-c)m(haracter)i(error)c
+(message)i(from)e(the)h(in)m(ternal)h(CFITSIO)d(stac)m(k)j(of)f(error)
+227 5714 y(messages)45 b(and)e(shift)h(an)m(y)g(remaining)g(messages)h
+(on)f(the)g(stac)m(k)h(up)e(one)h(lev)m(el.)83 b(Call)44
+b(this)g(routine)1905 5942 y(29)p eop end
+%%Page: 30 38
+TeXDict begin 30 37 bop 0 299 a Fj(30)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)227 555 y Fj(rep)s(eatedly)c(to)h(get)g(eac)m(h)g
+(message)f(in)g(sequence.)39 b(The)26 b(function)f(returns)g(a)h(v)-5
+b(alue)26 b(=)f(0)h(and)g(a)g(n)m(ull)f(error)227 668
+y(message)32 b(when)d(the)i(error)f(stac)m(k)i(is)e(empt)m(y)-8
+b(.)95 923 y Fe(int)47 b(fits_read_errmsg)d(/)j(ffgmsg)f(\(char)h
+(*err_msg\))0 1178 y Fi(3)81 b Fj(Prin)m(t)30 b(out)h(the)g(error)f
+(message)i(corresp)s(onding)e(to)h(the)g(input)f(status)h(v)-5
+b(alue)31 b(and)f(all)i(the)f(error)f(messages)227 1291
+y(on)d(the)h(CFITSIO)e(stac)m(k)j(to)f(the)f(sp)s(eci\014ed)g(\014le)g
+(stream)h(\(normally)g(to)g(stdout)f(or)g(stderr\).)40
+b(If)26 b(the)i(input)227 1404 y(status)j(v)-5 b(alue)31
+b(=)f(0)h(then)f(this)g(routine)g(do)s(es)g(nothing.)95
+1659 y Fe(void)47 b(fits_report_error)c(/)48 b(ffrprt)e(\(FILE)g
+(*stream,)g(status\))0 1914 y Fi(4)81 b Fj(The)44 b(\014ts)p
+461 1914 28 4 v 32 w(write)p 695 1914 V 33 w(errmark)g(routine)h(puts)f
+(an)h(in)m(visible)g(mark)m(er)g(on)g(the)g(CFITSIO)e(error)h(stac)m
+(k.)85 b(The)227 2027 y(\014ts)p 354 2027 V 33 w(clear)p
+573 2027 V 34 w(errmark)31 b(routine)i(can)g(then)f(b)s(e)f(used)h(to)h
+(delete)h(an)m(y)f(more)f(recen)m(t)i(error)e(messages)h(on)g(the)227
+2140 y(stac)m(k,)42 b(bac)m(k)c(to)g(the)g(p)s(osition)g(of)g(the)g
+(mark)m(er.)63 b(This)37 b(preserv)m(es)g(an)m(y)h(older)g(error)f
+(messages)i(on)f(the)227 2253 y(stac)m(k.)77 b(The)41
+b(\014ts)p 855 2253 V 32 w(clear)p 1073 2253 V 34 w(errmsg)g(routine)h
+(simply)f(clears)i(all)g(the)f(messages)g(\(and)g(marks\))f(from)h(the)
+227 2365 y(stac)m(k.)g(These)31 b(routines)f(are)h(called)g(without)g
+(an)m(y)f(argumen)m(ts.)95 2620 y Fe(void)47 b(fits_write_errmark)c(/)k
+(ffpmrk)f(\(void\))95 2733 y(void)h(fits_clear_errmark)c(/)k(ffcmrk)f
+(\(void\))95 2846 y(void)h(fits_clear_errmsg)c(/)48 b(ffcmsg)e
+(\(void\))0 3179 y Ff(5.2)135 b(FITS)44 b(File)i(Access)e(Routines)0
+3419 y Fi(1)81 b Fj(Op)s(en)29 b(an)h(existing)h(data)g(\014le.)227
+3663 y Fe(int)47 b(fits_open_file)d(/)k(ffopen)418 3776
+y(\(fitsfile)d(**fptr,)h(char)h(*filename,)e(int)i(iomode,)f(>)h(int)g
+(*status\))227 4002 y(int)g(fits_open_diskfile)c(/)k(ffdkopen)418
+4115 y(\(fitsfile)e(**fptr,)h(char)h(*filename,)e(int)i(iomode,)f(>)h
+(int)g(*status\))227 4340 y(int)g(fits_open_data)d(/)k(ffdopn)418
+4453 y(\(fitsfile)d(**fptr,)h(char)h(*filename,)e(int)i(iomode,)f(>)h
+(int)g(*status\))227 4679 y(int)g(fits_open_table)d(/)j(fftopn)418
+4792 y(\(fitsfile)e(**fptr,)h(char)h(*filename,)e(int)i(iomode,)f(>)h
+(int)g(*status\))227 5018 y(int)g(fits_open_image)d(/)j(ffiopn)418
+5131 y(\(fitsfile)e(**fptr,)h(char)h(*filename,)e(int)i(iomode,)f(>)h
+(int)g(*status\))227 5375 y Fj(The)41 b(iomo)s(de)h(parameter)g
+(determines)g(the)f(read/write)h(access)h(allo)m(w)m(ed)h(in)d(the)g
+(\014le)h(and)f(can)h(ha)m(v)m(e)227 5488 y(v)-5 b(alues)32
+b(of)g(READONL)-8 b(Y)32 b(\(0\))g(or)g(READ)m(WRITE)g(\(1\).)44
+b(The)31 b(\014lename)h(parameter)g(giv)m(es)h(the)e(name)h(of)227
+5601 y(the)f(\014le)g(to)g(b)s(e)f(op)s(ened,)h(follo)m(w)m(ed)h(b)m(y)
+f(an)f(optional)i(argumen)m(t)f(giving)h(the)f(name)f(or)h(index)f(n)m
+(um)m(b)s(er)g(of)227 5714 y(the)d(extension)g(within)g(the)f(FITS)g
+(\014le)h(that)g(should)f(b)s(e)g(mo)m(v)m(ed)i(to)f(and)f(op)s(ened)g
+(\(e.g.,)k Fe(myfile.fits+3)p eop end
+%%Page: 31 39
+TeXDict begin 31 38 bop 0 299 a Fh(5.2.)72 b(FITS)30
+b(FILE)g(A)m(CCESS)f(R)m(OUTINES)2244 b Fj(31)227 555
+y(or)36 b Fe(myfile.fits[3])d Fj(mo)m(v)m(es)k(to)g(the)g(3rd)f
+(extension)g(within)g(the)h(\014le,)h(and)d Fe(myfile.fits[events])227
+668 y Fj(mo)m(v)m(es)d(to)f(the)g(extension)g(with)f(the)g(k)m(eyw)m
+(ord)h(EXTNAME)g(=)f('EVENTS'\).)227 816 y(The)37 b(\014ts)p
+548 816 28 4 v 32 w(op)s(en)p 770 816 V 32 w(disk\014le)g(routine)g(is)
+g(similar)g(to)h(the)f(\014ts)p 2241 816 V 33 w(op)s(en)p
+2464 816 V 32 w(\014le)g(routine)g(except)h(that)f(it)h(do)s(es)f(not)
+227 929 y(supp)s(ort)22 b(the)h(extended)h(\014lename)f(syn)m(tax)h(in)
+f(the)h(input)e(\014le)i(name.)38 b(This)23 b(routine)g(simply)g(tries)
+h(to)g(op)s(en)227 1042 y(the)36 b(sp)s(eci\014ed)e(input)h(\014le)g
+(on)g(magnetic)i(disk.)55 b(This)34 b(routine)h(is)h(mainly)f(for)g
+(use)g(in)g(cases)h(where)f(the)227 1155 y(\014lename)f(\(or)h
+(directory)f(path\))g(con)m(tains)h(square)f(or)g(curly)f(brac)m(k)m
+(et)j(c)m(haracters)f(that)f(w)m(ould)g(confuse)227 1268
+y(the)d(extended)f(\014lename)h(parser.)227 1416 y(The)i(\014ts)p
+544 1416 V 32 w(op)s(en)p 766 1416 V 32 w(data)h(routine)e(is)h
+(similar)g(to)h(the)f(\014ts)p 2113 1416 V 32 w(op)s(en)p
+2335 1416 V 33 w(\014le)f(routine)h(except)h(that)f(it)h(will)f(mo)m(v)
+m(e)h(to)227 1529 y(the)23 b(\014rst)f(HDU)h(con)m(taining)h
+(signi\014can)m(t)f(data,)i(if)e(a)g(HDU)g(name)f(or)h(n)m(um)m(b)s(er)
+e(to)i(op)s(en)f(w)m(as)h(not)f(explicitly)227 1642 y(sp)s(eci\014ed)37
+b(as)g(part)h(of)f(the)h(\014lename.)61 b(In)37 b(this)g(case,)j(it)e
+(will)g(lo)s(ok)g(for)f(the)g(\014rst)g(IMA)m(GE)h(HDU)g(with)227
+1755 y(NAXIS)29 b(greater)h(than)e(0,)i(or)f(the)f(\014rst)g(table)i
+(that)f(do)s(es)g(not)g(con)m(tain)h(the)f(strings)f(`GTI')h(\(Go)s(o)s
+(d)g(Time)227 1868 y(In)m(terv)-5 b(al)31 b(extension\))h(or)e(`OBST)-8
+b(ABLE')31 b(in)f(the)h(EXTNAME)f(k)m(eyw)m(ord)h(v)-5
+b(alue.)227 2016 y(The)25 b(\014ts)p 536 2016 V 32 w(op)s(en)p
+758 2016 V 32 w(table)h(and)e(\014ts)p 1305 2016 V 33
+w(op)s(en)p 1528 2016 V 32 w(image)i(routines)f(are)g(similar)h(to)f
+(\014ts)p 2828 2016 V 33 w(op)s(en)p 3051 2016 V 32 w(data)h(except)f
+(they)h(will)227 2129 y(mo)m(v)m(e)h(to)g(the)f(\014rst)f(signi\014can)
+m(t)h(table)h(HDU)f(or)g(image)h(HDU)f(in)f(the)h(\014le,)h(resp)s
+(ectiv)m(ely)-8 b(,)29 b(if)c(a)h(HDU)h(name)227 2242
+y(or)k(n)m(um)m(b)s(er)e(is)h(not)h(sp)s(eci\014ed)e(as)i(part)f(of)h
+(the)f(\014lename.)227 2390 y(IRAF)c(images)g(\(.imh)g(format)g
+(\014les\))f(and)g(ra)m(w)h(binary)e(data)j(arra)m(ys)e(ma)m(y)h(also)h
+(b)s(e)e(op)s(ened)f(with)h(READ-)227 2503 y(ONL)-8 b(Y)37
+b(access.)60 b(CFITSIO)35 b(will)i(automatically)i(test)f(if)e(the)h
+(input)e(\014le)i(is)f(an)h(IRAF)f(image,)k(and)c(if,)227
+2616 y(so)c(will)g(con)m(v)m(ert)h(it)f(on)f(the)h(\015y)f(in)m(to)i(a)
+f(virtual)f(FITS)g(image)i(b)s(efore)e(it)h(is)g(op)s(ened)e(b)m(y)i
+(the)g(application)227 2729 y(program.)64 b(If)37 b(the)h(input)g
+(\014le)g(is)g(a)g(ra)m(w)g(binary)g(data)g(arra)m(y)h(of)f(n)m(um)m(b)
+s(ers,)h(then)e(the)i(data)f(t)m(yp)s(e)h(and)227 2842
+y(dimensions)d(of)g(the)g(arra)m(y)h(m)m(ust)f(b)s(e)f(sp)s(eci\014ed)g
+(in)h(square)g(brac)m(k)m(ets)h(follo)m(wing)h(the)e(name)g(of)h(the)f
+(\014le)227 2955 y(\(e.g.)56 b('ra)m(w\014le.dat[i512,512]')40
+b(op)s(ens)34 b(a)i(512)g(x)f(512)h(short)e(in)m(teger)j(image\).)56
+b(See)35 b(the)g(`Extended)g(File)227 3068 y(Name)k(Syn)m(tax')g(c)m
+(hapter)g(for)e(more)i(details)g(on)f(ho)m(w)g(to)h(sp)s(ecify)f(the)g
+(ra)m(w)h(\014le)f(name.)64 b(The)38 b(ra)m(w)g(\014le)227
+3181 y(is)k(con)m(v)m(erted)g(on)f(the)h(\015y)f(in)m(to)h(a)f(virtual)
+h(FITS)e(image)j(in)e(memory)g(that)h(is)f(then)g(op)s(ened)g(b)m(y)g
+(the)227 3294 y(application)32 b(program)e(with)g(READONL)-8
+b(Y)31 b(access.)227 3442 y(Programs)g(can)g(read)f(the)h(input)e
+(\014le)i(from)f(the)h('stdin')f(\014le)h(stream)g(if)f(a)h(dash)f(c)m
+(haracter)i(\('-'\))g(is)f(giv)m(en)227 3555 y(as)e(the)f(\014lename.)
+40 b(Files)30 b(can)e(also)h(b)s(e)f(op)s(ened)f(o)m(v)m(er)j(the)e
+(net)m(w)m(ork)h(using)f(FTP)g(or)g(HTTP)g(proto)s(cols)h(b)m(y)227
+3668 y(supplying)g(the)i(appropriate)f(URL)h(as)f(the)h(\014lename.)227
+3816 y(The)43 b(input)f(\014le)h(can)h(b)s(e)f(mo)s(di\014ed)f(in)g(v)
+-5 b(arious)44 b(w)m(a)m(ys)g(to)g(create)g(a)g(virtual)f(\014le)h
+(\(usually)f(stored)g(in)227 3929 y(memory\))31 b(that)g(is)g(then)f
+(op)s(ened)f(b)m(y)i(the)f(application)i(program)e(b)m(y)h(supplying)e
+(a)i(\014ltering)g(or)f(binning)227 4042 y(sp)s(eci\014er)e(in)g
+(square)g(brac)m(k)m(ets)h(follo)m(wing)h(the)e(\014lename.)40
+b(Some)29 b(of)f(the)g(more)h(common)f(\014ltering)h(meth-)227
+4155 y(o)s(ds)j(are)h(illustrated)h(in)e(the)h(follo)m(wing)i
+(paragraphs,)e(but)f(users)g(should)f(refer)i(to)g(the)g('Extended)g
+(File)227 4268 y(Name)e(Syn)m(tax')g(c)m(hapter)g(for)f(a)h(complete)h
+(description)e(of)h(the)f(full)h(\014le)f(\014ltering)h(syn)m(tax.)227
+4416 y(When)c(op)s(ening)f(an)h(image,)h(a)g(rectangular)f(subset)f(of)
+h(the)g(ph)m(ysical)g(image)h(ma)m(y)g(b)s(e)e(op)s(ened)f(b)m(y)i
+(listing)227 4529 y(the)k(\014rst)e(and)h(last)h(pixel)g(in)f(eac)m(h)i
+(dimension)e(\(and)g(optional)h(pixel)g(skipping)f(factor\):)227
+4765 y Fe(myimage.fits[101:200,301:)o(400])227 5001 y
+Fj(will)g(create)h(and)e(op)s(en)f(a)i(100x100)i(pixel)e(virtual)g
+(image)g(of)g(that)g(section)g(of)g(the)f(ph)m(ysical)h(image,)i(and)
+227 5114 y Fe(myimage.fits[*,-*])c Fj(op)s(ens)k(a)h(virtual)g(image)h
+(that)f(is)g(the)g(same)g(size)h(as)e(the)h(ph)m(ysical)h(image)g(but)
+227 5227 y(has)c(b)s(een)g(\015ipp)s(ed)f(in)h(the)g(v)m(ertical)j
+(direction.)227 5375 y(When)28 b(op)s(ening)g(a)g(table,)i(the)e
+(\014ltering)g(syn)m(tax)h(can)f(b)s(e)f(used)h(to)g(add)g(or)g(delete)
+h(columns)f(or)g(k)m(eyw)m(ords)227 5488 y(in)g(the)g(virtual)h(table:)
+40 b Fe(myfile.fits[events][col)i(!time;)k(PI)h(=)h(PHA*1.2])26
+b Fj(op)s(ens)h(a)h(virtual)h(ta-)227 5601 y(ble)j(in)f(whic)m(h)g(the)
+h(TIME)f(column)g(has)g(b)s(een)g(deleted)h(and)f(a)g(new)g(PI)g
+(column)h(has)f(b)s(een)g(added)f(with)227 5714 y(a)41
+b(v)-5 b(alue)40 b(1.2)i(times)e(that)h(of)f(the)h(PHA)f(column.)70
+b(Similarly)-8 b(,)43 b(one)e(can)f(\014lter)h(a)f(table)h(to)g(k)m
+(eep)g(only)p eop end
+%%Page: 32 40
+TeXDict begin 32 39 bop 0 299 a Fj(32)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)227 555 y Fj(those)35 b(ro)m(ws)e(that)i(satisfy)f(a)g
+(selection)i(criterion:)48 b Fe(myfile.fits[events][pha)42
+b(>)47 b(50])33 b Fj(creates)j(and)227 668 y(op)s(ens)31
+b(a)g(virtual)h(table)g(con)m(taining)h(only)e(those)h(ro)m(ws)f(with)g
+(a)g(PHA)h(v)-5 b(alue)31 b(greater)i(than)e(50.)44 b(A)31
+b(large)227 781 y(n)m(um)m(b)s(er)d(of)h(b)s(o)s(olean)h(and)e
+(mathematical)k(op)s(erators)d(can)g(b)s(e)g(used)f(in)h(the)g
+(selection)i(expression.)40 b(One)227 894 y(can)25 b(also)g(\014lter)g
+(table)g(ro)m(ws)f(using)g('Go)s(o)s(d)h(Time)f(In)m(terv)-5
+b(al')26 b(extensions,)g(and)e(spatial)h(region)g(\014lters)g(as)f(in)
+227 1007 y Fe(myfile.fits[events][gtifi)o(lter)o(\(\)])14
+b Fj(and)19 b Fe(myfile.fits[events][regfil)o(ter)o(\()42
+b("stars.rng"\)])p Fj(.)227 1167 y(Finally)-8 b(,)34
+b(table)e(columns)f(ma)m(y)h(b)s(e)f(binned)f(or)h(histogrammed)h(to)g
+(generate)h(a)e(virtual)h(image.)45 b(F)-8 b(or)32 b(ex-)227
+1280 y(ample,)d Fe(myfile.fits[events][bin)41 b(\(X,Y\)=4])26
+b Fj(will)h(result)h(in)f(a)h(2-dimensional)g(image)h(calculated)227
+1393 y(b)m(y)35 b(binning)e(the)i(X)f(and)g(Y)h(columns)f(in)g(the)h
+(ev)m(en)m(t)h(table)f(with)f(a)h(bin)f(size)h(of)g(4)f(in)h(eac)m(h)g
+(dimension.)227 1506 y(The)30 b(TLMINn)g(and)f(TLMAXn)h(k)m(eyw)m(ords)
+h(will)g(b)s(e)e(used)h(b)m(y)g(default)h(to)g(determine)f(the)h(range)
+f(of)h(the)227 1619 y(image.)227 1779 y(A)j(single)g(program)f(can)g
+(op)s(en)g(the)h(same)f(FITS)g(\014le)g(more)h(than)f(once)h(and)f
+(then)g(treat)h(the)g(resulting)227 1892 y(\014ts\014le)c(p)s(oin)m
+(ters)g(as)g(though)g(they)g(w)m(ere)h(completely)h(indep)s(enden)m(t)d
+(FITS)g(\014les.)40 b(Using)31 b(this)f(facilit)m(y)-8
+b(,)33 b(a)227 2005 y(program)f(can)f(op)s(en)g(a)h(FITS)f(\014le)g(t)m
+(wice,)j(mo)m(v)m(e)f(to)f(2)g(di\013eren)m(t)g(extensions)g(within)f
+(the)g(\014le,)h(and)f(then)227 2118 y(read)g(and)e(write)i(data)g(in)f
+(those)h(extensions)g(in)f(an)m(y)h(order.)0 2397 y Fi(2)81
+b Fj(Create)31 b(and)f(op)s(en)f(a)i(new)f(empt)m(y)h(output)f(FITS)f
+(\014le.)227 2677 y Fe(int)47 b(fits_create_file)d(/)j(ffinit)418
+2790 y(\(fitsfile)e(**fptr,)h(char)h(*filename,)e(>)i(int)g(*status\))
+227 3016 y(int)g(fits_create_diskfile)42 b(/)48 b(ffdkinit)418
+3129 y(\(fitsfile)d(**fptr,)h(char)h(*filename,)e(>)i(int)g(*status\))
+227 3409 y Fj(An)36 b(error)h(will)g(b)s(e)f(returned)f(if)h(the)h(sp)s
+(eci\014ed)f(\014le)h(already)g(exists,)i(unless)d(the)h(\014lename)f
+(is)h(pre\014xed)227 3522 y(with)30 b(an)g(exclamation)i(p)s(oin)m(t)e
+(\(!\).)42 b(In)29 b(that)i(case)g(CFITSIO)d(will)j(o)m(v)m(erwrite)g
+(\(delete\))h(an)m(y)f(existing)g(\014le)227 3635 y(with)36
+b(the)g(same)h(name.)57 b(Note)38 b(that)e(the)h(exclamation)h(p)s(oin)
+m(t)e(is)g(a)h(sp)s(ecial)f(UNIX)g(c)m(haracter)i(so)e(if)g(it)227
+3748 y(is)d(used)e(on)h(the)h(command)f(line)h(it)g(m)m(ust)f(b)s(e)g
+(preceded)g(b)m(y)g(a)g(bac)m(kslash)h(to)h(force)e(the)h(UNIX)g(shell)
+f(to)227 3860 y(accept)g(the)f(c)m(haracter)h(as)e(part)g(of)h(the)g
+(\014lename.)227 4021 y(The)26 b(output)h(\014le)g(will)g(b)s(e)f
+(written)h(to)g(the)g('stdout')g(\014le)g(stream)g(if)g(a)g(dash)f(c)m
+(haracter)i(\('-'\))g(or)f(the)g(string)227 4134 y('stdout')34
+b(is)f(giv)m(en)h(as)g(the)f(\014lename.)49 b(Similarly)-8
+b(,)35 b('-.gz')g(or)e('stdout.gz')i(will)f(cause)f(the)h(\014le)f(to)h
+(b)s(e)e(gzip)227 4247 y(compressed)e(b)s(efore)g(it)h(is)g(written)f
+(out)h(to)g(the)f(stdout)h(stream.)227 4407 y(Optionally)-8
+b(,)41 b(the)c(name)h(of)f(a)h(template)h(\014le)e(that)h(is)f(used)g
+(to)h(de\014ne)f(the)g(structure)g(of)g(the)h(new)f(\014le)227
+4520 y(ma)m(y)i(b)s(e)f(sp)s(eci\014ed)f(in)h(paren)m(theses)h(follo)m
+(wing)g(the)g(output)e(\014le)i(name.)64 b(The)38 b(template)h(\014le)g
+(ma)m(y)g(b)s(e)227 4633 y(another)32 b(FITS)e(\014le,)i(in)f(whic)m(h)
+g(case)i(the)e(new)g(\014le,)h(at)g(the)g(time)g(it)f(is)h(op)s(ened,)f
+(will)g(b)s(e)g(an)g(exact)i(cop)m(y)227 4746 y(of)38
+b(the)g(template)i(\014le)e(except)g(that)h(the)f(data)g(structures)g
+(\(images)h(and)e(tables\))i(will)f(b)s(e)g(\014lled)f(with)227
+4858 y(zeros.)k(Alternativ)m(ely)-8 b(,)32 b(the)d(template)i(\014le)e
+(ma)m(y)g(b)s(e)f(an)h(ASCI)s(I)e(format)i(text)h(\014le)f(con)m
+(taining)i(directiv)m(es)227 4971 y(that)e(de\014ne)e(the)h(k)m(eyw)m
+(ords)g(to)g(b)s(e)g(created)h(in)e(eac)m(h)i(HDU)g(of)f(the)g(\014le.)
+40 b(See)28 b(the)g('Extended)f(File)i(Name)227 5084
+y(Syn)m(tax')i(section)h(for)e(a)h(complete)g(description)g(of)f(the)h
+(template)h(\014le)e(syn)m(tax.)227 5245 y(The)f(\014ts)p
+540 5245 28 4 v 33 w(create)p 809 5245 V 34 w(disk\014le)g(routine)h
+(is)g(similar)g(to)g(the)g(\014ts)p 2238 5245 V 32 w(create)p
+2506 5245 V 34 w(\014le)g(routine)g(except)g(that)g(it)g(do)s(es)g(not)
+227 5357 y(supp)s(ort)36 b(the)i(extended)g(\014lename)g(syn)m(tax)g
+(in)g(the)g(input)f(\014le)h(name.)63 b(This)37 b(routine)h(simply)f
+(tries)h(to)227 5470 y(create)e(the)e(sp)s(eci\014ed)f(\014le)h(on)f
+(magnetic)j(disk.)50 b(This)33 b(routine)h(is)g(mainly)g(for)g(use)f
+(in)h(cases)g(where)g(the)227 5583 y(\014lename)g(\(or)h(directory)f
+(path\))g(con)m(tains)h(square)f(or)g(curly)f(brac)m(k)m(et)j(c)m
+(haracters)f(that)f(w)m(ould)g(confuse)227 5696 y(the)d(extended)f
+(\014lename)h(parser.)p eop end
+%%Page: 33 41
+TeXDict begin 33 40 bop 0 299 a Fh(5.3.)72 b(HDU)31 b(A)m(CCESS)e(R)m
+(OUTINES)2488 b Fj(33)0 555 y Fi(3)81 b Fj(Close)28 b(a)f(previously)g
+(op)s(ened)g(FITS)g(\014le.)40 b(The)27 b(\014rst)f(routine)i(simply)f
+(closes)h(the)g(\014le,)g(whereas)f(the)h(second)227
+668 y(one)41 b(also)g(DELETES)e(THE)h(FILE,)g(whic)m(h)g(can)h(b)s(e)e
+(useful)h(in)g(cases)h(where)e(a)i(FITS)e(\014le)i(has)f(b)s(een)227
+781 y(partially)32 b(created,)f(but)f(then)g(an)g(error)g(o)s(ccurs)g
+(whic)m(h)h(prev)m(en)m(ts)f(it)h(from)f(b)s(eing)g(completed.)95
+1017 y Fe(int)47 b(fits_close_file)d(/)j(ffclos)g(\(fitsfile)e(*fptr,)h
+(>)h(int)g(*status\))95 1243 y(int)g(fits_delete_file)d(/)j(ffdelt)f
+(\(fitsfile)g(*fptr,)g(>)h(int)g(*status\))0 1479 y Fi(4)81
+b Fj(Return)21 b(the)i(name,)h(I/O)e(mo)s(de)g(\(READONL)-8
+b(Y)24 b(or)e(READ)m(WRITE\),)i(and/or)e(the)g(\014le)h(t)m(yp)s(e)f
+(\(e.g.)40 b('\014le://',)227 1592 y('ftp://'\))32 b(of)f(the)f(op)s
+(ened)g(FITS)g(\014le.)95 1828 y Fe(int)47 b(fits_file_name)d(/)k
+(ffflnm)e(\(fitsfile)f(*fptr,)h(>)i(char)e(*filename,)f(int)i
+(*status\))95 2054 y(int)g(fits_file_mode)d(/)k(ffflmd)e(\(fitsfile)f
+(*fptr,)h(>)i(int)f(*iomode,)e(int)i(*status\))95 2280
+y(int)g(fits_url_type)e(/)i(ffurlt)f(\(fitsfile)f(*fptr,)h(>)i(char)f
+(*urltype,)e(int)i(*status\))0 2610 y Ff(5.3)135 b(HDU)46
+b(Access)e(Routines)0 2860 y Fj(The)30 b(follo)m(wing)i(functions)e(p)s
+(erform)f(op)s(erations)h(on)h(Header-Data)h(Units)f(\(HDUs\))h(as)e(a)
+h(whole.)0 3096 y Fi(1)81 b Fj(Mo)m(v)m(e)44 b(to)g(a)f(di\013eren)m(t)
+g(HDU)g(in)g(the)g(\014le.)77 b(The)43 b(\014rst)f(routine)g(mo)m(v)m
+(es)i(to)g(a)f(sp)s(eci\014ed)f(absolute)h(HDU)227 3209
+y(n)m(um)m(b)s(er)f(\(starting)h(with)g(1)f(for)h(the)g(primary)e(arra)
+m(y\))j(in)e(the)h(FITS)f(\014le,)k(and)c(the)g(second)h(routine)227
+3322 y(mo)m(v)m(es)35 b(a)e(relativ)m(e)i(n)m(um)m(b)s(er)d(HDUs)i
+(forw)m(ard)e(or)h(bac)m(kw)m(ard)h(from)f(the)g(curren)m(t)g(HDU.)h(A)
+f(n)m(ull)g(p)s(oin)m(ter)227 3435 y(ma)m(y)e(b)s(e)f(giv)m(en)h(for)f
+(the)g(hdut)m(yp)s(e)f(parameter)i(if)f(it's)h(v)-5 b(alue)31
+b(is)f(not)h(needed.)40 b(The)30 b(third)f(routine)i(mo)m(v)m(es)227
+3548 y(to)39 b(the)g(\(\014rst\))f(HDU)i(whic)m(h)e(has)g(the)h(sp)s
+(eci\014ed)e(extension)i(t)m(yp)s(e)g(and)f(EXTNAME)g(and)g(EXTVER)227
+3661 y(k)m(eyw)m(ord)26 b(v)-5 b(alues)26 b(\(or)g(HDUNAME)h(and)e
+(HDUVER)h(k)m(eyw)m(ords\).)40 b(The)24 b(hdut)m(yp)s(e)h(parameter)h
+(ma)m(y)g(ha)m(v)m(e)227 3774 y(a)d(v)-5 b(alue)22 b(of)g(IMA)m(GE)p
+935 3774 28 4 v 34 w(HDU,)h(ASCI)s(I)p 1476 3774 V 31
+w(TBL,)f(BINAR)-8 b(Y)p 2101 3774 V 34 w(TBL,)22 b(or)g(ANY)p
+2676 3774 V 34 w(HDU)g(where)g(ANY)p 3396 3774 V 33 w(HDU)h(means)227
+3887 y(that)33 b(only)g(the)f(extname)i(and)d(extv)m(er)j(v)-5
+b(alues)33 b(will)f(b)s(e)g(used)g(to)h(lo)s(cate)h(the)f(correct)g
+(extension.)48 b(If)32 b(the)227 4000 y(input)i(v)-5
+b(alue)36 b(of)f(extv)m(er)h(is)f(0)h(then)e(the)i(EXTVER)e(k)m(eyw)m
+(ord)i(is)f(ignored)g(and)g(the)g(\014rst)f(HDU)i(with)f(a)227
+4112 y(matc)m(hing)28 b(EXTNAME)g(\(or)f(HDUNAME\))i(k)m(eyw)m(ord)e
+(will)g(b)s(e)g(found.)38 b(If)27 b(no)f(matc)m(hing)i(HDU)g(is)f
+(found)227 4225 y(in)f(the)g(\014le)g(then)g(the)g(curren)m(t)g(HDU)g
+(will)h(remain)f(unc)m(hanged)f(and)h(a)g(status)g(=)g(BAD)p
+3246 4225 V 33 w(HDU)p 3484 4225 V 34 w(NUM)h(will)227
+4338 y(b)s(e)j(returned.)95 4574 y Fe(int)47 b(fits_movabs_hdu)d(/)j
+(ffmahd)286 4687 y(\(fitsfile)f(*fptr,)g(int)h(hdunum,)e(>)j(int)f
+(*hdutype,)e(int)i(*status\))95 4913 y(int)g(fits_movrel_hdu)d(/)j
+(ffmrhd)286 5026 y(\(fitsfile)f(*fptr,)g(int)h(nmove,)f(>)h(int)g
+(*hdutype,)e(int)i(*status\))95 5252 y(int)g(fits_movnam_hdu)d(/)j
+(ffmnhd)286 5365 y(\(fitsfile)f(*fptr,)g(int)h(hdutype,)e(char)i
+(*extname,)e(int)i(extver,)f(>)h(int)g(*status\))0 5601
+y Fi(2)81 b Fj(Return)38 b(the)i(total)h(n)m(um)m(b)s(er)d(of)i(HDUs)g
+(in)f(the)h(FITS)f(\014le.)68 b(This)39 b(returns)f(the)h(n)m(um)m(b)s
+(er)g(of)g(completely)227 5714 y(de\014ned)30 b(HDUs)h(in)f(the)h
+(\014le.)42 b(If)30 b(a)h(new)f(HDU)h(has)g(just)f(b)s(een)g(added)f
+(to)j(the)f(FITS)f(\014le,)h(then)f(that)h(last)p eop
+end
+%%Page: 34 42
+TeXDict begin 34 41 bop 0 299 a Fj(34)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)227 555 y Fj(HDU)g(will)f(only)g(b)s(e)g(coun)m(ted)g(if)
+g(it)h(has)e(b)s(een)h(closed,)h(or)f(if)g(data)h(has)e(b)s(een)h
+(written)g(to)g(the)g(HDU.)h(The)227 668 y(curren)m(t)g(HDU)i(remains)e
+(unc)m(hanged)g(b)m(y)g(this)g(routine.)95 900 y Fe(int)47
+b(fits_get_num_hdus)c(/)48 b(ffthdu)286 1013 y(\(fitsfile)e(*fptr,)g(>)
+h(int)g(*hdunum,)f(int)h(*status\))0 1246 y Fi(3)81 b
+Fj(Return)31 b(the)h(n)m(um)m(b)s(er)f(of)h(the)h(curren)m(t)e(HDU)i
+(\(CHDU\))h(in)d(the)i(FITS)e(\014le)h(\(where)g(the)g(primary)g(arra)m
+(y)g(=)227 1359 y(1\).)42 b(This)29 b(function)h(returns)g(the)g(HDU)h
+(n)m(um)m(b)s(er)e(rather)h(than)h(a)f(status)h(v)-5
+b(alue.)95 1591 y Fe(int)47 b(fits_get_hdu_num)d(/)j(ffghdn)286
+1704 y(\(fitsfile)f(*fptr,)g(>)h(int)g(*hdunum\))0 1936
+y Fi(4)81 b Fj(Return)38 b(the)h(t)m(yp)s(e)h(of)f(the)h(curren)m(t)f
+(HDU)h(in)f(the)g(FITS)g(\014le.)67 b(The)39 b(p)s(ossible)g(v)-5
+b(alues)39 b(for)g(hdut)m(yp)s(e)f(are:)227 2049 y(IMA)m(GE)p
+546 2049 28 4 v 34 w(HDU,)31 b(ASCI)s(I)p 1095 2049 V
+32 w(TBL,)f(or)g(BINAR)-8 b(Y)p 1840 2049 V 34 w(TBL.)95
+2281 y Fe(int)47 b(fits_get_hdu_type)c(/)48 b(ffghdt)286
+2394 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*hdutype,)e(int)i(*status\))0
+2626 y Fi(5)81 b Fj(Cop)m(y)24 b(all)h(or)f(part)g(of)g(the)g(HDUs)h
+(in)f(the)g(FITS)g(\014le)g(asso)s(ciated)h(with)f(infptr)f(and)h(app)s
+(end)e(them)i(to)h(the)g(end)227 2739 y(of)f(the)f(FITS)f(\014le)i
+(asso)s(ciated)g(with)f(outfptr.)38 b(If)23 b('previous')g(is)g(true)g
+(\(not)h(0\),)i(then)d(an)m(y)g(HDUs)h(preceding)227
+2852 y(the)35 b(curren)m(t)f(HDU)g(in)g(the)h(input)e(\014le)h(will)h
+(b)s(e)e(copied)i(to)g(the)f(output)g(\014le.)52 b(Similarly)-8
+b(,)36 b('curren)m(t')f(and)227 2965 y('follo)m(wing')c(determine)e
+(whether)f(the)h(curren)m(t)g(HDU,)g(and/or)g(an)m(y)g(follo)m(wing)h
+(HDUs)g(in)e(the)h(input)f(\014le)227 3078 y(will)i(b)s(e)f(copied)i
+(to)f(the)g(output)f(\014le.)41 b(Th)m(us,)29 b(if)g(all)i(3)f
+(parameters)g(are)g(true,)g(then)g(the)f(en)m(tire)i(input)e(\014le)227
+3191 y(will)36 b(b)s(e)e(copied.)56 b(On)35 b(exit,)i(the)f(curren)m(t)
+f(HDU)h(in)e(the)i(input)e(\014le)i(will)f(b)s(e)g(unc)m(hanged,)h(and)
+f(the)g(last)227 3304 y(HDU)c(in)f(the)h(output)f(\014le)g(will)h(b)s
+(e)f(the)g(curren)m(t)h(HDU.)95 3536 y Fe(int)47 b(fits_copy_file)d(/)k
+(ffcpfl)286 3649 y(\(fitsfile)e(*infptr,)f(fitsfile)h(*outfptr,)f(int)i
+(previous,)e(int)i(current,)477 3762 y(int)g(following,)e(>)j(int)f
+(*status\))0 3994 y Fi(6)81 b Fj(Cop)m(y)34 b(the)h(curren)m(t)f(HDU)h
+(from)f(the)g(FITS)g(\014le)h(asso)s(ciated)g(with)g(infptr)e(and)h
+(app)s(end)e(it)j(to)g(the)g(end)f(of)227 4107 y(the)39
+b(FITS)e(\014le)h(asso)s(ciated)i(with)e(outfptr.)64
+b(Space)38 b(ma)m(y)h(b)s(e)e(reserv)m(ed)i(for)f(MOREKEYS)f
+(additional)227 4220 y(k)m(eyw)m(ords)31 b(in)f(the)h(output)f(header.)
+95 4452 y Fe(int)47 b(fits_copy_hdu)e(/)i(ffcopy)286
+4565 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(int)i(morekeys,)e
+(>)j(int)f(*status\))0 4798 y Fi(7)81 b Fj(W)-8 b(rite)31
+b(the)g(curren)m(t)f(HDU)h(in)f(the)h(input)e(FITS)h(\014le)g(to)h(the)
+g(output)f(FILE)g(stream)h(\(e.g.,)h(to)f(stdout\).)95
+5030 y Fe(int)47 b(fits_write_hdu)d(/)k(ffwrhdu)286 5143
+y(\(fitsfile)e(*infptr,)f(FILE)i(*stream,)e(>)j(int)f(*status\))0
+5375 y Fi(8)81 b Fj(Cop)m(y)43 b(the)h(header)g(\(and)f(not)h(the)g
+(data\))h(from)e(the)h(CHDU)g(asso)s(ciated)h(with)f(infptr)e(to)j(the)
+f(CHDU)227 5488 y(asso)s(ciated)28 b(with)e(outfptr.)39
+b(If)26 b(the)h(curren)m(t)f(output)g(HDU)h(is)g(not)f(completely)i
+(empt)m(y)-8 b(,)29 b(then)d(the)h(CHDU)227 5601 y(will)35
+b(b)s(e)f(closed)h(and)f(a)h(new)f(HDU)h(will)g(b)s(e)f(app)s(ended)e
+(to)j(the)g(output)f(\014le.)53 b(An)34 b(empt)m(y)h(output)f(data)227
+5714 y(unit)c(will)h(b)s(e)f(created)h(with)f(all)h(v)-5
+b(alues)31 b(initially)h(=)e(0\).)p eop end
+%%Page: 35 43
+TeXDict begin 35 42 bop 0 299 a Fh(5.4.)72 b(HEADER)31
+b(KEYW)m(ORD)g(READ/WRITE)g(R)m(OUTINES)1495 b Fj(35)95
+555 y Fe(int)47 b(fits_copy_header)d(/)j(ffcphd)286 668
+y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(>)i(int)g(*status\))0
+942 y Fi(9)81 b Fj(Delete)35 b(the)e(CHDU)h(in)f(the)g(FITS)f(\014le.)
+50 b(An)m(y)33 b(follo)m(wing)i(HDUs)e(will)h(b)s(e)e(shifted)h(forw)m
+(ard)g(in)g(the)g(\014le,)h(to)227 1054 y(\014ll)k(in)f(the)g(gap)h
+(created)g(b)m(y)g(the)f(deleted)h(HDU.)h(In)d(the)i(case)g(of)g
+(deleting)g(the)g(primary)e(arra)m(y)i(\(the)227 1167
+y(\014rst)30 b(HDU)h(in)f(the)h(\014le\))g(then)f(the)h(curren)m(t)f
+(primary)f(arra)m(y)i(will)g(b)s(e)f(replace)h(b)m(y)g(a)g(n)m(ull)f
+(primary)f(arra)m(y)227 1280 y(con)m(taining)k(the)f(minim)m(um)e(set)i
+(of)g(required)e(k)m(eyw)m(ords)i(and)e(no)i(data.)44
+b(If)31 b(there)g(are)h(more)f(extensions)227 1393 y(in)f(the)g(\014le)
+g(follo)m(wing)i(the)e(one)g(that)h(is)f(deleted,)h(then)f(the)g(the)g
+(CHDU)h(will)f(b)s(e)g(rede\014ned)e(to)j(p)s(oin)m(t)f(to)227
+1506 y(the)d(follo)m(wing)h(extension.)41 b(If)26 b(there)h(are)g(no)g
+(follo)m(wing)h(extensions)f(then)g(the)g(CHDU)g(will)g(b)s(e)f
+(rede\014ned)227 1619 y(to)36 b(p)s(oin)m(t)f(to)g(the)g(previous)f
+(HDU.)i(The)e(output)h(hdut)m(yp)s(e)e(parameter)i(returns)f(the)h(t)m
+(yp)s(e)g(of)f(the)h(new)227 1732 y(CHDU.)c(A)g(n)m(ull)f(p)s(oin)m
+(ter)g(ma)m(y)h(b)s(e)f(giv)m(en)i(for)e(hdut)m(yp)s(e)f(if)h(the)h
+(returned)e(v)-5 b(alue)31 b(is)f(not)h(needed.)95 2005
+y Fe(int)47 b(fits_delete_hdu)d(/)j(ffdhdu)286 2118 y(\(fitsfile)f
+(*fptr,)g(>)h(int)g(*hdutype,)e(int)i(*status\))0 2468
+y Ff(5.4)135 b(Header)46 b(Keyw)l(ord)g(Read/W)-11 b(rite)46
+b(Routines)0 2722 y Fj(These)35 b(routines)g(read)f(or)h(write)h(k)m
+(eyw)m(ords)f(in)g(the)g(Curren)m(t)f(Header)h(Unit)g(\(CHU\).)h(Wild)g
+(card)e(c)m(haracters)0 2834 y(\(*,)28 b(?,)g(or)e(#\))h(ma)m(y)g(b)s
+(e)f(used)g(when)f(sp)s(ecifying)i(the)g(name)f(of)h(the)g(k)m(eyw)m
+(ord)g(to)g(b)s(e)f(read:)39 b(a)27 b(')10 b(?')39 b(will)27
+b(matc)m(h)h(an)m(y)0 2947 y(single)35 b(c)m(haracter)g(at)g(that)f(p)s
+(osition)g(in)g(the)g(k)m(eyw)m(ord)h(name)f(and)f(a)h('*')h(will)g
+(matc)m(h)f(an)m(y)h(length)f(\(including)0 3060 y(zero\))c(string)f
+(of)g(c)m(haracters.)42 b(The)28 b('#')h(c)m(haracter)i(will)e(matc)m
+(h)h(an)m(y)f(consecutiv)m(e)i(string)e(of)g(decimal)h(digits)f(\(0)0
+3173 y(-)35 b(9\).)55 b(When)35 b(a)g(wild)g(card)g(is)g(used)f(the)h
+(routine)g(will)g(only)g(searc)m(h)h(for)f(a)g(matc)m(h)h(from)e(the)h
+(curren)m(t)g(header)0 3286 y(p)s(osition)27 b(to)h(the)f(end)f(of)h
+(the)g(header)g(and)f(will)h(not)g(resume)g(the)g(searc)m(h)g(from)g
+(the)g(top)g(of)g(the)g(header)g(bac)m(k)g(to)0 3399
+y(the)k(original)i(header)e(p)s(osition)g(as)h(is)f(done)g(when)f(no)h
+(wildcards)g(are)h(included)e(in)h(the)g(k)m(eyw)m(ord)h(name.)43
+b(The)0 3512 y(\014ts)p 127 3512 28 4 v 32 w(read)p 331
+3512 V 33 w(record)29 b(routine)h(ma)m(y)g(b)s(e)f(used)f(to)i(set)g
+(the)g(starting)g(p)s(osition)f(when)g(doing)g(wild)g(card)h(searc)m
+(hes.)41 b(A)0 3625 y(status)29 b(v)-5 b(alue)30 b(of)f(KEY)p
+809 3625 V 32 w(NO)p 980 3625 V 33 w(EXIST)f(is)h(returned)e(if)i(the)g
+(sp)s(eci\014ed)f(k)m(eyw)m(ord)i(to)f(b)s(e)g(read)f(is)h(not)h(found)
+d(in)i(the)0 3738 y(header.)0 4045 y Fd(5.4.1)112 b(Keyw)m(ord)38
+b(Reading)g(Routines)0 4264 y Fi(1)81 b Fj(Return)33
+b(the)h(n)m(um)m(b)s(er)e(of)i(existing)h(k)m(eyw)m(ords)g(\(not)f
+(coun)m(ting)h(the)f(END)g(k)m(eyw)m(ord\))h(and)e(the)h(amoun)m(t)h
+(of)227 4377 y(space)e(curren)m(tly)f(a)m(v)-5 b(ailable)34
+b(for)e(more)g(k)m(eyw)m(ords.)46 b(It)32 b(returns)e(morek)m(eys)j(=)f
+(-1)g(if)g(the)g(header)g(has)g(not)227 4489 y(y)m(et)27
+b(b)s(een)d(closed.)40 b(Note)26 b(that)g(CFITSIO)d(will)j(dynamically)
+g(add)e(space)i(if)f(required)f(when)g(writing)h(new)227
+4602 y(k)m(eyw)m(ords)32 b(to)g(a)f(header)g(so)h(in)f(practice)h
+(there)g(is)f(no)g(limit)h(to)g(the)f(n)m(um)m(b)s(er)f(of)i(k)m(eyw)m
+(ords)f(that)h(can)g(b)s(e)227 4715 y(added)e(to)h(a)f(header.)41
+b(A)30 b(n)m(ull)g(p)s(oin)m(ter)h(ma)m(y)f(b)s(e)g(en)m(tered)h(for)f
+(the)g(morek)m(eys)h(parameter)g(if)f(it's)h(v)-5 b(alue)31
+b(is)227 4828 y(not)g(needed.)95 5102 y Fe(int)47 b(fits_get_hdrspace)c
+(/)48 b(ffghsp)286 5215 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*keysexist,)e
+(int)i(*morekeys,)e(int)i(*status\))0 5488 y Fi(2)81
+b Fj(Return)28 b(the)h(sp)s(eci\014ed)f(k)m(eyw)m(ord.)41
+b(In)29 b(the)g(\014rst)f(routine,)i(the)f(datat)m(yp)s(e)h(parameter)g
+(sp)s(eci\014es)e(the)h(desired)227 5601 y(returned)e(data)h(t)m(yp)s
+(e)g(of)g(the)g(k)m(eyw)m(ord)h(v)-5 b(alue)28 b(and)f(can)h(ha)m(v)m
+(e)h(one)f(of)g(the)g(follo)m(wing)h(sym)m(b)s(olic)g(constan)m(t)227
+5714 y(v)-5 b(alues:)47 b(TSTRING,)33 b(TLOGICAL)f(\(==)h(in)m(t\),)j
+(TBYTE,)d(TSHOR)-8 b(T,)33 b(TUSHOR)-8 b(T,)32 b(TINT,)h(TUINT,)p
+eop end
+%%Page: 36 44
+TeXDict begin 36 43 bop 0 299 a Fj(36)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)227 555 y Fj(TLONG,)24 b(TULONG,)g(TLONGLONG,)g(TFLO)m(A)
+-8 b(T,)25 b(TDOUBLE,)f(TCOMPLEX,)f(and)h(TDBLCOM-)227
+668 y(PLEX.)j(Within)f(the)h(con)m(text)h(of)f(this)g(routine,)g
+(TSTRING)f(corresp)s(onds)f(to)i(a)g('c)m(har*')h(data)f(t)m(yp)s(e,)h
+(i.e.,)227 781 y(a)k(p)s(oin)m(ter)g(to)g(a)g(c)m(haracter)i(arra)m(y)
+-8 b(.)45 b(Data)33 b(t)m(yp)s(e)f(con)m(v)m(ersion)h(will)f(b)s(e)f(p)
+s(erformed)f(for)i(n)m(umeric)f(v)-5 b(alues)32 b(if)227
+894 y(the)27 b(k)m(eyw)m(ord)g(v)-5 b(alue)27 b(do)s(es)f(not)h(ha)m(v)
+m(e)h(the)f(same)g(data)g(t)m(yp)s(e.)40 b(If)26 b(the)h(v)-5
+b(alue)27 b(of)g(the)f(k)m(eyw)m(ord)i(is)e(unde\014ned)227
+1007 y(\(i.e.,)31 b(the)e(v)-5 b(alue)30 b(\014eld)e(is)h(blank\))g
+(then)f(an)h(error)g(status)g(=)f(V)-10 b(ALUE)p 2627
+1007 28 4 v 33 w(UNDEFINED)30 b(will)g(b)s(e)e(returned.)227
+1156 y(The)c(second)f(routine)h(returns)f(the)h(k)m(eyw)m(ord)g(v)-5
+b(alue)24 b(as)g(a)g(c)m(haracter)i(string)d(\(a)i(literal)g(cop)m(y)g
+(of)f(what)f(is)h(in)227 1269 y(the)j(v)-5 b(alue)26
+b(\014eld\))g(regardless)h(of)f(the)g(in)m(trinsic)h(data)g(t)m(yp)s(e)
+f(of)g(the)g(k)m(eyw)m(ord.)40 b(The)26 b(third)f(routine)h(returns)227
+1382 y(the)45 b(en)m(tire)h(80-c)m(haracter)i(header)c(record)h(of)g
+(the)g(k)m(eyw)m(ord,)k(with)c(an)m(y)g(trailing)h(blank)e(c)m
+(haracters)227 1495 y(stripp)s(ed)37 b(o\013.)64 b(The)38
+b(fourth)f(routine)h(returns)f(the)h(\(next\))h(header)f(record)g(that)
+h(con)m(tains)g(the)f(literal)227 1608 y(string)31 b(of)f(c)m
+(haracters)i(sp)s(eci\014ed)e(b)m(y)g(the)g('string')h(argumen)m(t.)227
+1757 y(If)f(a)h(NULL)f(commen)m(t)i(p)s(oin)m(ter)e(is)g(supplied)g
+(then)g(the)g(commen)m(t)i(string)e(will)h(not)f(b)s(e)g(returned.)95
+2013 y Fe(int)47 b(fits_read_key)e(/)i(ffgky)286 2126
+y(\(fitsfile)f(*fptr,)g(int)h(datatype,)e(char)i(*keyname,)e(>)i(DTYPE)
+g(*value,)334 2238 y(char)g(*comment,)e(int)i(*status\))95
+2464 y(int)g(fits_read_keyword)c(/)48 b(ffgkey)286 2577
+y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h(char)g(*value,)f(char)g
+(*comment,)334 2690 y(int)h(*status\))95 2916 y(int)g(fits_read_card)d
+(/)k(ffgcrd)286 3029 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h
+(char)g(*card,)f(int)h(*status\))95 3255 y(int)g(fits_read_str)e(/)i
+(ffgstr)286 3368 y(\(fitsfile)f(*fptr,)g(char)g(*string,)g(>)h(char)g
+(*card,)f(int)h(*status\))0 3623 y Fi(3)81 b Fj(Return)38
+b(the)h(n)m(th)f(header)h(record)g(in)f(the)i(CHU.)f(The)f(\014rst)g(k)
+m(eyw)m(ord)i(in)e(the)h(header)g(is)g(at)g(k)m(eyn)m(um)g(=)227
+3736 y(1;)53 b(if)45 b(k)m(eyn)m(um)g(=)f(0)h(then)g(these)g(routines)g
+(simply)f(reset)h(the)h(in)m(ternal)f(CFITSIO)e(p)s(oin)m(ter)i(to)h
+(the)227 3849 y(b)s(eginning)35 b(of)h(the)g(header)f(so)h(that)g
+(subsequen)m(t)f(k)m(eyw)m(ord)h(op)s(erations)g(will)g(start)g(at)g
+(the)g(top)g(of)g(the)227 3962 y(header)26 b(\(e.g.,)j(prior)c(to)h
+(searc)m(hing)h(for)f(k)m(eyw)m(ords)g(using)f(wild)g(cards)h(in)f(the)
+h(k)m(eyw)m(ord)h(name\).)39 b(The)26 b(\014rst)227 4074
+y(routine)32 b(returns)e(the)i(en)m(tire)h(80-c)m(haracter)h(header)e
+(record)g(\(with)f(trailing)i(blanks)e(truncated\),)i(while)227
+4187 y(the)41 b(second)f(routine)g(parses)g(the)g(record)h(and)e
+(returns)g(the)i(name,)i(v)-5 b(alue,)43 b(and)d(commen)m(t)h(\014elds)
+f(as)227 4300 y(separate)32 b(\(blank)f(truncated\))g(c)m(haracter)i
+(strings.)42 b(If)30 b(a)h(NULL)g(commen)m(t)h(p)s(oin)m(ter)f(is)g
+(giv)m(en)h(on)f(input,)227 4413 y(then)f(the)h(commen)m(t)g(string)g
+(will)f(not)h(b)s(e)f(returned.)95 4668 y Fe(int)47 b(fits_read_record)
+d(/)j(ffgrec)286 4781 y(\(fitsfile)f(*fptr,)g(int)h(keynum,)e(>)j(char)
+f(*card,)f(int)h(*status\))95 5007 y(int)g(fits_read_keyn)d(/)k(ffgkyn)
+286 5120 y(\(fitsfile)e(*fptr,)g(int)h(keynum,)e(>)j(char)f(*keyname,)e
+(char)h(*value,)334 5233 y(char)h(*comment,)e(int)i(*status\))0
+5488 y Fi(4)81 b Fj(Return)44 b(the)i(next)g(k)m(eyw)m(ord)g(whose)f
+(name)h(matc)m(hes)g(one)g(of)g(the)f(strings)h(in)f('inclist')i(but)e
+(do)s(es)g(not)227 5601 y(matc)m(h)31 b(an)m(y)g(of)g(the)f(strings)g
+(in)g('exclist'.)43 b(The)30 b(strings)g(in)g(inclist)h(and)f(exclist)i
+(ma)m(y)e(con)m(tain)i(wild)e(card)227 5714 y(c)m(haracters)k(\(*,)f
+(?,)f(and)f(#\))h(as)g(describ)s(ed)f(at)i(the)f(b)s(eginning)f(of)h
+(this)g(section.)46 b(This)31 b(routine)h(searc)m(hes)p
+eop end
+%%Page: 37 45
+TeXDict begin 37 44 bop 0 299 a Fh(5.4.)72 b(HEADER)31
+b(KEYW)m(ORD)g(READ/WRITE)g(R)m(OUTINES)1495 b Fj(37)227
+555 y(from)35 b(the)g(curren)m(t)g(header)g(p)s(osition)g(to)h(the)f
+(end)f(of)h(the)h(header,)g(only)-8 b(,)37 b(and)d(do)s(es)h(not)g(con)
+m(tin)m(ue)i(the)227 668 y(searc)m(h)32 b(from)e(the)h(top)g(of)g(the)g
+(header)g(bac)m(k)g(to)h(the)f(original)h(p)s(osition.)42
+b(The)31 b(curren)m(t)f(header)h(p)s(osition)227 781
+y(ma)m(y)e(b)s(e)e(reset)h(with)g(the)g(\013grec)g(routine.)40
+b(Note)29 b(that)g(nexc)f(ma)m(y)g(b)s(e)f(set)h(=)g(0)g(if)g(there)g
+(are)g(no)g(k)m(eyw)m(ords)227 894 y(to)h(b)s(e)f(excluded.)39
+b(This)28 b(routine)g(returns)f(status)h(=)g(KEY)p 2268
+894 28 4 v 32 w(NO)p 2439 894 V 33 w(EXIST)f(if)h(a)h(matc)m(hing)g(k)m
+(eyw)m(ord)g(is)f(not)227 1007 y(found.)95 1226 y Fe(int)47
+b(fits_find_nextkey)c(/)48 b(ffgnxk)286 1339 y(\(fitsfile)e(*fptr,)g
+(char)g(**inclist,)f(int)i(ninc,)g(char)f(**exclist,)334
+1452 y(int)h(nexc,)f(>)i(char)e(*card,)h(int)94 b(*status\))0
+1671 y Fi(5)81 b Fj(Return)25 b(the)h(ph)m(ysical)g(units)g(string)g
+(from)f(an)h(existing)h(k)m(eyw)m(ord.)39 b(This)26 b(routine)g(uses)f
+(a)h(lo)s(cal)i(con)m(v)m(en)m(tion,)227 1784 y(sho)m(wn)d(in)g(the)g
+(follo)m(wing)i(example,)g(in)e(whic)m(h)g(the)h(k)m(eyw)m(ord)f(units)
+g(are)h(enclosed)g(in)f(square)g(brac)m(k)m(ets)h(in)227
+1896 y(the)k(b)s(eginning)f(of)h(the)g(k)m(eyw)m(ord)g(commen)m(t)g
+(\014eld.)40 b(A)30 b(n)m(ull)g(string)f(is)h(returned)e(if)i(no)f
+(units)g(are)h(de\014ned)227 2009 y(for)g(the)h(k)m(eyw)m(ord.)239
+2228 y Fe(VELOCITY=)809 b(12.3)46 b(/)i([km/s])e(orbital)g(speed)95
+2454 y(int)h(fits_read_key_unit)c(/)48 b(ffgunt)286 2567
+y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h(char)g(*unit,)f(int)h
+(*status\))0 2786 y Fi(6)81 b Fj(Concatenate)39 b(the)f(header)f(k)m
+(eyw)m(ords)h(in)g(the)f(CHDU)h(in)m(to)h(a)f(single)g(long)g(string)g
+(of)g(c)m(haracters.)64 b(This)227 2899 y(pro)m(vides)28
+b(a)h(con)m(v)m(enien)m(t)h(w)m(a)m(y)f(of)g(passing)f(all)h(or)f(part)
+g(of)g(the)h(header)f(information)g(in)g(a)h(FITS)e(HDU)i(to)227
+3012 y(other)i(subroutines.)39 b(Eac)m(h)31 b(80-c)m(haracter)h
+(\014xed-length)f(k)m(eyw)m(ord)f(record)g(is)g(app)s(ended)e(to)j(the)
+f(output)227 3125 y(c)m(haracter)j(string,)f(in)f(order,)g(with)g(no)g
+(in)m(terv)m(ening)i(separator)f(or)f(terminating)h(c)m(haracters.)45
+b(The)31 b(last)227 3238 y(header)e(record)g(is)g(terminated)h(with)f
+(a)g(NULL)g(c)m(haracter.)42 b(These)29 b(routine)g(allo)s(cates)j
+(memory)d(for)g(the)227 3351 y(returned)k(c)m(haracter)j(arra)m(y)-8
+b(,)37 b(so)d(the)h(calling)h(program)e(m)m(ust)g(free)g(the)h(memory)f
+(when)f(\014nished.)51 b(The)227 3464 y(cleanest)32 b(w)m(a)m(y)g(to)f
+(do)f(this)g(is)h(to)g(call)g(the)g(\014ts)p 1823 3464
+V 32 w(free)p 1999 3464 V 33 w(memory)g(routine.)227
+3607 y(There)38 b(are)h(2)g(related)g(routines:)57 b(\014ts)p
+1581 3607 V 32 w(hdr2str)37 b(simply)h(concatenates)j(all)f(the)e
+(existing)i(k)m(eyw)m(ords)e(in)227 3720 y(the)44 b(header;)51
+b(\014ts)p 863 3720 V 33 w(con)m(v)m(ert)p 1185 3720
+V 34 w(hdr2str)43 b(is)h(similar,)k(except)d(that)f(if)g(the)g(CHDU)h
+(is)f(a)g(tile)h(compressed)227 3833 y(image)c(\(stored)f(in)f(a)h
+(binary)e(table\))j(then)e(it)h(will)f(\014rst)g(con)m(v)m(ert)i(that)f
+(header)f(bac)m(k)h(to)g(that)g(of)g(the)227 3946 y(corresp)s(onding)30
+b(normal)g(FITS)g(image)h(b)s(efore)f(concatenating)j(the)e(k)m(eyw)m
+(ords.)227 4089 y(Selected)f(k)m(eyw)m(ords)e(ma)m(y)h(b)s(e)e
+(excluded)h(from)g(the)g(returned)f(c)m(haracter)j(string.)40
+b(If)27 b(the)i(second)f(param-)227 4202 y(eter)h(\(no)s(commen)m(ts\))
+g(is)f(TR)m(UE)g(\(nonzero\))h(then)e(an)m(y)i(COMMENT,)f(HISTOR)-8
+b(Y,)27 b(or)h(blank)g(k)m(eyw)m(ords)227 4315 y(in)i(the)h(header)f
+(will)h(not)f(b)s(e)g(copied)h(to)g(the)g(output)f(string.)227
+4458 y(The)25 b('exclist')j(parameter)e(ma)m(y)g(b)s(e)f(used)g(to)h
+(supply)e(a)i(list)h(of)e(k)m(eyw)m(ords)h(that)h(are)f(to)g(b)s(e)f
+(excluded)g(from)227 4571 y(the)k(output)g(c)m(haracter)h(string.)41
+b(Wild)29 b(card)g(c)m(haracters)h(\(*,)g(?,)f(and)g(#\))g(ma)m(y)g(b)s
+(e)f(used)g(in)h(the)g(excluded)227 4684 y(k)m(eyw)m(ord)h(names.)41
+b(If)29 b(no)g(additional)i(k)m(eyw)m(ords)f(are)g(to)g(b)s(e)f
+(excluded,)h(then)f(set)h(nexc)g(=)f(0)h(and)f(sp)s(ecify)227
+4797 y(NULL)i(for)f(the)g(the)h(**exclist)i(parameter.)95
+5016 y Fe(int)47 b(fits_hdr2str)e(/)i(ffhdr2str)286 5129
+y(\(fitsfile)f(*fptr,)g(int)h(nocomments,)d(char)j(**exclist,)e(int)i
+(nexc,)286 5242 y(>)h(char)e(**header,)g(int)h(*nkeys,)e(int)i
+(*status\))95 5468 y(int)g(fits_convert_hdr2str)c(/)k(ffcnvthdr2str)286
+5581 y(\(fitsfile)f(*fptr,)g(int)h(nocomments,)d(char)j(**exclist,)e
+(int)i(nexc,)286 5694 y(>)h(char)e(**header,)g(int)h(*nkeys,)e(int)i
+(*status\))p eop end
+%%Page: 38 46
+TeXDict begin 38 45 bop 0 299 a Fj(38)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Fd(5.4.2)112 b(Keyw)m(ord)38 b(W)-9
+b(riting)37 b(Routines)0 775 y Fi(1)81 b Fj(W)-8 b(rite)32
+b(a)g(k)m(eyw)m(ord)g(of)f(the)h(appropriate)f(data)h(t)m(yp)s(e)g(in)m
+(to)g(the)g(CHU.)f(The)g(\014rst)g(routine)g(simply)g(app)s(ends)227
+888 y(a)j(new)f(k)m(eyw)m(ord)h(whereas)f(the)g(second)h(routine)f
+(will)h(up)s(date)e(the)i(v)-5 b(alue)33 b(and)g(commen)m(t)h(\014elds)
+f(of)h(the)227 1001 y(k)m(eyw)m(ord)g(if)g(it)g(already)g(exists,)h
+(otherwise)f(it)g(app)s(ends)e(a)i(new)f(k)m(eyw)m(ord.)51
+b(Note)35 b(that)f(the)g(address)e(to)227 1114 y(the)37
+b(v)-5 b(alue,)38 b(and)d(not)i(the)f(v)-5 b(alue)36
+b(itself,)j(m)m(ust)d(b)s(e)f(en)m(tered.)59 b(The)35
+b(datat)m(yp)s(e)i(parameter)g(sp)s(eci\014es)f(the)227
+1227 y(data)25 b(t)m(yp)s(e)f(of)g(the)g(k)m(eyw)m(ord)g(v)-5
+b(alue)25 b(with)e(one)h(of)g(the)g(follo)m(wing)i(v)-5
+b(alues:)37 b(TSTRING,)23 b(TLOGICAL)g(\(==)227 1340
+y(in)m(t\),)38 b(TBYTE,)d(TSHOR)-8 b(T,)34 b(TUSHOR)-8
+b(T,)35 b(TINT,)f(TUINT,)h(TLONG,)g(TLONGLONG,)g(TULONG,)227
+1452 y(TFLO)m(A)-8 b(T,)24 b(TDOUBLE.)f(Within)h(the)f(con)m(text)i(of)
+f(this)f(routine,)i(TSTRING)d(corresp)s(onds)g(to)i(a)g('c)m(har*')227
+1565 y(data)j(t)m(yp)s(e,)h(i.e.,)g(a)f(p)s(oin)m(ter)f(to)i(a)e(c)m
+(haracter)i(arra)m(y)-8 b(.)41 b(A)26 b(n)m(ull)g(p)s(oin)m(ter)h(ma)m
+(y)g(b)s(e)e(en)m(tered)i(for)f(the)h(commen)m(t)227
+1678 y(parameter)k(in)f(whic)m(h)g(case)i(the)e(k)m(eyw)m(ord)h(commen)
+m(t)h(\014eld)d(will)i(b)s(e)f(unmo)s(di\014ed)e(or)j(left)g(blank.)95
+1953 y Fe(int)47 b(fits_write_key)d(/)k(ffpky)286 2066
+y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(char)i(*keyname,)e(DTYPE)h
+(*value,)477 2179 y(char)h(*comment,)e(>)j(int)f(*status\))95
+2404 y(int)g(fits_update_key)d(/)j(ffuky)286 2517 y(\(fitsfile)f
+(*fptr,)g(int)h(datatype,)e(char)i(*keyname,)e(DTYPE)h(*value,)477
+2630 y(char)h(*comment,)e(>)j(int)f(*status\))0 2905
+y Fi(2)81 b Fj(W)-8 b(rite)44 b(a)g(k)m(eyw)m(ord)f(with)g(a)h(n)m(ull)
+f(or)g(unde\014ned)e(v)-5 b(alue)43 b(\(i.e.,)48 b(the)c(v)-5
+b(alue)43 b(\014eld)g(in)g(the)g(k)m(eyw)m(ord)h(is)f(left)227
+3018 y(blank\).)70 b(The)40 b(\014rst)f(routine)h(simply)g(app)s(ends)e
+(a)j(new)e(k)m(eyw)m(ord)i(whereas)f(the)g(second)g(routine)h(will)227
+3130 y(up)s(date)27 b(the)h(v)-5 b(alue)29 b(and)e(commen)m(t)i
+(\014elds)e(of)h(the)g(k)m(eyw)m(ord)g(if)g(it)g(already)h(exists,)g
+(otherwise)f(it)h(app)s(ends)227 3243 y(a)g(new)g(k)m(eyw)m(ord.)40
+b(A)29 b(n)m(ull)g(p)s(oin)m(ter)g(ma)m(y)g(b)s(e)g(en)m(tered)g(for)g
+(the)g(commen)m(t)g(parameter)h(in)e(whic)m(h)h(case)h(the)227
+3356 y(k)m(eyw)m(ord)h(commen)m(t)h(\014eld)d(will)i(b)s(e)f(unmo)s
+(di\014ed)e(or)j(left)g(blank.)95 3631 y Fe(int)47 b
+(fits_write_key_null)c(/)k(ffpkyu)286 3744 y(\(fitsfile)f(*fptr,)g
+(char)g(*keyname,)g(char)g(*comment,)g(>)h(int)g(*status\))95
+3970 y(int)g(fits_update_key_null)c(/)k(ffukyu)286 4082
+y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*comment,)g(>)h(int)g
+(*status\))0 4357 y Fi(3)81 b Fj(W)-8 b(rite)40 b(\(app)s(end\))e(a)h
+(COMMENT)g(or)g(HISTOR)-8 b(Y)38 b(k)m(eyw)m(ord)i(to)f(the)g(CHU.)h
+(The)e(commen)m(t)i(or)f(history)227 4470 y(string)31
+b(will)f(b)s(e)g(con)m(tin)m(ued)h(o)m(v)m(er)h(m)m(ultiple)f(k)m(eyw)m
+(ords)g(if)f(it)h(is)f(longer)h(than)f(70)i(c)m(haracters.)95
+4744 y Fe(int)47 b(fits_write_comment)c(/)48 b(ffpcom)286
+4857 y(\(fitsfile)e(*fptr,)g(char)g(*comment,)g(>)h(int)g(*status\))95
+5083 y(int)g(fits_write_history)c(/)48 b(ffphis)286 5196
+y(\(fitsfile)e(*fptr,)g(char)g(*history,)g(>)h(int)g(*status\))0
+5470 y Fi(4)81 b Fj(W)-8 b(rite)29 b(the)g(D)m(A)-8 b(TE)29
+b(k)m(eyw)m(ord)g(to)g(the)g(CHU.)f(The)g(k)m(eyw)m(ord)h(v)-5
+b(alue)29 b(will)f(con)m(tain)i(the)f(curren)m(t)f(system)g(date)227
+5583 y(as)k(a)g(c)m(haracter)h(string)e(in)g('yyyy-mm-ddThh:mm:ss')e
+(format.)44 b(If)31 b(a)h(D)m(A)-8 b(TE)32 b(k)m(eyw)m(ord)g(already)g
+(exists)227 5696 y(in)c(the)f(header,)i(then)e(this)g(routine)h(will)g
+(simply)f(up)s(date)g(the)h(k)m(eyw)m(ord)g(v)-5 b(alue)28
+b(with)f(the)h(curren)m(t)g(date.)p eop end
+%%Page: 39 47
+TeXDict begin 39 46 bop 0 299 a Fh(5.4.)72 b(HEADER)31
+b(KEYW)m(ORD)g(READ/WRITE)g(R)m(OUTINES)1495 b Fj(39)95
+555 y Fe(int)47 b(fits_write_date)d(/)j(ffpdat)286 668
+y(\(fitsfile)f(*fptr,)g(>)h(int)g(*status\))0 930 y Fi(5)81
+b Fj(W)-8 b(rite)34 b(a)g(user)f(sp)s(eci\014ed)g(k)m(eyw)m(ord)h
+(record)f(in)m(to)h(the)g(CHU.)g(This)e(is)i(a)g(lo)m(w{lev)m(el)i
+(routine)e(whic)m(h)f(can)h(b)s(e)227 1043 y(used)f(to)h(write)f(an)m
+(y)h(arbitrary)f(record)g(in)m(to)i(the)e(header.)50
+b(The)32 b(record)i(m)m(ust)f(conform)g(to)h(the)g(all)g(the)227
+1156 y(FITS)c(format)h(requiremen)m(ts.)95 1418 y Fe(int)47
+b(fits_write_record)c(/)48 b(ffprec)286 1531 y(\(fitsfile)e(*fptr,)g
+(char)g(*card,)g(>)i(int)f(*status\))0 1793 y Fi(6)81
+b Fj(Up)s(date)34 b(an)g(80-c)m(haracter)j(record)e(in)f(the)g(CHU.)h
+(If)f(a)h(k)m(eyw)m(ord)f(with)h(the)f(input)g(name)g(already)h
+(exists,)227 1906 y(then)e(it)h(is)f(o)m(v)m(erwritten)h(b)m(y)f(the)g
+(v)-5 b(alue)34 b(of)f(card.)49 b(This)32 b(could)h(mo)s(dify)f(the)i
+(k)m(eyw)m(ord)f(name)g(as)h(w)m(ell)g(as)227 2019 y(the)c(v)-5
+b(alue)30 b(and)e(commen)m(t)j(\014elds.)40 b(If)29 b(the)g(k)m(eyw)m
+(ord)h(do)s(esn't)f(already)h(exist)g(then)g(a)f(new)g(k)m(eyw)m(ord)h
+(card)227 2132 y(is)h(app)s(ended)d(to)j(the)g(header.)95
+2394 y Fe(int)47 b(fits_update_card)d(/)j(ffucrd)286
+2507 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*card,)g(>)i
+(int)f(*status\))0 2769 y Fi(7)81 b Fj(Mo)s(dify)30 b(\(o)m(v)m
+(erwrite\))i(the)f(commen)m(t)g(\014eld)f(of)h(an)f(existing)h(k)m(eyw)
+m(ord.)95 3031 y Fe(int)47 b(fits_modify_comment)c(/)k(ffmcom)286
+3144 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*comment,)g(>)h
+(int)g(*status\))0 3406 y Fi(8)81 b Fj(W)-8 b(rite)33
+b(the)f(ph)m(ysical)h(units)f(string)g(in)m(to)h(an)f(existing)h(k)m
+(eyw)m(ord.)46 b(This)32 b(routine)g(uses)g(a)g(lo)s(cal)i(con)m(v)m
+(en)m(tion,)227 3519 y(sho)m(wn)e(in)g(the)h(follo)m(wing)h(example,)g
+(in)e(whic)m(h)g(the)h(k)m(eyw)m(ord)g(units)f(are)h(enclosed)g(in)f
+(square)g(brac)m(k)m(ets)227 3632 y(in)e(the)h(b)s(eginning)f(of)g(the)
+h(k)m(eyw)m(ord)g(commen)m(t)g(\014eld.)239 3894 y Fe(VELOCITY=)809
+b(12.3)46 b(/)i([km/s])e(orbital)g(speed)95 4120 y(int)h
+(fits_write_key_unit)c(/)k(ffpunt)286 4233 y(\(fitsfile)f(*fptr,)g
+(char)g(*keyname,)g(char)g(*unit,)g(>)i(int)f(*status\))0
+4495 y Fi(9)81 b Fj(Rename)30 b(an)h(existing)g(k)m(eyw)m(ord,)g
+(preserving)f(the)g(curren)m(t)h(v)-5 b(alue)30 b(and)g(commen)m(t)i
+(\014elds.)95 4757 y Fe(int)47 b(fits_modify_name)d(/)j(ffmnam)286
+4870 y(\(fitsfile)f(*fptr,)g(char)g(*oldname,)g(char)g(*newname,)g(>)h
+(int)g(*status\))0 5132 y Fi(10)f Fj(Delete)37 b(a)e(k)m(eyw)m(ord)g
+(record.)54 b(The)34 b(space)i(o)s(ccupied)e(b)m(y)h(the)g(k)m(eyw)m
+(ord)g(is)g(reclaimed)h(b)m(y)e(mo)m(ving)i(all)g(the)227
+5245 y(follo)m(wing)e(header)f(records)f(up)g(one)h(ro)m(w)f(in)h(the)f
+(header.)48 b(The)32 b(\014rst)g(routine)g(deletes)i(a)f(k)m(eyw)m(ord)
+g(at)h(a)227 5357 y(sp)s(eci\014ed)23 b(p)s(osition)h(in)g(the)g
+(header)f(\(the)i(\014rst)e(k)m(eyw)m(ord)h(is)g(at)g(p)s(osition)g
+(1\),)i(whereas)e(the)g(second)g(routine)227 5470 y(deletes)30
+b(a)f(sp)s(eci\014cally)g(named)f(k)m(eyw)m(ord.)41 b(Wild)29
+b(card)f(c)m(haracters)i(ma)m(y)f(b)s(e)f(used)g(when)f(sp)s(ecifying)i
+(the)227 5583 y(name)23 b(of)g(the)f(k)m(eyw)m(ord)h(to)h(b)s(e)e
+(deleted.)38 b(The)22 b(third)g(routine)h(deletes)g(the)g(\(next\))h(k)
+m(eyw)m(ord)f(that)g(con)m(tains)227 5696 y(the)31 b(literal)h(c)m
+(haracter)g(string)e(sp)s(eci\014ed)g(b)m(y)g(the)h('string')f(argumen)
+m(t.)p eop end
+%%Page: 40 48
+TeXDict begin 40 47 bop 0 299 a Fj(40)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_delete_record)c(/)48
+b(ffdrec)286 668 y(\(fitsfile)e(*fptr,)g(int)142 b(keynum,)94
+b(>)47 b(int)g(*status\))95 894 y(int)g(fits_delete_key)d(/)j(ffdkey)
+286 1007 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(>)h(int)g
+(*status\))95 1233 y(int)g(fits_delete_str)d(/)j(ffdstr)286
+1346 y(\(fitsfile)f(*fptr,)g(char)g(*string,)g(>)h(int)g(*status\))0
+1678 y Ff(5.5)135 b(Primary)46 b(Arra)l(y)f(or)g(IMA)l(GE)f(Extension)i
+(I/O)f(Routines)0 1929 y Fj(These)22 b(routines)g(read)h(or)f(write)h
+(data)g(v)-5 b(alues)23 b(in)f(the)g(primary)g(data)h(arra)m(y)g
+(\(i.e.,)j(the)c(\014rst)g(HDU)h(in)f(a)h(FITS)e(\014le\))0
+2042 y(or)32 b(an)g(IMA)m(GE)h(extension.)47 b(There)31
+b(are)i(also)g(routines)f(to)h(get)g(information)f(ab)s(out)g(the)g
+(data)h(t)m(yp)s(e)g(and)e(size)0 2154 y(of)c(the)g(image.)41
+b(Users)27 b(should)f(also)i(read)f(the)g(follo)m(wing)h(c)m(hapter)g
+(on)f(the)g(CFITSIO)e(iterator)k(function)d(whic)m(h)0
+2267 y(pro)m(vides)33 b(a)h(more)f(`ob)5 b(ject)35 b(orien)m(ted')f
+(metho)s(d)f(of)g(reading)g(and)g(writing)g(images.)51
+b(The)32 b(iterator)j(function)e(is)0 2380 y(a)e(little)i(more)e
+(complicated)h(to)g(use,)f(but)f(the)h(adv)-5 b(an)m(tages)32
+b(are)f(that)h(it)f(usually)g(tak)m(es)h(less)f(co)s(de)g(to)g(p)s
+(erform)0 2493 y(the)37 b(same)f(op)s(eration,)j(and)c(the)i(resulting)
+f(program)g(often)h(runs)e(faster)i(b)s(ecause)f(the)g(FITS)g(\014les)g
+(are)h(read)0 2606 y(and)30 b(written)g(using)g(the)h(most)f(e\016cien)
+m(t)i(blo)s(c)m(k)f(size.)0 2766 y(C)25 b(programmers)h(should)f(note)h
+(that)g(the)h(ordering)e(of)h(arra)m(ys)g(in)g(FITS)f(\014les,)i(and)e
+(hence)h(in)g(all)g(the)g(CFITSIO)0 2879 y(calls,)40
+b(is)d(more)g(similar)h(to)f(the)h(dimensionalit)m(y)g(of)f(arra)m(ys)g
+(in)g(F)-8 b(ortran)38 b(rather)f(than)f(C.)h(F)-8 b(or)38
+b(instance)g(if)f(a)0 2992 y(FITS)28 b(image)i(has)e(NAXIS1)h(=)f(100)i
+(and)e(NAXIS2)h(=)f(50,)i(then)e(a)h(2-D)h(arra)m(y)f(just)f(large)i
+(enough)e(to)i(hold)e(the)0 3105 y(image)k(should)d(b)s(e)h(declared)h
+(as)f(arra)m(y[50][100])k(and)c(not)h(as)f(arra)m(y[100][50].)0
+3265 y(The)h(`datat)m(yp)s(e')h(parameter)g(sp)s(eci\014es)e(the)i
+(data)g(t)m(yp)s(e)f(of)g(the)g(`n)m(ulv)-5 b(al')32
+b(and)f(`arra)m(y')h(p)s(oin)m(ters)f(and)f(can)i(ha)m(v)m(e)0
+3378 y(one)h(of)g(the)g(follo)m(wing)h(v)-5 b(alues:)46
+b(TBYTE,)33 b(TSBYTE,)f(TSHOR)-8 b(T,)32 b(TUSHOR)-8
+b(T,)32 b(TINT,)h(TUINT,)f(TLONG,)0 3491 y(TLONGLONG,)26
+b(TULONG,)g(TFLO)m(A)-8 b(T,)27 b(TDOUBLE.)f(Automatic)i(data)f(t)m(yp)
+s(e)g(con)m(v)m(ersion)g(is)f(p)s(erformed)f(if)0 3604
+y(the)j(data)h(t)m(yp)s(e)f(of)f(the)i(FITS)e(arra)m(y)h(\(as)g
+(de\014ned)f(b)m(y)h(the)g(BITPIX)f(k)m(eyw)m(ord\))i(di\013ers)e(from)
+h(that)g(sp)s(eci\014ed)f(b)m(y)0 3717 y('datat)m(yp)s(e'.)54
+b(The)34 b(data)h(v)-5 b(alues)35 b(are)f(also)i(automatically)h
+(scaled)e(b)m(y)f(the)h(BSCALE)f(and)f(BZER)m(O)h(k)m(eyw)m(ord)0
+3830 y(v)-5 b(alues)31 b(as)f(they)h(are)g(b)s(eing)f(read)g(or)g
+(written)h(in)f(the)g(FITS)g(arra)m(y)-8 b(.)0 4084 y
+Fi(1)81 b Fj(Get)33 b(the)f(data)h(t)m(yp)s(e)f(or)g(equiv)-5
+b(alen)m(t)34 b(data)f(t)m(yp)s(e)f(of)g(the)h(image.)47
+b(The)32 b(\014rst)f(routine)h(returns)f(the)h(ph)m(ysical)227
+4197 y(data)46 b(t)m(yp)s(e)f(of)h(the)f(FITS)f(image,)51
+b(as)45 b(giv)m(en)h(b)m(y)f(the)g(BITPIX)g(k)m(eyw)m(ord,)50
+b(with)44 b(allo)m(w)m(ed)j(v)-5 b(alues)46 b(of)227
+4310 y(BYTE)p 492 4310 28 4 v 33 w(IMG)23 b(\(8\),)i(SHOR)-8
+b(T)p 1215 4310 V 32 w(IMG)23 b(\(16\),)i(LONG)p 1934
+4310 V 33 w(IMG)e(\(32\),)i(LONGLONG)p 2921 4310 V 33
+w(IMG)e(\(64\),)i(FLO)m(A)-8 b(T)p 3684 4310 V 33 w(IMG)227
+4423 y(\(-32\),)31 b(and)c(DOUBLE)p 1043 4423 V 33 w(IMG)h(\(-64\).)42
+b(The)27 b(second)h(routine)f(is)h(similar,)h(except)g(that)f(if)g(the)
+g(image)h(pixel)227 4536 y(v)-5 b(alues)33 b(are)g(scaled,)g(with)f
+(non-default)h(v)-5 b(alues)32 b(for)g(the)h(BZER)m(O)f(and)g(BSCALE)f
+(k)m(eyw)m(ords,)j(then)e(the)227 4649 y(routine)j(will)g(return)e(the)
+i('equiv)-5 b(alen)m(t')36 b(data)f(t)m(yp)s(e)g(that)g(is)f(needed)h
+(to)g(store)g(the)g(scaled)g(v)-5 b(alues.)53 b(F)-8
+b(or)227 4762 y(example,)29 b(if)e(BITPIX)g(=)g(16)h(and)f(BSCALE)f(=)h
+(0.1)h(then)f(the)h(equiv)-5 b(alen)m(t)28 b(data)g(t)m(yp)s(e)g(is)f
+(FLO)m(A)-8 b(T)p 3659 4762 V 33 w(IMG.)227 4875 y(Similarly)25
+b(if)f(BITPIX)g(=)g(16,)i(BSCALE)e(=)g(1,)i(and)d(BZER)m(O)h(=)g
+(32768,)k(then)c(the)g(the)h(pixel)f(v)-5 b(alues)25
+b(span)227 4987 y(the)31 b(range)g(of)f(an)g(unsigned)g(short)g(in)m
+(teger)h(and)f(the)h(returned)e(data)i(t)m(yp)s(e)g(will)f(b)s(e)g
+(USHOR)-8 b(T)p 3572 4987 V 32 w(IMG.)95 5242 y Fe(int)47
+b(fits_get_img_type)c(/)48 b(ffgidt)286 5355 y(\(fitsfile)e(*fptr,)g(>)
+h(int)g(*bitpix,)f(int)h(*status\))95 5581 y(int)g
+(fits_get_img_equivtype)42 b(/)48 b(ffgiet)286 5694 y(\(fitsfile)e
+(*fptr,)g(>)h(int)g(*bitpix,)f(int)h(*status\))p eop
+end
+%%Page: 41 49
+TeXDict begin 41 48 bop 0 299 a Fh(5.5.)72 b(PRIMAR)-8
+b(Y)31 b(ARRA)-8 b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)f(I/O)g(R)m
+(OUTINES)1011 b Fj(41)0 555 y Fi(2)81 b Fj(Get)34 b(the)g(n)m(um)m(b)s
+(er)e(of)i(dimensions,)g(and/or)g(the)g(size)g(of)g(eac)m(h)h
+(dimension)e(in)g(the)h(image)h(.)50 b(The)33 b(n)m(um)m(b)s(er)227
+668 y(of)h(axes)f(in)g(the)g(image)i(is)e(giv)m(en)h(b)m(y)f(naxis,)h
+(and)f(the)g(size)h(of)f(eac)m(h)i(dimension)d(is)h(giv)m(en)h(b)m(y)f
+(the)h(naxes)227 781 y(arra)m(y)d(\(a)g(maxim)m(um)g(of)f(maxdim)g
+(dimensions)g(will)g(b)s(e)g(returned\).)95 1036 y Fe(int)47
+b(fits_get_img_dim)d(/)j(ffgidm)286 1149 y(\(fitsfile)f(*fptr,)g(>)h
+(int)g(*naxis,)f(int)h(*status\))95 1375 y(int)g(fits_get_img_size)c(/)
+48 b(ffgisz)286 1488 y(\(fitsfile)e(*fptr,)g(int)h(maxdim,)e(>)j(long)f
+(*naxes,)e(int)i(*status\))95 1714 y(int)g(fits_get_img_sizell)c(/)k
+(ffgiszll)286 1827 y(\(fitsfile)f(*fptr,)g(int)h(maxdim,)e(>)j
+(LONGLONG)d(*naxes,)h(int)h(*status\))95 2052 y(int)g
+(fits_get_img_param)c(/)48 b(ffgipr)286 2165 y(\(fitsfile)e(*fptr,)g
+(int)h(maxdim,)e(>)j(int)f(*bitpix,)e(int)i(*naxis,)f(long)h(*naxes,)
+334 2278 y(int)g(*status\))95 2504 y(int)g(fits_get_img_paramll)c(/)k
+(ffgiprll)286 2617 y(\(fitsfile)f(*fptr,)g(int)h(maxdim,)e(>)j(int)f
+(*bitpix,)e(int)i(*naxis,)f(LONGLONG)g(*naxes,)334 2730
+y(int)h(*status\))0 2985 y Fi(3)81 b Fj(Create)23 b(a)f(new)g(primary)f
+(arra)m(y)i(or)f(IMA)m(GE)i(extension)e(with)g(a)h(sp)s(eci\014ed)f
+(data)h(t)m(yp)s(e)f(and)g(size.)38 b(If)22 b(the)h(FITS)227
+3098 y(\014le)30 b(is)g(curren)m(tly)f(empt)m(y)h(then)g(a)g(primary)f
+(arra)m(y)h(is)g(created,)h(otherwise)f(a)g(new)f(IMA)m(GE)i(extension)
+f(is)227 3211 y(app)s(ended)f(to)i(the)g(\014le.)95 3466
+y Fe(int)47 b(fits_create_img)d(/)j(ffcrim)286 3579 y(\()h(fitsfile)d
+(*fptr,)h(int)h(bitpix,)f(int)h(naxis,)f(long)h(*naxes,)f(>)h(int)g
+(*status\))95 3805 y(int)g(fits_create_imgll)c(/)48 b(ffcrimll)286
+3918 y(\()g(fitsfile)d(*fptr,)h(int)h(bitpix,)f(int)h(naxis,)f
+(LONGLONG)g(*naxes,)g(>)h(int)g(*status\))0 4173 y Fi(4)81
+b Fj(Cop)m(y)39 b(an)f(n-dimensional)h(image)h(in)f(a)g(particular)h
+(ro)m(w)f(and)f(column)h(of)g(a)g(binary)f(table)i(\(in)f(a)g(v)m
+(ector)227 4286 y(column\))31 b(to)g(or)f(from)g(a)h(primary)e(arra)m
+(y)i(or)g(image)g(extension.)227 4435 y(The)c('cell2image')k(routine)d
+(will)g(app)s(end)e(a)i(new)f(image)i(extension)f(\(or)g(primary)f
+(arra)m(y\))h(to)h(the)e(output)227 4548 y(\014le.)43
+b(An)m(y)31 b(W)m(CS)g(k)m(eyw)m(ords)g(asso)s(ciated)h(with)f(the)g
+(input)f(column)h(image)h(will)f(b)s(e)f(translated)i(in)m(to)g(the)227
+4661 y(appropriate)j(form)g(for)g(an)f(image)j(extension.)55
+b(An)m(y)35 b(other)g(k)m(eyw)m(ords)g(in)g(the)g(table)h(header)f
+(that)h(are)227 4774 y(not)28 b(sp)s(eci\014cally)h(related)f(to)h
+(de\014ning)e(the)g(binary)g(table)i(structure)e(or)h(to)g(other)g
+(columns)g(in)f(the)h(table)227 4887 y(will)j(also)g(b)s(e)f(copied)h
+(to)g(the)g(header)f(of)g(the)h(output)f(image.)227 5036
+y(The)i('image2cell')k(routine)c(will)h(cop)m(y)g(the)g(input)e(image)j
+(in)m(to)f(the)g(sp)s(eci\014ed)f(ro)m(w)g(and)g(column)g(of)h(the)227
+5149 y(curren)m(t)e(binary)g(table)h(in)f(the)h(output)f(\014le.)44
+b(The)31 b(binary)f(table)j(HDU)f(m)m(ust)f(exist)h(b)s(efore)f
+(calling)i(this)227 5262 y(routine,)h(but)f(it)h(ma)m(y)f(b)s(e)g(empt)
+m(y)-8 b(,)35 b(with)e(no)g(ro)m(ws)g(or)g(columns)g(of)g(data.)50
+b(The)33 b(sp)s(eci\014ed)f(column)h(\(and)227 5375 y(ro)m(w\))e(will)h
+(b)s(e)e(created)h(if)g(it)g(do)s(es)g(not)g(already)g(exist.)43
+b(The)30 b('cop)m(yk)m(ey\015ag')j(parameter)e(con)m(trols)h(whic)m(h)
+227 5488 y(k)m(eyw)m(ords)26 b(are)g(copied)g(from)f(the)g(input)g
+(image)h(to)g(the)g(header)f(of)h(the)f(output)g(table:)39
+b(0)26 b(=)f(no)h(k)m(eyw)m(ords)227 5601 y(will)k(b)s(e)g(copied,)g(1)
+h(=)e(all)i(k)m(eyw)m(ords)f(will)g(b)s(e)f(copied)h(\(except)i(those)e
+(k)m(eyw)m(ords)g(that)h(w)m(ould)e(b)s(e)g(in)m(v)-5
+b(alid)227 5714 y(in)30 b(the)h(table)g(header\),)g(and)f(2)g(=)g(cop)m
+(y)i(only)e(the)h(W)m(CS)f(k)m(eyw)m(ords.)p eop end
+%%Page: 42 50
+TeXDict begin 42 49 bop 0 299 a Fj(42)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_copy_cell2image)286
+668 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(char)i(*colname,)e
+(long)i(rownum,)334 781 y(>)h(int)e(*status\))95 1007
+y(int)h(fits_copy_image2cell)286 1120 y(\(fitsfile)f(*infptr,)f
+(fitsfile)h(*outfptr,)f(char)i(*colname,)e(long)i(rownum,)334
+1233 y(int)g(copykeyflag)e(>)i(int)g(*status\))0 1474
+y Fi(5)81 b Fj(W)-8 b(rite)40 b(a)f(rectangular)g(subimage)g(\(or)g
+(the)g(whole)g(image\))h(to)f(the)g(FITS)f(data)h(arra)m(y)-8
+b(.)67 b(The)38 b(fpixel)h(and)227 1587 y(lpixel)30 b(arra)m(ys)g(giv)m
+(e)h(the)f(co)s(ordinates)g(of)f(the)h(\014rst)f(\(lo)m(w)m(er)i(left)f
+(corner\))g(and)f(last)h(\(upp)s(er)e(righ)m(t)i(corner\))227
+1700 y(pixels)h(in)f(FITS)g(image)h(to)g(b)s(e)f(written)g(to.)95
+1941 y Fe(int)47 b(fits_write_subset)c(/)48 b(ffpss)286
+2054 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(long)i(*fpixel,)e(long)i
+(*lpixel,)334 2167 y(DTYPE)f(*array,)g(>)i(int)f(*status\))0
+2408 y Fi(6)81 b Fj(W)-8 b(rite)39 b(pixels)g(in)m(to)g(the)g(FITS)f
+(data)h(arra)m(y)-8 b(.)66 b('fpixel')39 b(is)f(an)g(arra)m(y)h(of)g
+(length)g(NAXIS)f(whic)m(h)g(giv)m(es)i(the)227 2521
+y(co)s(ordinate)k(of)f(the)g(starting)g(pixel)g(to)h(b)s(e)e(written)h
+(to,)j(suc)m(h)d(that)g(fpixel[0])h(is)f(in)f(the)h(range)g(1)g(to)227
+2634 y(NAXIS1,)34 b(fpixel[1])f(is)g(in)f(the)g(range)h(1)g(to)g
+(NAXIS2,)g(etc.)48 b(The)32 b(\014rst)g(pair)g(of)h(routines)f(simply)g
+(writes)227 2747 y(the)40 b(arra)m(y)g(of)g(pixels)f(to)i(the)e(FITS)g
+(\014le)h(\(doing)g(data)g(t)m(yp)s(e)g(con)m(v)m(ersion)h(if)e
+(necessary\))h(whereas)g(the)227 2860 y(second)c(routines)g(will)g
+(substitute)f(the)h(appropriate)g(FITS)f(n)m(ull)g(v)-5
+b(alue)37 b(for)e(an)m(y)h(elemen)m(ts)h(whic)m(h)f(are)227
+2973 y(equal)41 b(to)g(the)f(input)g(v)-5 b(alue)40 b(of)h(n)m(ulv)-5
+b(al)40 b(\(note)h(that)g(this)f(parameter)h(giv)m(es)h(the)e(address)f
+(of)i(the)f(n)m(ull)227 3086 y(v)-5 b(alue,)36 b(not)f(the)f(n)m(ull)g
+(v)-5 b(alue)35 b(itself)7 b(\).)53 b(F)-8 b(or)35 b(in)m(teger)h(FITS)
+d(arra)m(ys,)j(the)f(FITS)e(n)m(ull)h(v)-5 b(alue)35
+b(is)f(de\014ned)f(b)m(y)227 3199 y(the)26 b(BLANK)f(k)m(eyw)m(ord)h
+(\(an)g(error)f(is)g(returned)f(if)i(the)f(BLANK)h(k)m(eyw)m(ord)g(do)s
+(esn't)f(exist\).)40 b(F)-8 b(or)26 b(\015oating)227
+3312 y(p)s(oin)m(t)g(FITS)f(arra)m(ys)h(the)g(sp)s(ecial)g(IEEE)f(NaN)i
+(\(Not-a-Num)m(b)s(er\))g(v)-5 b(alue)26 b(will)g(b)s(e)f(written)h(in)
+m(to)h(the)f(FITS)227 3425 y(\014le.)66 b(If)38 b(a)h(n)m(ull)f(p)s
+(oin)m(ter)h(is)f(en)m(tered)h(for)g(n)m(ulv)-5 b(al,)41
+b(then)d(the)h(n)m(ull)f(v)-5 b(alue)39 b(is)g(ignored)g(and)e(this)i
+(routine)227 3537 y(b)s(eha)m(v)m(es)31 b(the)g(same)g(as)f(\014ts)p
+1189 3537 28 4 v 33 w(write)p 1424 3537 V 33 w(pix.)95
+3779 y Fe(int)47 b(fits_write_pix)d(/)k(ffppx)286 3892
+y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(long)i(*fpixel,)e(LONGLONG)h
+(nelements,)334 4005 y(DTYPE)g(*array,)g(int)h(*status\);)95
+4231 y(int)g(fits_write_pixll)d(/)j(ffppxll)286 4343
+y(\(fitsfile)f(*fptr,)g(int)h(datatype,)e(LONGLONG)g(*fpixel,)h
+(LONGLONG)g(nelements,)334 4456 y(DTYPE)g(*array,)g(int)h(*status\);)95
+4682 y(int)g(fits_write_pixnull)c(/)48 b(ffppxn)286 4795
+y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(long)i(*fpixel,)e(LONGLONG)h
+(nelements,)334 4908 y(DTYPE)g(*array,)g(DTYPE)h(*nulval,)e(>)j(int)f
+(*status\);)95 5134 y(int)g(fits_write_pixnullll)c(/)k(ffppxnll)286
+5247 y(\(fitsfile)f(*fptr,)g(int)h(datatype,)e(LONGLONG)g(*fpixel,)h
+(LONGLONG)g(nelements,)334 5360 y(DTYPE)g(*array,)g(DTYPE)h(*nulval,)e
+(>)j(int)f(*status\);)0 5601 y Fi(7)81 b Fj(Set)24 b(FITS)g(data)i
+(arra)m(y)f(elemen)m(ts)h(equal)f(to)g(the)g(appropriate)f(n)m(ull)h
+(pixel)g(v)-5 b(alue.)39 b(F)-8 b(or)25 b(in)m(teger)h(FITS)e(arra)m
+(ys,)227 5714 y(the)34 b(FITS)e(n)m(ull)h(v)-5 b(alue)34
+b(is)f(de\014ned)f(b)m(y)h(the)h(BLANK)f(k)m(eyw)m(ord)h(\(an)f(error)g
+(is)g(returned)f(if)h(the)h(BLANK)p eop end
+%%Page: 43 51
+TeXDict begin 43 50 bop 0 299 a Fh(5.5.)72 b(PRIMAR)-8
+b(Y)31 b(ARRA)-8 b(Y)31 b(OR)f(IMA)m(GE)h(EXTENSION)f(I/O)g(R)m
+(OUTINES)1011 b Fj(43)227 555 y(k)m(eyw)m(ord)23 b(do)s(esn't)g
+(exist\).)39 b(F)-8 b(or)23 b(\015oating)g(p)s(oin)m(t)g(FITS)f(arra)m
+(ys)g(the)h(sp)s(ecial)g(IEEE)f(NaN)h(\(Not-a-Num)m(b)s(er\))227
+668 y(v)-5 b(alue)34 b(will)f(b)s(e)g(written)g(in)m(to)h(the)g(FITS)e
+(\014le.)49 b(Note)34 b(that)g('\014rstelem')g(is)f(a)h(scalar)g
+(giving)g(the)f(o\013set)h(to)227 781 y(the)d(\014rst)e(pixel)i(to)g(b)
+s(e)f(written)g(in)h(the)f(equiv)-5 b(alen)m(t)32 b(1-dimensional)f
+(arra)m(y)g(of)g(image)g(pixels.)95 1034 y Fe(int)47
+b(fits_write_null_img)c(/)k(ffpprn)286 1147 y(\(fitsfile)f(*fptr,)g
+(LONGLONG)f(firstelem,)g(LONGLONG)h(nelements,)f(>)i(int)g(*status\))0
+1399 y Fi(8)81 b Fj(Read)33 b(a)h(rectangular)h(subimage)f(\(or)g(the)g
+(whole)g(image\))h(from)e(the)h(FITS)f(data)h(arra)m(y)-8
+b(.)52 b(The)33 b(fpixel)h(and)227 1512 y(lpixel)c(arra)m(ys)g(giv)m(e)
+h(the)f(co)s(ordinates)g(of)f(the)h(\014rst)f(\(lo)m(w)m(er)i(left)f
+(corner\))g(and)f(last)h(\(upp)s(er)e(righ)m(t)i(corner\))227
+1625 y(pixels)d(to)h(b)s(e)e(read)h(from)g(the)g(FITS)f(image.)41
+b(Unde\014ned)25 b(FITS)h(arra)m(y)i(elemen)m(ts)g(will)f(b)s(e)f
+(returned)g(with)227 1738 y(a)k(v)-5 b(alue)30 b(=)e(*n)m(ullv)-5
+b(al,)31 b(\(note)f(that)g(this)f(parameter)h(giv)m(es)g(the)g(address)
+e(of)h(the)h(n)m(ull)f(v)-5 b(alue,)30 b(not)g(the)f(n)m(ull)227
+1851 y(v)-5 b(alue)36 b(itself)7 b(\))37 b(unless)e(n)m(ulv)-5
+b(al)36 b(=)g(0)g(or)f(*n)m(ulv)-5 b(al)37 b(=)e(0,)j(in)d(whic)m(h)g
+(case)i(no)f(c)m(hec)m(ks)h(for)e(unde\014ned)f(pixels)227
+1964 y(will)d(b)s(e)f(p)s(erformed.)95 2216 y Fe(int)47
+b(fits_read_subset)d(/)j(ffgsv)286 2329 y(\(fitsfile)f(*fptr,)g(int)94
+b(datatype,)46 b(long)g(*fpixel,)g(long)g(*lpixel,)g(long)h(*inc,)334
+2442 y(DTYPE)f(*nulval,)g(>)h(DTYPE)g(*array,)f(int)h(*anynul,)e(int)i
+(*status\))0 2695 y Fi(9)81 b Fj(Read)32 b(pixels)h(from)f(the)g(FITS)g
+(data)h(arra)m(y)-8 b(.)48 b('fpixel')33 b(is)g(the)f(starting)h(pixel)
+g(lo)s(cation)h(and)e(is)h(an)f(arra)m(y)h(of)227 2808
+y(length)h(NAXIS)f(suc)m(h)g(that)h(fpixel[0])g(is)f(in)g(the)h(range)f
+(1)h(to)g(NAXIS1,)g(fpixel[1])g(is)g(in)f(the)g(range)h(1)f(to)227
+2921 y(NAXIS2,)c(etc.)41 b(The)28 b(nelemen)m(ts)h(parameter)f(sp)s
+(eci\014es)g(the)g(n)m(um)m(b)s(er)f(of)h(pixels)h(to)g(read.)39
+b(If)28 b(fpixel)g(is)g(set)227 3034 y(to)36 b(the)f(\014rst)f(pixel,)j
+(and)e(nelemen)m(ts)g(is)g(set)h(equal)g(to)f(the)g(NAXIS1)h(v)-5
+b(alue,)37 b(then)d(this)h(routine)g(w)m(ould)227 3147
+y(read)28 b(the)g(\014rst)f(ro)m(w)h(of)g(the)h(image.)41
+b(Alternativ)m(ely)-8 b(,)31 b(if)d(nelemen)m(ts)h(is)f(set)g(equal)h
+(to)f(NAXIS1)g(*)h(NAXIS2)227 3260 y(then)h(it)h(w)m(ould)f(read)h(an)f
+(en)m(tire)h(2D)g(image,)h(or)f(the)f(\014rst)g(plane)g(of)h(a)g(3-D)g
+(datacub)s(e.)227 3409 y(The)38 b(\014rst)g(2)h(routines)f(will)h
+(return)f(an)m(y)h(unde\014ned)d(pixels)j(in)f(the)h(FITS)e(arra)m(y)i
+(equal)g(to)h(the)e(v)-5 b(alue)227 3522 y(of)36 b(*n)m(ullv)-5
+b(al)36 b(\(note)g(that)g(this)f(parameter)h(giv)m(es)g(the)g(address)e
+(of)i(the)f(n)m(ull)g(v)-5 b(alue,)37 b(not)f(the)f(n)m(ull)g(v)-5
+b(alue)227 3634 y(itself)7 b(\))34 b(unless)d(n)m(ulv)-5
+b(al)32 b(=)g(0)g(or)h(*n)m(ulv)-5 b(al)32 b(=)g(0,)h(in)f(whic)m(h)g
+(case)h(no)f(c)m(hec)m(ks)h(for)f(unde\014ned)e(pixels)i(will)h(b)s(e)
+227 3747 y(p)s(erformed.)42 b(The)31 b(second)h(2)f(routines)h(are)f
+(similar)h(except)g(that)g(an)m(y)g(unde\014ned)d(pixels)i(will)h(ha)m
+(v)m(e)h(the)227 3860 y(corresp)s(onding)d(n)m(ullarra)m(y)g(elemen)m
+(t)i(set)f(equal)g(to)g(TR)m(UE)g(\(=)f(1\).)95 4113
+y Fe(int)47 b(fits_read_pix)e(/)i(ffgpxv)286 4226 y(\(fitsfile)f
+(*fptr,)g(int)94 b(datatype,)46 b(long)g(*fpixel,)g(LONGLONG)f
+(nelements,)334 4339 y(DTYPE)h(*nulval,)g(>)h(DTYPE)g(*array,)f(int)h
+(*anynul,)e(int)i(*status\))95 4565 y(int)g(fits_read_pixll)d(/)j
+(ffgpxvll)286 4677 y(\(fitsfile)f(*fptr,)g(int)94 b(datatype,)46
+b(LONGLONG)f(*fpixel,)h(LONGLONG)f(nelements,)334 4790
+y(DTYPE)h(*nulval,)g(>)h(DTYPE)g(*array,)f(int)h(*anynul,)e(int)i
+(*status\))95 5016 y(int)g(fits_read_pixnull)c(/)48 b(ffgpxf)286
+5129 y(\(fitsfile)e(*fptr,)g(int)94 b(datatype,)46 b(long)g(*fpixel,)g
+(LONGLONG)f(nelements,)334 5242 y(>)j(DTYPE)e(*array,)g(char)g
+(*nullarray,)f(int)i(*anynul,)f(int)g(*status\))95 5468
+y(int)h(fits_read_pixnullll)c(/)k(ffgpxfll)286 5581 y(\(fitsfile)f
+(*fptr,)g(int)94 b(datatype,)46 b(LONGLONG)f(*fpixel,)h(LONGLONG)f
+(nelements,)334 5694 y(>)j(DTYPE)e(*array,)g(char)g(*nullarray,)f(int)i
+(*anynul,)f(int)g(*status\))p eop end
+%%Page: 44 52
+TeXDict begin 44 51 bop 0 299 a Fj(44)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Fi(10)46 b Fj(Cop)m(y)36 b(a)g(rectangular)h
+(section)g(of)g(an)e(image)j(and)d(write)h(it)h(to)f(a)h(new)e(FITS)g
+(primary)g(image)j(or)e(image)227 668 y(extension.)49
+b(The)32 b(new)g(image)i(HDU)g(is)e(app)s(ended)f(to)j(the)f(end)f(of)h
+(the)g(output)f(\014le;)i(all)g(the)f(k)m(eyw)m(ords)227
+781 y(in)39 b(the)f(input)g(image)i(will)f(b)s(e)f(copied)h(to)g(the)g
+(output)f(image.)66 b(The)38 b(common)h(W)m(CS)g(k)m(eyw)m(ords)g(will)
+227 894 y(b)s(e)34 b(up)s(dated)f(if)i(necessary)g(to)g(corresp)s(ond)e
+(to)j(the)e(co)s(ordinates)h(of)g(the)g(section.)54 b(The)34
+b(format)h(of)g(the)227 1007 y(section)29 b(expression)e(is)g(same)g
+(as)h(sp)s(ecifying)f(an)g(image)h(section)h(using)d(the)i(extended)f
+(\014le)g(name)g(syn)m(tax)227 1120 y(\(see)32 b("Image)f(Section")h
+(in)e(Chapter)g(10\).)42 b(\(Examples:)f("1:100,1:200",)36
+b("1:100:2,)d(1:*:2",)g("*,)f(-*"\).)95 1405 y Fe(int)47
+b(fits_copy_image_section)42 b(/)47 b(ffcpimg)286 1518
+y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(char)i(*section,)e
+(int)i(*status\))0 1881 y Ff(5.6)135 b(Image)46 b(Compression)0
+2138 y Fj(CFITSIO)29 b(transparen)m(tly)h(supp)s(orts)f(the)h(2)h
+(metho)s(ds)f(of)g(image)i(compression)e(describ)s(ed)g(b)s(elo)m(w.)0
+2298 y(1\))45 b(The)f(en)m(tire)i(FITS)e(\014le)h(ma)m(y)g(b)s(e)f
+(externally)i(compressed)e(with)g(the)h(gzip)g(or)g(Unix)f(compress)h
+(utilit)m(y)0 2411 y(programs,)37 b(pro)s(ducing)d(a)j(*.gz)g(or)f(*.Z)
+g(\014le,)h(resp)s(ectiv)m(ely)-8 b(.)59 b(When)36 b(reading)g
+(compressed)f(\014les)h(of)g(this)g(t)m(yp)s(e,)0 2524
+y(CFITSIO)43 b(\014rst)h(uncompresses)f(the)i(en)m(tire)g(\014le)g(in)m
+(to)g(memory)g(b)s(efore)f(p)s(erforming)f(the)i(requested)f(read)0
+2636 y(op)s(erations.)c(Output)28 b(\014les)g(can)h(b)s(e)f(directly)i
+(written)e(in)g(the)h(gzip)g(compressed)g(format)g(if)f(the)h(user-sp)s
+(eci\014ed)0 2749 y(\014lename)35 b(ends)e(with)i(`.gz'.)54
+b(In)34 b(this)g(case,)j(CFITSIO)c(initially)j(writes)e(the)h
+(uncompressed)e(\014le)i(in)f(memory)0 2862 y(and)j(then)g(compresses)g
+(it)h(and)f(writes)g(it)h(to)g(disk)f(when)f(the)i(FITS)f(\014le)g(is)g
+(closed,)k(th)m(us)36 b(sa)m(ving)j(user)d(disk)0 2975
+y(space.)59 b(Read)36 b(and)g(write)h(access)g(to)g(these)g(compressed)
+f(FITS)g(\014les)g(is)g(generally)i(quite)e(fast)h(since)g(all)g(the)0
+3088 y(I/O)28 b(is)g(p)s(erformed)e(in)i(memory;)h(the)f(main)g
+(limitation)i(with)e(this)f(tec)m(hnique)i(is)f(that)h(there)f(m)m(ust)
+g(b)s(e)f(enough)0 3201 y(a)m(v)-5 b(ailable)33 b(memory)d(\(or)h(sw)m
+(ap)f(space\))h(to)g(hold)f(the)h(en)m(tire)g(uncompressed)e(FITS)h
+(\014le.)0 3361 y(2\))42 b(CFITSIO)d(also)j(supp)s(orts)d(the)j(FITS)e
+(tiled)h(image)i(compression)e(con)m(v)m(en)m(tion)i(in)e(whic)m(h)f
+(the)i(image)g(is)0 3474 y(sub)s(divided)30 b(in)m(to)j(a)f(grid)g(of)g
+(rectangular)i(tiles,)f(and)f(eac)m(h)h(tile)g(of)g(pixels)f(is)g
+(individually)g(compressed.)45 b(The)0 3587 y(details)33
+b(of)f(this)g(FITS)f(compression)h(con)m(v)m(en)m(tion)j(are)d(describ)
+s(ed)f(at)i(the)f(FITS)f(Supp)s(ort)f(O\016ce)i(w)m(eb)g(site)h(at)0
+3700 y(h)m(ttp://\014ts.gsfc.nasa.go)m(v/\014ts)p 1114
+3700 28 4 v 37 w(registry)-8 b(.h)m(tml)33 b(Basically)-8
+b(,)35 b(the)d(compressed)g(image)h(tiles)f(are)h(stored)e(in)h(ro)m
+(ws)0 3813 y(of)i(a)h(v)-5 b(ariable)35 b(length)f(arra)m(y)h(column)f
+(in)f(a)i(FITS)e(binary)g(table,)k(ho)m(w)m(ev)m(er)e(CFITSIO)e
+(recognizes)i(that)g(this)0 3926 y(binary)i(table)i(extension)f(con)m
+(tains)h(an)e(image)i(and)e(treats)i(it)f(as)g(if)g(it)g(w)m(ere)g(an)g
+(IMA)m(GE)g(extension.)64 b(This)0 4039 y(tile-compressed)37
+b(format)f(is)f(esp)s(ecially)i(w)m(ell)g(suited)e(for)h(compressing)f
+(v)m(ery)h(large)h(images)g(b)s(ecause)e(a\))i(the)0
+4152 y(FITS)28 b(header)h(k)m(eyw)m(ords)h(remain)f(uncompressed)e(for)
+i(rapid)g(read)g(access,)h(and)f(b)s(ecause)g(b\))g(it)g(is)h(p)s
+(ossible)e(to)0 4264 y(extract)f(and)e(uncompress)g(sections)i(of)f
+(the)g(image)h(without)e(ha)m(ving)i(to)f(uncompress)f(the)h(en)m(tire)
+g(image.)41 b(This)0 4377 y(format)34 b(is)g(also)h(m)m(uc)m(h)e(more)h
+(e\013ectiv)m(e)j(in)c(compressing)h(\015oating)h(p)s(oin)m(t)e(images)
+i(than)f(simply)f(compressing)0 4490 y(the)39 b(image)i(using)d(gzip)i
+(or)f(compress)g(b)s(ecause)g(it)h(appro)m(ximates)g(the)g(\015oating)g
+(p)s(oin)m(t)f(v)-5 b(alues)39 b(with)g(scaled)0 4603
+y(in)m(tegers)32 b(whic)m(h)e(can)g(then)g(b)s(e)g(compressed)g(more)h
+(e\016cien)m(tly)-8 b(.)0 4763 y(Curren)m(tly)41 b(CFITSIO)e(supp)s
+(orts)h(3)h(general)i(purp)s(ose)c(compression)i(algorithms)i(plus)d
+(one)i(other)f(sp)s(ecial-)0 4876 y(purp)s(ose)31 b(compression)i(tec)m
+(hnique)h(that)f(is)g(designed)g(for)g(data)g(masks)g(with)g(p)s
+(ositiv)m(e)h(in)m(teger)g(pixel)f(v)-5 b(alues.)0 4989
+y(The)40 b(3)g(general)h(purp)s(ose)e(algorithms)i(are)f(GZIP)-8
+b(,)41 b(Rice,)j(and)39 b(HCOMPRESS,)g(and)h(the)g(sp)s(ecial)h(purp)s
+(ose)0 5102 y(algorithm)32 b(is)g(the)f(IRAF)h(pixel)f(list)h
+(compression)f(tec)m(hnique)h(\(PLIO\).)g(In)e(principle,)i(an)m(y)f(n)
+m(um)m(b)s(er)f(of)i(other)0 5215 y(compression)e(algorithms)i(could)e
+(also)h(b)s(e)f(supp)s(orted)f(b)m(y)h(the)g(FITS)g(tiled)h(image)h
+(compression)e(con)m(v)m(en)m(tion.)0 5375 y(The)35 b(FITS)g(image)h
+(can)g(b)s(e)f(sub)s(divided)e(in)m(to)k(an)m(y)f(desired)f
+(rectangular)h(grid)f(of)h(compression)f(tiles.)57 b(With)0
+5488 y(the)32 b(GZIP)-8 b(,)33 b(Rice,)h(and)e(PLIO)f(algorithms,)j
+(the)e(default)h(is)f(to)h(tak)m(e)h(eac)m(h)g(ro)m(w)e(of)h(the)f
+(image)i(as)e(a)h(tile.)47 b(The)0 5601 y(HCOMPRESS)25
+b(algorithm)i(is)g(inheren)m(tly)f(2-dimensional)h(in)f(nature,)i(so)e
+(the)h(default)f(in)g(this)g(case)i(is)e(to)h(tak)m(e)0
+5714 y(16)h(ro)m(ws)g(of)f(the)h(image)h(p)s(er)d(tile.)41
+b(In)27 b(most)h(cases)g(it)g(mak)m(es)h(little)g(di\013erence)f(what)f
+(tiling)i(pattern)f(is)f(used,)h(so)p eop end
+%%Page: 45 53
+TeXDict begin 45 52 bop 0 299 a Fh(5.6.)72 b(IMA)m(GE)31
+b(COMPRESSION)2567 b Fj(45)0 555 y(the)33 b(default)g(tiles)g(are)g
+(usually)g(adequate.)48 b(In)32 b(the)h(case)g(of)g(v)m(ery)g(small)g
+(images,)i(it)e(could)g(b)s(e)f(more)g(e\016cien)m(t)0
+668 y(to)h(compress)f(the)h(whole)f(image)i(as)e(a)h(single)g(tile.)48
+b(Note)34 b(that)f(the)f(image)i(dimensions)d(are)i(not)g(required)e
+(to)0 781 y(b)s(e)d(an)g(in)m(teger)i(m)m(ultiple)f(of)f(the)h(tile)g
+(dimensions;)g(if)f(not,)i(then)e(the)g(tiles)i(at)f(the)f(edges)h(of)g
+(the)f(image)i(will)f(b)s(e)0 894 y(smaller)i(than)f(the)h(other)f
+(tiles.)0 1054 y(The)41 b(4)g(supp)s(orted)f(image)i(compression)f
+(algorithms)h(are)g(all)g('loss-less')h(when)d(applied)h(to)h(in)m
+(teger)h(FITS)0 1167 y(images;)25 b(the)c(pixel)g(v)-5
+b(alues)20 b(are)h(preserv)m(ed)f(exactly)j(with)d(no)g(loss)h(of)f
+(information)h(during)e(the)i(compression)g(and)0 1280
+y(uncompression)34 b(pro)s(cess.)54 b(In)34 b(addition,)j(the)e
+(HCOMPRESS)f(algorithm)i(supp)s(orts)d(a)i('lossy')h(compression)0
+1393 y(mo)s(de)41 b(that)h(will)g(pro)s(duce)f(larger)h(amoun)m(t)g(of)
+g(image)h(compression.)74 b(This)41 b(is)g(ac)m(hiev)m(ed)j(b)m(y)d(sp)
+s(ecifying)h(a)0 1506 y(non-zero)32 b(v)-5 b(alue)32
+b(for)f(the)g(HCOMPRESS)f(\\scale")k(parameter.)44 b(Since)31
+b(the)g(amoun)m(t)h(of)g(compression)f(that)h(is)0 1619
+y(ac)m(hiev)m(ed)g(dep)s(ends)d(directly)i(on)f(the)h(RMS)f(noise)h(in)
+f(the)h(image,)h(it)f(is)g(usually)f(more)g(con)m(v)m(en)m(tion)j(to)e
+(sp)s(ecify)0 1732 y(the)f(HCOMPRESS)e(scale)i(factor)h(relativ)m(e)g
+(to)f(the)g(RMS)f(noise.)41 b(Setting)30 b(s)f(=)g(2.5)i(means)e(use)g
+(a)h(scale)h(factor)0 1844 y(that)h(is)f(2.5)i(times)e(the)h
+(calculated)h(RMS)e(noise)h(in)f(the)g(image)i(tile.)44
+b(In)31 b(some)g(cases)h(it)g(ma)m(y)g(b)s(e)f(desirable)g(to)0
+1957 y(sp)s(ecify)h(the)g(exact)i(scaling)f(to)g(b)s(e)e(used,)h
+(instead)h(of)f(sp)s(ecifying)g(it)g(relativ)m(e)j(to)d(the)h
+(calculated)h(noise)e(v)-5 b(alue.)0 2070 y(This)37 b(ma)m(y)h(b)s(e)f
+(done)g(b)m(y)h(sp)s(ecifying)f(the)h(negativ)m(e)i(of)d(desired)g
+(scale)i(v)-5 b(alue)38 b(\(t)m(ypically)i(in)d(the)h(range)g(-2)g(to)0
+2183 y(-100\).)0 2343 y(V)-8 b(ery)43 b(high)g(compression)f(factors)i
+(\(of)f(100)h(or)f(more\))g(can)g(b)s(e)f(ac)m(hiev)m(ed)j(b)m(y)d
+(using)h(large)g(HCOMPRESS)0 2456 y(scale)31 b(v)-5 b(alues,)31
+b(ho)m(w)m(ev)m(er,)h(this)e(can)g(pro)s(duce)f(undesirable)g(\\blo)s
+(c)m(ky")j(artifacts)f(in)f(the)g(compressed)g(image.)42
+b(A)0 2569 y(v)-5 b(ariation)27 b(of)g(the)f(HCOMPRESS)f(algorithm)i
+(\(called)h(HSCOMPRESS\))c(can)i(b)s(e)g(used)f(in)h(this)g(case)h(to)g
+(apply)0 2682 y(a)f(small)h(amoun)m(t)f(of)h(smo)s(othing)f(of)g(the)g
+(image)h(when)e(it)i(is)f(uncompressed)f(to)h(help)g(co)m(v)m(er)i(up)d
+(these)h(artifacts.)0 2795 y(This)36 b(smo)s(othing)h(is)g(purely)f
+(cosmetic)j(and)d(do)s(es)h(not)g(cause)g(an)m(y)h(signi\014can)m(t)g
+(c)m(hange)g(to)f(the)g(image)i(pixel)0 2908 y(v)-5 b(alues.)0
+3068 y(Floating)34 b(p)s(oin)m(t)f(FITS)e(images)j(\(whic)m(h)e(ha)m(v)
+m(e)i(BITPIX)e(=)g(-32)h(or)g(-64\))g(usually)f(con)m(tain)i(to)s(o)f
+(m)m(uc)m(h)g(\\noise")0 3181 y(in)k(the)g(least)i(signi\014can)m(t)f
+(bits)f(of)h(the)f(man)m(tissa)h(of)g(the)f(pixel)h(v)-5
+b(alues)37 b(to)h(b)s(e)f(e\013ectiv)m(ely)j(compressed)d(with)0
+3294 y(an)m(y)d(lossless)g(algorithm.)52 b(Consequen)m(tly)-8
+b(,)35 b(\015oating)g(p)s(oin)m(t)e(images)i(are)f(\014rst)f(quan)m
+(tized)h(in)m(to)h(scaled)g(in)m(teger)0 3407 y(pixel)26
+b(v)-5 b(alues)25 b(\(and)g(th)m(us)g(thro)m(wing)h(a)m(w)m(a)m(y)h(m)m
+(uc)m(h)e(of)h(the)f(noise\))h(b)s(efore)f(b)s(eing)g(compressed)g
+(with)g(the)h(sp)s(eci\014ed)0 3520 y(algorithm)d(\(either)g(GZIP)-8
+b(,)23 b(Rice,)i(or)d(HCOMPRESS\).)f(This)h(tec)m(hnique)h(pro)s(duces)
+e(m)m(uc)m(h)h(higher)g(compression)0 3633 y(factors)33
+b(than)e(simply)g(using)g(the)h(GZIP)g(utilit)m(y)h(to)f(externally)h
+(compress)f(the)f(whole)h(FITS)f(\014le,)i(but)e(it)h(also)0
+3745 y(means)d(that)h(the)g(original)g(\015oating)g(v)-5
+b(alue)30 b(pixel)f(v)-5 b(alues)30 b(are)g(not)f(exactly)i(preserv)m
+(ed.)40 b(When)29 b(done)g(prop)s(erly)-8 b(,)0 3858
+y(this)33 b(in)m(teger)h(scaling)f(tec)m(hnique)h(will)f(only)f
+(discard)h(the)f(insigni\014can)m(t)i(noise)f(while)g(still)g
+(preserving)f(all)i(the)0 3971 y(real)43 b(information)f(in)g(the)h
+(image.)77 b(The)42 b(amoun)m(t)g(of)h(precision)f(that)h(is)f
+(retained)h(in)e(the)i(pixel)f(v)-5 b(alues)43 b(is)0
+4084 y(con)m(trolled)37 b(b)m(y)d(the)i("quan)m(tization)h(lev)m(el")g
+(parameter,)g(q.)54 b(Larger)35 b(v)-5 b(alues)36 b(of)f(q)f(will)i
+(result)f(in)f(compressed)0 4197 y(images)h(whose)e(pixels)h(more)f
+(closely)i(matc)m(h)g(the)e(\015oating)i(p)s(oin)m(t)e(pixel)h(v)-5
+b(alues,)35 b(but)e(at)h(the)g(same)g(time)g(the)0 4310
+y(amoun)m(t)j(of)f(compression)g(that)h(is)f(ac)m(hiev)m(ed)i(will)f(b)
+s(e)e(reduced.)58 b(Users)36 b(should)f(exp)s(erimen)m(t)i(with)e
+(di\013eren)m(t)0 4423 y(v)-5 b(alues)25 b(for)g(this)g(parameter)g(to)
+h(determine)f(the)g(optimal)h(v)-5 b(alue)25 b(that)h(preserv)m(es)f
+(all)h(the)f(useful)f(information)h(in)0 4536 y(the)k(image,)h(without)
+f(needlessly)g(preserving)f(all)h(the)g(\\noise")h(whic)m(h)e(will)h(h)
+m(urt)f(the)h(compression)f(e\016ciency)-8 b(.)0 4696
+y(The)38 b(default)g(v)-5 b(alue)38 b(for)g(the)g(quan)m(tization)i
+(scale)g(factor)f(is)f(16.,)j(whic)m(h)d(means)g(that)g(scaled)h(in)m
+(teger)h(pixel)0 4809 y(v)-5 b(alues)38 b(will)g(b)s(e)g(quan)m(tized)g
+(suc)m(h)g(that)g(the)g(di\013erence)h(b)s(et)m(w)m(een)f(adjacen)m(t)h
+(in)m(teger)h(v)-5 b(alues)38 b(will)g(b)s(e)f(1/16th)0
+4922 y(of)e(the)h(noise)f(lev)m(el)i(in)e(the)g(image)h(bac)m(kground.)
+55 b(CFITSIO)34 b(uses)g(an)h(optimized)h(algorithm)g(to)g(accurately)0
+5035 y(estimate)41 b(the)e(noise)h(in)f(the)g(image.)68
+b(As)39 b(an)g(example,)k(if)c(the)g(RMS)g(noise)g(in)g(the)h(bac)m
+(kground)e(pixels)i(of)0 5148 y(an)35 b(image)h(=)f(32.0,)j(then)d(the)
+h(spacing)f(b)s(et)m(w)m(een)h(adjacen)m(t)g(scaled)g(in)m(teger)h
+(pixel)e(v)-5 b(alues)36 b(will)f(equal)h(2.0)g(b)m(y)0
+5261 y(default.)63 b(Note)38 b(that)h(the)e(RMS)h(noise)g(is)f(indep)s
+(enden)m(tly)g(calculated)j(for)d(eac)m(h)i(tile)f(of)g(the)g(image,)j
+(so)d(the)0 5373 y(resulting)24 b(in)m(teger)i(scaling)f(factor)g(ma)m
+(y)g(\015uctuate)g(sligh)m(tly)g(for)f(eac)m(h)i(tile.)40
+b(In)23 b(some)i(cases)g(it)f(ma)m(y)h(b)s(e)f(desirable)0
+5486 y(to)29 b(sp)s(ecify)f(the)h(exact)h(quan)m(tization)h(lev)m(el)f
+(to)f(b)s(e)f(used,)g(instead)h(of)g(sp)s(ecifying)f(it)h(relativ)m(e)i
+(to)e(the)g(calculated)0 5599 y(noise)42 b(v)-5 b(alue.)73
+b(This)40 b(ma)m(y)i(b)s(e)f(done)f(b)m(y)h(sp)s(ecifying)g(the)h
+(negativ)m(e)h(of)e(desired)g(quan)m(tization)i(lev)m(el)g(for)e(the)0
+5712 y(v)-5 b(alue)29 b(of)h(q.)40 b(In)28 b(the)h(previous)g(example,)
+h(one)f(could)g(sp)s(ecify)g(q)f(=)h(-2.0)h(so)g(that)f(the)g(quan)m
+(tized)h(in)m(teger)g(lev)m(els)p eop end
+%%Page: 46 54
+TeXDict begin 46 53 bop 0 299 a Fj(46)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Fj(di\013er)f(b)m(y)g(2.0.)42 b(Larger)29
+b(negativ)m(e)j(v)-5 b(alues)29 b(for)h(q)f(means)g(that)h(the)f(lev)m
+(els)i(are)f(more)f(coarsely)i(spaced,)f(and)f(will)0
+668 y(pro)s(duce)g(higher)h(compression)h(factors.)0
+828 y(There)37 b(are)g(2)h(metho)s(ds)e(for)h(sp)s(ecifying)g(all)h
+(the)g(parameters)f(needed)g(to)h(write)f(a)h(FITS)e(image)j(in)d(the)i
+(tile)0 941 y(compressed)c(format.)53 b(The)34 b(parameters)h(ma)m(y)g
+(either)g(b)s(e)e(sp)s(eci\014ed)h(at)h(run)e(time)i(as)g(part)f(of)h
+(the)f(\014le)h(name)0 1054 y(of)41 b(the)g(output)f(compressed)g(FITS)
+g(\014le,)k(or)c(the)h(writing)g(program)f(ma)m(y)i(call)g(a)f(set)g
+(of)g(help)s(er)e(CFITSIO)0 1167 y(subroutines)29 b(that)i(are)g(pro)m
+(vided)f(for)g(sp)s(ecifying)g(the)h(parameter)g(v)-5
+b(alues,)31 b(as)f(describ)s(ed)f(b)s(elo)m(w:)0 1327
+y(1\))23 b(A)m(t)g(run)e(time,)k(when)c(sp)s(ecifying)h(the)h(name)f
+(of)g(the)h(output)f(FITS)f(\014le)i(to)g(b)s(e)e(created,)k(the)e
+(user)e(can)i(indicate)0 1440 y(that)32 b(images)g(should)e(b)s(e)h
+(written)g(in)g(tile-compressed)i(format)e(b)m(y)h(enclosing)g(the)f
+(compression)h(parameters)0 1553 y(in)e(square)g(brac)m(k)m(ets)i
+(follo)m(wing)g(the)e(ro)s(ot)h(disk)f(\014le)g(name)h(in)f(the)h
+(follo)m(wing)g(format:)191 1809 y Fe([compress)45 b(NAME)i(T1,T2;)f(q)
+h(QLEVEL,)f(s)i(HSCALE])0 2064 y Fj(where)191 2320 y
+Fe(NAME)142 b(=)47 b(algorithm)f(name:)94 b(GZIP,)46
+b(Rice,)h(HCOMPRESS,)e(HSCOMPRSS)g(or)i(PLIO)620 2433
+y(may)g(be)h(abbreviated)c(to)j(the)g(first)g(letter)f(\(or)h(HS)g(for)
+g(HSCOMPRESS\))191 2546 y(T1,T2)94 b(=)47 b(tile)g(dimension)e(\(e.g.)i
+(100,100)f(for)g(square)h(tiles)f(100)h(pixels)f(wide\))191
+2659 y(QLEVEL)g(=)h(quantization)e(level)h(for)h(floating)f(point)g
+(FITS)h(images)191 2772 y(HSCALE)f(=)h(HCOMPRESS)f(scale)g(factor;)g
+(default)g(=)h(0)h(which)e(is)h(lossless.)0 3027 y Fj(Here)31
+b(are)g(a)f(few)h(examples)f(of)h(this)f(extended)h(syn)m(tax:)191
+3283 y Fe(myfile.fit[compress])185 b(-)48 b(use)f(the)g(default)e
+(compression)g(algorithm)g(\(Rice\))1432 3396 y(and)i(the)g(default)e
+(tile)i(size)g(\(row)f(by)i(row\))191 3622 y(myfile.fit[compress)42
+b(GZIP])47 b(-)g(use)g(the)g(specified)e(compression)g(algorithm;)191
+3735 y(myfile.fit[compress)d(Rice])238 b(only)46 b(the)h(first)g
+(letter)f(of)h(the)g(algorithm)191 3848 y(myfile.fit[compress)42
+b(PLIO])238 b(name)46 b(is)i(required.)191 3960 y(myfile.fit[compress)
+42 b(HCOMP])191 4186 y(myfile.fit[compress)g(R)48 b(100,100])141
+b(-)47 b(use)g(Rice)g(and)g(100)g(x)g(100)g(pixel)f(tiles)191
+4412 y(myfile.fit[compress)c(R;)48 b(q)f(10.0])f(-)i(quantization)c
+(level)j(=)g(\(RMS-noise\))e(/)i(10.)191 4525 y(myfile.fit[compress)42
+b(HS;)47 b(s)h(2.0])94 b(-)h(HSCOMPRESS)45 b(\(with)i(smoothing\))2005
+4638 y(and)f(scale)h(=)g(2.0)g(*)h(RMS-noise)0 4894 y
+Fj(2\))29 b(Before)g(calling)g(the)f(CFITSIO)e(routine)i(to)h(write)f
+(the)g(image)h(header)f(k)m(eyw)m(ords)g(\(e.g.,)j(\014ts)p
+3335 4894 28 4 v 32 w(create)p 3603 4894 V 34 w(image\))0
+5007 y(the)37 b(programmer)g(can)g(call)i(the)e(routines)g(describ)s
+(ed)f(b)s(elo)m(w)h(to)h(sp)s(ecify)f(the)g(compression)g(algorithm)i
+(and)0 5119 y(the)g(tiling)h(pattern)f(that)g(is)g(to)g(b)s(e)f(used.)
+65 b(There)38 b(are)i(routines)e(for)h(sp)s(ecifying)f(the)h(v)-5
+b(arious)39 b(compression)0 5232 y(parameters)31 b(and)e(similar)i
+(routines)f(to)i(return)d(the)h(curren)m(t)h(v)-5 b(alues)30
+b(of)h(the)f(parameters:)95 5488 y Fe(int)47 b
+(fits_set_compression_type\()o(fit)o(sfil)o(e)42 b(*fptr,)k(int)h
+(comptype,)e(int)i(*status\))95 5601 y(int)g
+(fits_set_tile_dim\(fitsfile)41 b(*fptr,)46 b(int)h(ndim,)f(long)h
+(*tilesize,)e(int)i(*status\))95 5714 y(int)g
+(fits_set_quantize_level\(fi)o(tsf)o(ile)41 b(*fptr,)46
+b(float)h(qlevel,)f(int)h(*status\))p eop end
+%%Page: 47 55
+TeXDict begin 47 54 bop 0 299 a Fh(5.6.)72 b(IMA)m(GE)31
+b(COMPRESSION)2567 b Fj(47)95 555 y Fe(int)47 b
+(fits_set_hcomp_scale\(fitsf)o(ile)41 b(*fptr,)46 b(float)h(scale,)f
+(int)h(*status\))95 668 y(int)g(fits_set_hcomp_smooth\(fits)o(fil)o(e)
+42 b(*fptr,)k(int)h(smooth,)f(int)h(*status\))668 781
+y(Set)g(smooth)f(=)i(1)f(to)g(apply)g(smoothing)e(when)i(uncompressing)
+d(the)j(image)95 1007 y(int)g(fits_get_compression_type\()o(fit)o(sfil)
+o(e)42 b(*fptr,)k(int)h(*comptype,)e(int)i(*status\))95
+1120 y(int)g(fits_get_tile_dim\(fitsfile)41 b(*fptr,)46
+b(int)h(ndim,)f(long)h(*tilesize,)e(int)i(*status\))95
+1233 y(int)g(fits_get_quantize_level\(fi)o(tsf)o(ile)41
+b(*fptr,)46 b(float)h(*level,)f(int)h(*status\))95 1346
+y(int)g(fits_get_hcomp_scale\(fitsf)o(ile)41 b(*fptr,)46
+b(float)h(*scale,)e(int)i(*status\))95 1458 y(int)g
+(fits_get_hcomp_smooth\(fits)o(fil)o(e)42 b(*fptr,)k(int)h(*smooth,)e
+(int)i(*status\))0 1719 y Fj(4)24 b(sym)m(b)s(olic)f(constan)m(ts)i
+(are)e(de\014ned)f(for)h(use)g(as)g(the)h(v)-5 b(alue)23
+b(of)h(the)f(`compt)m(yp)s(e')h(parameter:)38 b(GZIP)p
+3447 1719 28 4 v 32 w(1,)25 b(RICE)p 3802 1719 V 32 w(1,)0
+1832 y(HCOMPRESS)p 586 1832 V 31 w(1)35 b(or)f(PLIO)p
+1035 1832 V 32 w(1.)52 b(En)m(tering)34 b(NULL)g(for)g(compt)m(yp)s(e)h
+(will)f(turn)f(o\013)i(the)f(tile-compression)i(and)0
+1945 y(cause)31 b(normal)f(FITS)g(images)h(to)g(b)s(e)f(written.)0
+2105 y(No)23 b(sp)s(ecial)f(action)i(is)e(required)f(b)m(y)h(soft)m(w)m
+(are)i(when)d(read)h(tile-compressed)h(images)g(b)s(ecause)f(all)h(the)
+f(CFITSIO)0 2218 y(routines)35 b(that)g(read)g(normal)g(uncompressed)f
+(FITS)g(images)i(also)g(transparen)m(tly)g(read)e(images)j(in)d(the)h
+(tile-)0 2331 y(compressed)28 b(format;)h(CFITSIO)e(essen)m(tially)j
+(treats)f(the)f(binary)g(table)h(that)f(con)m(tains)i(the)e(compressed)
+g(tiles)0 2444 y(as)j(if)f(it)h(w)m(ere)g(an)f(IMA)m(GE)h(extension.)0
+2604 y(The)f(follo)m(wing)i(2)e(routines)h(are)f(a)m(v)-5
+b(ailable)33 b(for)d(compressing)h(or)f(or)g(decompressing)h(an)f
+(image:)95 2865 y Fe(int)47 b(fits_img_compress\(fitsfile)41
+b(*infptr,)46 b(fitsfile)f(*outfptr,)g(int)i(*status\);)95
+2978 y(int)g(fits_img_decompress)c(\(fitsfile)i(*infptr,)h(fitsfile)f
+(*outfptr,)h(int)g(*status\);)0 3238 y Fj(Before)30 b(calling)h(the)f
+(compression)f(routine,)h(the)g(compression)f(parameters)h(m)m(ust)f
+(\014rst)g(b)s(e)g(de\014ned)f(in)h(one)h(of)0 3351 y(the)e(2)h(w)m(a)m
+(y)g(describ)s(ed)e(in)h(the)g(previous)g(paragraphs.)39
+b(There)28 b(is)g(also)h(a)f(routine)h(to)f(determine)h(if)f(the)g
+(curren)m(t)0 3464 y(HDU)j(con)m(tains)h(a)e(tile)i(compressed)e(image)
+i(\(it)f(returns)e(1)i(or)f(0\):)95 3725 y Fe(int)47
+b(fits_is_compressed_image\(f)o(its)o(file)41 b(*fptr,)46
+b(int)h(*status\);)0 3985 y Fj(A)30 b(small)g(example)g(program)f
+(called)i('imcop)m(y')f(is)g(included)f(with)g(CFITSIO)f(that)i(can)f
+(b)s(e)g(used)g(to)h(compress)0 4098 y(\(or)44 b(uncompress\))g(an)m(y)
+g(FITS)g(image.)83 b(This)43 b(program)h(can)h(b)s(e)e(used)h(to)g(exp)
+s(erimen)m(t)h(with)f(the)g(v)-5 b(arious)0 4211 y(compression)30
+b(options)h(on)f(existing)i(FITS)d(images)j(as)e(sho)m(wn)g(in)g(these)
+h(examples:)0 4472 y Fe(1\))95 b(imcopy)46 b(infile.fit)f
+('outfile.fit[compress]')334 4698 y(This)i(will)f(use)h(the)g(default)f
+(compression)f(algorithm)g(\(Rice\))h(and)h(the)334 4811
+y(default)f(tile)h(size)f(\(row)h(by)g(row\))0 5036 y(2\))95
+b(imcopy)46 b(infile.fit)f('outfile.fit[compress)d(GZIP]')334
+5262 y(This)47 b(will)f(use)h(the)g(GZIP)g(compression)e(algorithm)g
+(and)i(the)g(default)334 5375 y(tile)g(size)f(\(row)h(by)g(row\).)94
+b(The)47 b(allowed)f(compression)f(algorithms)g(are)334
+5488 y(Rice,)h(GZIP,)h(and)g(PLIO.)94 b(Only)46 b(the)h(first)g(letter)
+f(of)h(the)g(algorithm)334 5601 y(name)g(needs)f(to)h(be)g(specified.)p
+eop end
+%%Page: 48 56
+TeXDict begin 48 55 bop 0 299 a Fj(48)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Fe(3\))95 b(imcopy)46 b(infile.fit)f
+('outfile.fit[compress)d(G)47 b(100,100]')334 781 y(This)g(will)f(use)h
+(the)g(GZIP)g(compression)e(algorithm)g(and)i(100)g(X)g(100)g(pixel)334
+894 y(tiles.)0 1120 y(4\))95 b(imcopy)46 b(infile.fit)f
+('outfile.fit[compress)d(R)47 b(100,100;)f(q)h(10.0]')334
+1346 y(This)g(will)f(use)h(the)g(Rice)g(compression)e(algorithm,)g(100)
+h(X)i(100)f(pixel)334 1458 y(tiles,)f(and)h(quantization)e(level)h(=)h
+(RMSnoise)f(/)h(10.0)g(\(assuming)e(the)334 1571 y(input)h(image)h(has)
+g(a)g(floating)f(point)g(data)h(type\).)0 1797 y(5\))95
+b(imcopy)46 b(infile.fit)f(outfile.fit)334 2023 y(If)i(the)g(input)g
+(file)f(is)h(in)h(tile-compressed)43 b(format,)j(then)h(it)g(will)f(be)
+334 2136 y(uncompressed)f(to)i(the)g(output)f(file.)94
+b(Otherwise,)45 b(it)i(simply)f(copies)334 2249 y(the)h(input)f(image)h
+(to)g(the)g(output)f(image.)0 2475 y(6\))95 b(imcopy)46
+b('infile.fit[1001:1500,20)o(01:2)o(500])o(')89 b(outfile.fit)334
+2700 y(This)47 b(extracts)e(a)j(500)f(X)g(500)g(pixel)f(section)g(of)h
+(the)g(much)g(larger)334 2813 y(input)f(image)h(\(which)f(may)h(be)g
+(in)g(tile-compressed)d(format\).)93 b(The)334 2926 y(output)46
+b(is)h(a)h(normal)e(uncompressed)e(FITS)j(image.)0 3152
+y(7\))95 b(imcopy)46 b('infile.fit[1001:1500,20)o(01:2)o(500])o(')89
+b(outfile.fit.gz)334 3378 y(Same)47 b(as)g(above,)f(except)g(the)h
+(output)f(file)h(is)g(externally)e(compressed)334 3491
+y(using)h(the)h(gzip)g(algorithm.)0 3964 y Ff(5.7)135
+b(ASCI)t(I)45 b(and)f(Binary)h(T)-11 b(able)45 b(Routines)0
+4220 y Fj(These)36 b(routines)g(p)s(erform)f(read)i(and)e(write)i(op)s
+(erations)g(on)f(columns)g(of)h(data)g(in)f(FITS)g(ASCI)s(I)e(or)j
+(Binary)0 4333 y(tables.)47 b(Note)33 b(that)g(in)e(the)i(follo)m(wing)
+g(discussions,)f(the)g(\014rst)g(ro)m(w)g(and)f(column)h(in)g(a)g
+(table)h(is)g(at)f(p)s(osition)h(1)0 4446 y(not)e(0.)0
+4606 y(Users)k(should)g(also)i(read)e(the)h(follo)m(wing)h(c)m(hapter)g
+(on)e(the)h(CFITSIO)e(iterator)j(function)f(whic)m(h)f(pro)m(vides)h(a)
+0 4719 y(more)i(`ob)5 b(ject)39 b(orien)m(ted')g(metho)s(d)f(of)g
+(reading)g(and)g(writing)g(table)h(columns.)63 b(The)37
+b(iterator)j(function)d(is)i(a)0 4832 y(little)e(more)f(complicated)h
+(to)f(use,)h(but)e(the)g(adv)-5 b(an)m(tages)38 b(are)d(that)i(it)f
+(usually)f(tak)m(es)i(less)e(co)s(de)h(to)g(p)s(erform)0
+4945 y(the)h(same)f(op)s(eration,)j(and)c(the)i(resulting)f(program)g
+(often)h(runs)e(faster)i(b)s(ecause)f(the)g(FITS)g(\014les)g(are)h
+(read)0 5058 y(and)30 b(written)g(using)g(the)h(most)f(e\016cien)m(t)i
+(blo)s(c)m(k)f(size.)0 5375 y Fd(5.7.1)112 b(Create)38
+b(New)f(T)-9 b(able)0 5601 y Fi(1)81 b Fj(Create)40 b(a)f(new)g(ASCI)s
+(I)e(or)i(bin)m(table)h(table)g(extension.)68 b(If)39
+b(the)g(FITS)g(\014le)g(is)g(curren)m(tly)g(empt)m(y)h(then)f(a)227
+5714 y(dumm)m(y)25 b(primary)f(arra)m(y)i(will)g(b)s(e)f(created)i(b)s
+(efore)e(app)s(ending)f(the)i(table)g(extension)h(to)f(it.)40
+b(The)25 b(tblt)m(yp)s(e)p eop end
+%%Page: 49 57
+TeXDict begin 49 56 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29
+b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864
+b Fj(49)227 555 y(parameter)39 b(de\014nes)e(the)h(t)m(yp)s(e)h(of)f
+(table)h(and)e(can)i(ha)m(v)m(e)g(v)-5 b(alues)39 b(of)f(ASCI)s(I)p
+2924 555 28 4 v 31 w(TBL)g(or)g(BINAR)-8 b(Y)p 3659 555
+V 34 w(TBL.)227 668 y(The)29 b(naxis2)g(parameter)h(giv)m(es)g(the)g
+(initial)g(n)m(um)m(b)s(er)e(of)h(ro)m(ws)g(to)h(b)s(e)f(created)h(in)f
+(the)g(table,)h(and)f(should)227 781 y(normally)h(b)s(e)f(set)h(=)g(0.)
+40 b(CFITSIO)29 b(will)h(automatically)i(increase)f(the)e(size)i(of)f
+(the)g(table)g(as)g(additional)227 894 y(ro)m(ws)d(are)g(written.)40
+b(A)27 b(non-zero)g(n)m(um)m(b)s(er)f(of)h(ro)m(ws)g(ma)m(y)g(b)s(e)f
+(sp)s(eci\014ed)g(to)i(reserv)m(e)f(space)h(for)e(that)i(man)m(y)227
+1007 y(ro)m(ws,)41 b(ev)m(en)e(if)g(a)g(few)m(er)g(n)m(um)m(b)s(er)e
+(of)i(ro)m(ws)f(will)h(b)s(e)f(written.)66 b(The)38 b(tunit)g(and)g
+(extname)i(parameters)227 1120 y(are)e(optional)g(and)f(a)h(n)m(ull)f
+(p)s(oin)m(ter)g(ma)m(y)h(b)s(e)f(giv)m(en)h(if)g(they)f(are)h(not)f
+(de\014ned.)61 b(The)37 b(FITS)f(Standard)227 1233 y(recommends)29
+b(that)h(only)g(letters,)h(digits,)g(and)e(the)g(underscore)g(c)m
+(haracter)i(b)s(e)e(used)g(in)g(column)g(names)227 1346
+y(\(the)c(tt)m(yp)s(e)g(parameter\))g(with)e(no)h(em)m(b)s(edded)f
+(spaces.)40 b(T)-8 b(railing)24 b(blank)g(c)m(haracters)i(are)e(not)h
+(signi\014can)m(t.)95 1678 y Fe(int)47 b(fits_create_tbl)d(/)j(ffcrtb)
+286 1791 y(\(fitsfile)f(*fptr,)g(int)h(tbltype,)e(LONGLONG)h(naxis2,)g
+(int)g(tfields,)g(char)h(*ttype[],)334 1904 y(char)g(*tform[],)e(char)i
+(*tunit[],)e(char)i(*extname,)e(int)i(*status\))0 2188
+y Fd(5.7.2)112 b(Column)39 b(Information)f(Routines)0
+2391 y Fi(1)81 b Fj(Get)30 b(the)g(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(or)
+f(columns)g(in)h(the)g(curren)m(t)f(FITS)g(table.)41
+b(The)29 b(n)m(um)m(b)s(er)f(of)i(ro)m(ws)g(is)f(giv)m(en)i(b)m(y)227
+2503 y(the)j(NAXIS2)f(k)m(eyw)m(ord)h(and)e(the)i(n)m(um)m(b)s(er)e(of)
+h(columns)g(is)g(giv)m(en)h(b)m(y)f(the)h(TFIELDS)e(k)m(eyw)m(ord)i(in)
+f(the)227 2616 y(header)d(of)h(the)g(table.)95 2836 y
+Fe(int)47 b(fits_get_num_rows)c(/)48 b(ffgnrw)286 2949
+y(\(fitsfile)e(*fptr,)g(>)h(long)g(*nrows,)f(int)h(*status\);)95
+3175 y(int)g(fits_get_num_rowsll)c(/)k(ffgnrwll)286 3288
+y(\(fitsfile)f(*fptr,)g(>)h(LONGLONG)f(*nrows,)g(int)g(*status\);)95
+3513 y(int)h(fits_get_num_cols)c(/)48 b(ffgncl)286 3626
+y(\(fitsfile)e(*fptr,)g(>)h(int)g(*ncols,)f(int)h(*status\);)0
+3846 y Fi(2)81 b Fj(Get)25 b(the)f(table)i(column)e(n)m(um)m(b)s(er)f
+(\(and)h(name\))h(of)f(the)h(column)f(whose)g(name)g(matc)m(hes)i(an)e
+(input)g(template)227 3959 y(name.)48 b(If)32 b(casesen)i(=)e(CASESEN)g
+(then)g(the)h(column)f(name)h(matc)m(h)h(will)f(b)s(e)f(case-sensitiv)m
+(e,)k(whereas)227 4072 y(if)27 b(casesen)h(=)e(CASEINSEN)g(then)h(the)g
+(case)h(will)f(b)s(e)f(ignored.)40 b(As)27 b(a)g(general)h(rule,)f(the)
+g(column)g(names)227 4185 y(should)j(b)s(e)f(treated)j(as)e(case)i
+(INsensitiv)m(e.)227 4328 y(The)26 b(input)g(column)g(name)g(template)i
+(ma)m(y)f(b)s(e)f(either)h(the)g(exact)h(name)e(of)h(the)f(column)g(to)
+i(b)s(e)d(searc)m(hed)227 4441 y(for,)k(or)f(it)h(ma)m(y)g(con)m(tain)h
+(wild)e(card)g(c)m(haracters)i(\(*,)g(?,)f(or)f(#\),)h(or)f(it)h(ma)m
+(y)g(con)m(tain)h(the)e(in)m(teger)i(n)m(um)m(b)s(er)227
+4554 y(of)j(the)f(desired)f(column)h(\(with)g(the)h(\014rst)e(column)h
+(=)g(1\).)46 b(The)32 b(`*')h(wild)f(card)g(c)m(haracter)h(matc)m(hes)h
+(an)m(y)227 4667 y(sequence)h(of)g(c)m(haracters)h(\(including)f(zero)g
+(c)m(haracters\))i(and)d(the)h(`?')53 b(c)m(haracter)36
+b(matc)m(hes)g(an)m(y)f(single)227 4780 y(c)m(haracter.)42
+b(The)29 b(#)h(wildcard)f(will)h(matc)m(h)h(an)m(y)e(consecutiv)m(e)j
+(string)e(of)f(decimal)i(digits)f(\(0-9\).)43 b(If)29
+b(more)227 4893 y(than)43 b(one)f(column)h(name)f(in)g(the)h(table)h
+(matc)m(hes)f(the)g(template)h(string,)i(then)c(the)h(\014rst)e(matc)m
+(h)j(is)227 5006 y(returned)28 b(and)h(the)g(status)h(v)-5
+b(alue)30 b(will)f(b)s(e)g(set)h(to)g(COL)p 2171 5006
+V 32 w(NOT)p 2408 5006 V 32 w(UNIQUE)f(as)h(a)f(w)m(arning)g(that)h(a)g
+(unique)227 5119 y(matc)m(h)e(w)m(as)g(not)f(found.)39
+b(T)-8 b(o)27 b(\014nd)f(the)h(other)g(cases)h(that)g(matc)m(h)g(the)g
+(template,)h(call)f(the)g(routine)f(again)227 5232 y(lea)m(ving)g(the)e
+(input)f(status)h(v)-5 b(alue)26 b(equal)f(to)h(COL)p
+1950 5232 V 32 w(NOT)p 2187 5232 V 32 w(UNIQUE)f(and)f(the)h(next)h
+(matc)m(hing)g(name)f(will)227 5344 y(then)30 b(b)s(e)g(returned.)40
+b(Rep)s(eat)30 b(this)h(pro)s(cess)f(un)m(til)g(a)h(status)g(=)f(COL)p
+2628 5344 V 32 w(NOT)p 2865 5344 V 32 w(F)m(OUND)i(is)e(returned.)227
+5488 y(The)36 b(FITS)g(Standard)g(recommends)g(that)i(only)e(letters,)k
+(digits,)f(and)d(the)h(underscore)f(c)m(haracter)j(b)s(e)227
+5601 y(used)31 b(in)g(column)g(names)g(\(with)h(no)f(em)m(b)s(edded)f
+(spaces\).)45 b(T)-8 b(railing)32 b(blank)f(c)m(haracters)i(are)e(not)h
+(signi\014-)227 5714 y(can)m(t.)p eop end
+%%Page: 50 58
+TeXDict begin 50 57 bop 0 299 a Fj(50)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_get_colnum)d(/)j(ffgcno)286
+668 y(\(fitsfile)f(*fptr,)g(int)h(casesen,)e(char)i(*templt,)e(>)j(int)
+f(*colnum,)334 781 y(int)g(*status\))95 1007 y(int)g(fits_get_colname)d
+(/)j(ffgcnn)286 1120 y(\(fitsfile)f(*fptr,)g(int)h(casesen,)e(char)i
+(*templt,)e(>)j(char)e(*colname,)334 1233 y(int)h(*colnum,)f(int)g
+(*status\))0 1508 y Fi(3)81 b Fj(Return)30 b(the)i(data)g(t)m(yp)s(e,)h
+(v)m(ector)g(rep)s(eat)f(v)-5 b(alue,)32 b(and)f(the)h(width)f(in)g(b)m
+(ytes)h(of)g(a)g(column)f(in)g(an)h(ASCI)s(I)e(or)227
+1621 y(binary)35 b(table.)56 b(Allo)m(w)m(ed)37 b(v)-5
+b(alues)36 b(for)f(the)h(data)g(t)m(yp)s(e)f(in)g(ASCI)s(I)f(tables)i
+(are:)51 b(TSTRING,)35 b(TSHOR)-8 b(T,)227 1734 y(TLONG,)36
+b(TFLO)m(A)-8 b(T,)36 b(and)f(TDOUBLE.)i(Binary)e(tables)i(also)g(supp)
+s(ort)d(these)i(t)m(yp)s(es:)52 b(TLOGICAL,)227 1847
+y(TBIT,)38 b(TBYTE,)h(TCOMPLEX)e(and)h(TDBLCOMPLEX.)h(The)f(negativ)m
+(e)i(of)f(the)g(data)g(t)m(yp)s(e)g(co)s(de)227 1960
+y(v)-5 b(alue)32 b(is)f(returned)f(if)h(it)g(is)h(a)f(v)-5
+b(ariable)32 b(length)f(arra)m(y)h(column.)43 b(Note)32
+b(that)g(in)e(the)i(case)g(of)f(a)g('J')h(32-bit)227
+2073 y(in)m(teger)g(binary)d(table)i(column,)f(this)g(routine)g(will)g
+(return)f(data)i(t)m(yp)s(e)f(=)g(TINT32BIT)g(\(whic)m(h)g(in)g(fact)
+227 2186 y(is)36 b(equiv)-5 b(alen)m(t)37 b(to)g(TLONG\).)f(With)g
+(most)g(curren)m(t)g(C)f(compilers,)j(a)f(v)-5 b(alue)36
+b(in)f(a)i('J')f(column)f(has)h(the)227 2299 y(same)29
+b(size)g(as)g(an)f('in)m(t')i(v)-5 b(ariable,)30 b(and)d(ma)m(y)j(not)e
+(b)s(e)g(equiv)-5 b(alen)m(t)30 b(to)f(a)g('long')g(v)-5
+b(ariable,)30 b(whic)m(h)e(is)h(64-bits)227 2412 y(long)i(on)g(an)f
+(increasing)h(n)m(um)m(b)s(er)e(of)h(compilers.)227 2570
+y(The)22 b('rep)s(eat')h(parameter)g(returns)f(the)g(v)m(ector)i(rep)s
+(eat)f(coun)m(t)g(on)f(the)h(binary)f(table)h(TF)m(ORMn)f(k)m(eyw)m
+(ord)227 2683 y(v)-5 b(alue.)60 b(\(ASCI)s(I)35 b(table)j(columns)e
+(alw)m(a)m(ys)i(ha)m(v)m(e)g(rep)s(eat)e(=)g(1\).)60
+b(The)36 b('width')g(parameter)h(returns)f(the)227 2796
+y(width)30 b(in)g(b)m(ytes)h(of)g(a)f(single)h(column)g(elemen)m(t)h
+(\(e.g.,)g(a)f('10D')h(binary)e(table)h(column)f(will)h(ha)m(v)m(e)h
+(width)227 2909 y(=)d(8,)i(an)e(ASCI)s(I)f(table)i('F12.2')i(column)e
+(will)g(ha)m(v)m(e)g(width)f(=)g(12,)i(and)e(a)h(binary)e(table'60A')k
+(c)m(haracter)227 3022 y(string)44 b(column)g(will)g(ha)m(v)m(e)h
+(width)e(=)h(60\);)52 b(Note)45 b(that)f(CFITSIO)f(supp)s(orts)f(the)i
+(lo)s(cal)h(con)m(v)m(en)m(tion)227 3135 y(for)d(sp)s(ecifying)f(arra)m
+(ys)i(of)f(\014xed)f(length)h(strings)f(within)h(a)g(binary)f(table)h
+(c)m(haracter)i(column)d(using)227 3247 y(the)g(syn)m(tax)g(TF)m(ORM)g
+(=)g('rAw')f(where)g('r')h(is)g(the)g(total)h(n)m(um)m(b)s(er)d(of)i(c)
+m(haracters)h(\(=)f(the)g(width)f(of)227 3360 y(the)f(column\))g(and)e
+('w')i(is)f(the)h(width)f(of)g(a)h(unit)f(string)g(within)g(the)h
+(column.)65 b(Th)m(us)37 b(if)h(the)h(column)227 3473
+y(has)34 b(TF)m(ORM)h(=)f('60A12')j(then)d(this)g(means)g(that)h(eac)m
+(h)g(ro)m(w)g(of)f(the)h(table)g(con)m(tains)g(5)g(12-c)m(haracter)227
+3586 y(substrings)23 b(within)h(the)g(60-c)m(haracter)j(\014eld,)f(and)
+d(th)m(us)h(in)g(this)g(case)h(this)g(routine)f(will)g(return)f(t)m(yp)
+s(eco)s(de)227 3699 y(=)f(TSTRING,)g(rep)s(eat)g(=)g(60,)j(and)d(width)
+f(=)h(12.)39 b(\(The)22 b(TDIMn)g(k)m(eyw)m(ord)h(ma)m(y)g(also)g(b)s
+(e)f(used)f(to)i(sp)s(ecify)227 3812 y(the)29 b(unit)e(string)h
+(length;)i(The)e(pair)g(of)g(k)m(eyw)m(ords)g(TF)m(ORMn)g(=)g('60A')i
+(and)e(TDIMn)f(=)h('\(12,5\)')j(w)m(ould)227 3925 y(ha)m(v)m(e)g(the)f
+(same)g(e\013ect)h(as)e(TF)m(ORMn)h(=)f('60A12'\).)43
+b(The)29 b(n)m(um)m(b)s(er)f(of)i(substrings)e(in)h(an)m(y)h(binary)f
+(table)227 4038 y(c)m(haracter)36 b(string)e(\014eld)f(can)h(b)s(e)g
+(calculated)i(b)m(y)d(\(rep)s(eat/width\).)53 b(A)34
+b(n)m(ull)f(p)s(oin)m(ter)h(ma)m(y)h(b)s(e)e(giv)m(en)i(for)227
+4151 y(an)m(y)c(of)g(the)f(output)g(parameters)h(that)g(are)g(not)f
+(needed.)227 4309 y(The)46 b(second)g(routine,)k(\014t)p
+1188 4309 28 4 v 33 w(get)p 1341 4309 V 34 w(eqcolt)m(yp)s(e)d(is)f
+(similar)h(except)g(that)f(in)g(the)g(case)i(of)e(scaled)h(in)m(teger)
+227 4422 y(columns)35 b(it)g(returns)f(the)h('equiv)-5
+b(alen)m(t')37 b(data)f(t)m(yp)s(e)f(that)h(is)f(needed)f(to)i(store)g
+(the)f(scaled)h(v)-5 b(alues,)37 b(and)227 4535 y(not)28
+b(necessarily)h(the)f(ph)m(ysical)g(data)g(t)m(yp)s(e)g(of)g(the)g
+(unscaled)f(v)-5 b(alues)29 b(as)e(stored)h(in)g(the)f(FITS)g(table.)41
+b(F)-8 b(or)227 4648 y(example)38 b(if)g(a)g('1I')g(column)f(in)g(a)h
+(binary)f(table)h(has)g(TSCALn)d(=)j(1)f(and)g(TZER)m(On)f(=)i(32768,)j
+(then)227 4761 y(this)29 b(column)f(e\013ectiv)m(ely)k(con)m(tains)d
+(unsigned)f(short)g(in)m(teger)i(v)-5 b(alues,)29 b(and)f(th)m(us)h
+(the)f(returned)g(v)-5 b(alue)29 b(of)227 4874 y(t)m(yp)s(eco)s(de)34
+b(will)f(b)s(e)g(TUSHOR)-8 b(T,)32 b(not)h(TSHOR)-8 b(T.)33
+b(Similarly)-8 b(,)34 b(if)f(a)h(column)f(has)f(TTYPEn)g(=)h('1I')h
+(and)227 4986 y(TSCALn)29 b(=)h(0.12,)i(then)e(the)h(returned)e(t)m(yp)
+s(eco)s(de)i(will)f(b)s(e)g(TFLO)m(A)-8 b(T.)95 5262
+y Fe(int)47 b(fits_get_coltype)d(/)j(ffgtcl)286 5375
+y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(>)j(int)f(*typecode,)e(long)h
+(*repeat,)334 5488 y(long)h(*width,)f(int)g(*status\))95
+5714 y(int)h(fits_get_coltypell)c(/)48 b(ffgtclll)p eop
+end
+%%Page: 51 59
+TeXDict begin 51 58 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29
+b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864
+b Fj(51)286 555 y Fe(\(fitsfile)46 b(*fptr,)g(int)h(colnum,)e(>)j(int)f
+(*typecode,)e(LONGLONG)g(*repeat,)334 668 y(LONGLONG)h(*width,)f(int)i
+(*status\))95 894 y(int)g(fits_get_eqcoltype)c(/)48 b(ffeqty)286
+1007 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(>)j(int)f(*typecode,)e
+(long)h(*repeat,)334 1120 y(long)h(*width,)f(int)g(*status\))95
+1346 y(int)h(fits_get_eqcoltypell)c(/)k(ffeqtyll)286
+1458 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(>)j(int)f(*typecode,)e
+(LONGLONG)g(*repeat,)334 1571 y(LONGLONG)h(*width,)f(int)i(*status\))0
+1808 y Fi(4)81 b Fj(Return)29 b(the)h(displa)m(y)g(width)f(of)h(a)h
+(column.)40 b(This)29 b(is)h(the)g(length)h(of)f(the)g(string)g(that)h
+(will)f(b)s(e)f(returned)g(b)m(y)227 1921 y(the)34 b(\014ts)p
+514 1921 28 4 v 32 w(read)p 718 1921 V 33 w(col)g(routine)f(when)f
+(reading)h(the)h(column)e(as)i(a)f(formatted)h(string.)49
+b(The)32 b(displa)m(y)i(width)227 2034 y(is)29 b(determined)g(b)m(y)g
+(the)g(TDISPn)f(k)m(eyw)m(ord,)i(if)f(presen)m(t,)h(otherwise)f(b)m(y)g
+(the)g(data)h(t)m(yp)s(e)f(of)h(the)f(column.)95 2384
+y Fe(int)47 b(fits_get_col_display_width)41 b(/)47 b(ffgcdw)286
+2497 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(>)j(int)f(*dispwidth,)e
+(int)h(*status\))0 2734 y Fi(5)81 b Fj(Return)27 b(the)i(n)m(um)m(b)s
+(er)e(of)i(and)e(size)j(of)e(the)h(dimensions)f(of)g(a)h(table)g
+(column)g(in)f(a)g(binary)g(table.)41 b(Normally)227
+2847 y(this)28 b(information)h(is)f(giv)m(en)h(b)m(y)f(the)h(TDIMn)f(k)
+m(eyw)m(ord,)h(but)e(if)i(this)f(k)m(eyw)m(ord)g(is)g(not)h(presen)m(t)
+f(then)g(this)227 2960 y(routine)j(returns)e(naxis)h(=)g(1)h(and)f
+(naxes[0])h(equal)g(to)g(the)g(rep)s(eat)f(coun)m(t)h(in)f(the)h(TF)m
+(ORM)g(k)m(eyw)m(ord.)95 3197 y Fe(int)47 b(fits_read_tdim)d(/)k
+(ffgtdm)286 3309 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(int)i(maxdim,)
+f(>)i(int)f(*naxis,)334 3422 y(long)g(*naxes,)f(int)g(*status\))95
+3648 y(int)h(fits_read_tdimll)d(/)j(ffgtdmll)286 3761
+y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(int)i(maxdim,)f(>)i(int)f
+(*naxis,)334 3874 y(LONGLONG)f(*naxes,)f(int)i(*status\))0
+4111 y Fi(6)81 b Fj(Deco)s(de)33 b(the)g(input)f(TDIMn)h(k)m(eyw)m(ord)
+g(string)f(\(e.g.)50 b('\(100,200\)'\))37 b(and)32 b(return)g(the)h(n)m
+(um)m(b)s(er)e(of)i(and)f(size)227 4224 y(of)c(the)g(dimensions)f(of)h
+(a)g(binary)f(table)h(column.)40 b(If)27 b(the)h(input)f(tdimstr)g(c)m
+(haracter)i(string)f(is)g(n)m(ull,)g(then)227 4337 y(this)d(routine)f
+(returns)f(naxis)h(=)h(1)f(and)g(naxes[0])i(equal)e(to)i(the)e(rep)s
+(eat)h(coun)m(t)g(in)f(the)g(TF)m(ORM)h(k)m(eyw)m(ord.)227
+4450 y(This)30 b(routine)g(is)h(called)g(b)m(y)f(\014ts)p
+1350 4450 V 33 w(read)p 1555 4450 V 33 w(tdim.)95 4687
+y Fe(int)47 b(fits_decode_tdim)d(/)j(ffdtdm)286 4799
+y(\(fitsfile)f(*fptr,)g(char)g(*tdimstr,)g(int)h(colnum,)e(int)i
+(maxdim,)f(>)i(int)e(*naxis,)334 4912 y(long)h(*naxes,)f(int)g
+(*status\))95 5138 y(int)h(fits_decode_tdimll)c(/)48
+b(ffdtdmll)286 5251 y(\(fitsfile)e(*fptr,)g(char)g(*tdimstr,)g(int)h
+(colnum,)e(int)i(maxdim,)f(>)i(int)e(*naxis,)334 5364
+y(LONGLONG)g(*naxes,)f(int)i(*status\))0 5601 y Fi(7)81
+b Fj(W)-8 b(rite)23 b(a)g(TDIMn)f(k)m(eyw)m(ord)h(whose)f(v)-5
+b(alue)23 b(has)g(the)f(form)g('\(l,m,n...\)')40 b(where)22
+b(l,)i(m,)g(n...)38 b(are)23 b(the)g(dimensions)227 5714
+y(of)31 b(a)g(m)m(ultidimensional)g(arra)m(y)g(column)f(in)g(a)h
+(binary)e(table.)p eop end
+%%Page: 52 60
+TeXDict begin 52 59 bop 0 299 a Fj(52)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_write_tdim)d(/)j(ffptdm)286
+668 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(int)i(naxis,)f(long)h
+(*naxes,)f(>)h(int)g(*status\))95 894 y(int)g(fits_write_tdimll)c(/)48
+b(ffptdmll)286 1007 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(int)i
+(naxis,)f(LONGLONG)g(*naxes,)g(>)h(int)g(*status\))0
+1298 y Fd(5.7.3)112 b(Routines)38 b(to)f(Edit)g(Ro)m(ws)g(or)g(Columns)
+0 1508 y Fi(1)81 b Fj(Insert)32 b(or)h(delete)i(ro)m(ws)e(in)g(an)g
+(ASCI)s(I)f(or)h(binary)f(table.)50 b(When)33 b(inserting)h(ro)m(ws)f
+(all)h(the)f(ro)m(ws)g(follo)m(wing)227 1621 y(ro)m(w)24
+b(FR)m(O)m(W)i(are)e(shifted)f(do)m(wn)h(b)m(y)g(NR)m(O)m(WS)g(ro)m
+(ws;)j(if)c(FR)m(O)m(W)j(=)d(0)i(then)e(the)h(blank)g(ro)m(ws)g(are)g
+(inserted)227 1734 y(at)31 b(the)e(b)s(eginning)g(of)h(the)f(table.)42
+b(Note)31 b(that)f(it)g(is)f(*not*)i(necessary)f(to)g(insert)f(ro)m(ws)
+h(in)f(a)h(table)g(b)s(efore)227 1846 y(writing)g(data)g(to)g(those)h
+(ro)m(ws)e(\(indeed,)h(it)g(w)m(ould)f(b)s(e)g(ine\016cien)m(t)i(to)f
+(do)g(so\).)41 b(Instead)29 b(one)h(ma)m(y)g(simply)227
+1959 y(write)h(data)g(to)g(an)m(y)g(ro)m(w)f(of)h(the)f(table,)i
+(whether)e(that)h(ro)m(w)f(of)h(data)g(already)g(exists)g(or)f(not.)227
+2110 y(The)40 b(\014rst)g(delete)i(routine)e(deletes)i(NR)m(O)m(WS)f
+(consecutiv)m(e)h(ro)m(ws)f(starting)g(with)f(ro)m(w)g(FIRSTR)m(O)m(W.)
+227 2223 y(The)d(second)g(delete)h(routine)f(tak)m(es)h(an)f(input)f
+(string)h(that)h(lists)f(the)g(ro)m(ws)g(or)g(ro)m(w)g(ranges)g
+(\(e.g.,)k('5-)227 2336 y(10,12,20-30'\),)32 b(whereas)26
+b(the)g(third)g(delete)h(routine)f(tak)m(es)h(an)f(input)f(in)m(teger)j
+(arra)m(y)e(that)h(sp)s(eci\014es)f(eac)m(h)227 2449
+y(individual)35 b(ro)m(w)h(to)g(b)s(e)f(deleted.)58 b(In)35
+b(b)s(oth)f(latter)j(cases,)i(the)c(input)g(list)h(of)g(ro)m(ws)g(to)g
+(delete)h(m)m(ust)f(b)s(e)227 2562 y(sorted)i(in)g(ascending)g(order.)
+62 b(These)38 b(routines)f(up)s(date)g(the)h(NAXIS2)g(k)m(eyw)m(ord)h
+(to)f(re\015ect)g(the)g(new)227 2674 y(n)m(um)m(b)s(er)29
+b(of)i(ro)m(ws)f(in)g(the)h(table.)95 2935 y Fe(int)47
+b(fits_insert_rows)d(/)j(ffirow)286 3048 y(\(fitsfile)f(*fptr,)g
+(LONGLONG)f(firstrow,)h(LONGLONG)f(nrows,)h(>)i(int)f(*status\))95
+3274 y(int)g(fits_delete_rows)d(/)j(ffdrow)286 3387 y(\(fitsfile)f
+(*fptr,)g(LONGLONG)f(firstrow,)h(LONGLONG)f(nrows,)h(>)i(int)f
+(*status\))95 3612 y(int)g(fits_delete_rowrange)c(/)k(ffdrrg)286
+3725 y(\(fitsfile)f(*fptr,)g(char)g(*rangelist,)f(>)j(int)e(*status\))
+95 3951 y(int)h(fits_delete_rowlist)c(/)k(ffdrws)286
+4064 y(\(fitsfile)f(*fptr,)g(long)g(*rowlist,)g(long)g(nrows,)g(>)i
+(int)f(*status\))95 4290 y(int)g(fits_delete_rowlistll)42
+b(/)48 b(ffdrwsll)286 4403 y(\(fitsfile)e(*fptr,)g(LONGLONG)f
+(*rowlist,)h(LONGLONG)f(nrows,)h(>)i(int)f(*status\))0
+4663 y Fi(2)81 b Fj(Insert)36 b(or)h(delete)i(column\(s\))e(in)g(an)g
+(ASCI)s(I)f(or)h(binary)f(table.)62 b(When)37 b(inserting,)i(COLNUM)e
+(sp)s(eci\014es)227 4776 y(the)28 b(column)g(n)m(um)m(b)s(er)f(that)h
+(the)g(\(\014rst\))g(new)f(column)h(should)f(o)s(ccup)m(y)h(in)g(the)g
+(table.)41 b(NCOLS)26 b(sp)s(eci\014es)227 4889 y(ho)m(w)35
+b(man)m(y)g(columns)f(are)h(to)g(b)s(e)f(inserted.)53
+b(An)m(y)35 b(existing)h(columns)e(from)g(this)h(p)s(osition)f(and)g
+(higher)227 5002 y(are)c(shifted)f(o)m(v)m(er)h(to)g(allo)m(w)g(ro)s
+(om)f(for)g(the)h(new)e(column\(s\).)41 b(The)29 b(index)f(n)m(um)m(b)s
+(er)g(on)h(all)h(the)f(follo)m(wing)227 5115 y(k)m(eyw)m(ords)34
+b(will)f(b)s(e)g(incremen)m(ted)h(or)f(decremen)m(ted)h(if)f(necessary)
+h(to)g(re\015ect)g(the)f(new)g(p)s(osition)g(of)h(the)227
+5228 y(column\(s\))26 b(in)f(the)h(table:)39 b(TBCOLn,)26
+b(TF)m(ORMn,)h(TTYPEn,)e(TUNITn,)h(TNULLn,)g(TSCALn,)f(TZE-)227
+5341 y(R)m(On,)43 b(TDISPn,)g(TDIMn,)g(TLMINn,)g(TLMAXn,)g(TDMINn,)g
+(TDMAXn,)h(TCTYPn,)e(TCRPXn,)227 5453 y(TCR)-10 b(VLn,)29
+b(TCDL)-8 b(Tn,)30 b(TCR)m(OTn,)f(and)h(TCUNIn.)95 5714
+y Fe(int)47 b(fits_insert_col)d(/)j(fficol)p eop end
+%%Page: 53 61
+TeXDict begin 53 60 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29
+b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864
+b Fj(53)286 555 y Fe(\(fitsfile)46 b(*fptr,)g(int)h(colnum,)e(char)i
+(*ttype,)f(char)h(*tform,)334 668 y(>)h(int)e(*status\))95
+894 y(int)h(fits_insert_cols)d(/)j(fficls)286 1007 y(\(fitsfile)f
+(*fptr,)g(int)h(colnum,)e(int)i(ncols,)f(char)h(**ttype,)334
+1120 y(char)g(**tform,)e(>)j(int)f(*status\))95 1346
+y(int)g(fits_delete_col)d(/)j(ffdcol\(fitsfile)d(*fptr,)i(int)h
+(colnum,)f(>)h(int)g(*status\))0 1604 y Fi(3)81 b Fj(Cop)m(y)32
+b(a)h(column)g(from)f(one)h(HDU)g(to)h(another)e(\(or)h(to)h(the)f
+(same)g(HDU\).)h(If)e(create)p 3129 1604 28 4 v 34 w(col)i(=)e(TR)m
+(UE,)h(then)227 1717 y(a)40 b(new)e(column)h(will)g(b)s(e)g(inserted)g
+(in)f(the)h(output)g(table,)j(at)e(p)s(osition)f(`outcolumn',)j
+(otherwise)e(the)227 1830 y(existing)f(output)f(column)f(will)i(b)s(e)e
+(o)m(v)m(erwritten)i(\(in)f(whic)m(h)g(case)h(it)f(m)m(ust)g(ha)m(v)m
+(e)h(a)f(compatible)h(data)227 1943 y(t)m(yp)s(e\).)i(If)29
+b(outcoln)m(um)h(is)f(greater)i(than)e(the)h(n)m(um)m(b)s(er)e(of)h
+(column)g(in)g(the)h(table,)h(then)e(the)g(new)g(column)227
+2056 y(will)j(b)s(e)f(app)s(ended)f(to)j(the)f(end)f(of)g(the)h(table.)
+46 b(Note)33 b(that)f(the)g(\014rst)f(column)g(in)h(a)g(table)g(is)g
+(at)h(coln)m(um)227 2169 y(=)j(1.)58 b(The)36 b(standard)f(indexed)g(k)
+m(eyw)m(ords)i(that)f(related)h(to)g(the)f(column)g(\(e.g.,)j(TDISPn,)e
+(TUNITn,)227 2282 y(TCRPXn,)30 b(TCDL)-8 b(Tn,)29 b(etc.\))43
+b(will)30 b(also)i(b)s(e)d(copied.)95 2541 y Fe(int)47
+b(fits_copy_col)e(/)i(ffcpcl)286 2654 y(\(fitsfile)f(*infptr,)f
+(fitsfile)h(*outfptr,)f(int)i(incolnum,)e(int)i(outcolnum,)334
+2767 y(int)g(create_col,)e(>)i(int)g(*status\);)0 3026
+y Fi(4)81 b Fj(Cop)m(y)30 b('nro)m(ws')g(consecutiv)m(e)j(ro)m(ws)d
+(from)g(one)h(table)g(to)g(another,)g(b)s(eginning)f(with)g(ro)m(w)g
+('\014rstro)m(w'.)41 b(These)227 3138 y(ro)m(ws)31 b(will)h(b)s(e)e
+(app)s(ended)g(to)i(an)m(y)f(existing)h(ro)m(ws)g(in)e(the)i(output)e
+(table.)44 b(Note)33 b(that)f(the)f(\014rst)f(ro)m(w)i(in)f(a)227
+3251 y(table)h(is)e(at)h(ro)m(w)g(=)f(1.)95 3510 y Fe(int)47
+b(fits_copy_rows)d(/)k(ffcprw)286 3623 y(\(fitsfile)e(*infptr,)f
+(fitsfile)h(*outfptr,)f(LONGLONG)h(firstrow,)334 3736
+y(LONGLONG)g(nrows,)g(>)h(int)g(*status\);)0 3995 y Fi(5)81
+b Fj(Mo)s(dify)37 b(the)g(v)m(ector)i(length)f(of)f(a)h(binary)e(table)
+i(column)f(\(e.g.,)k(c)m(hange)e(a)e(column)g(from)g(TF)m(ORMn)g(=)227
+4108 y('1E')31 b(to)h('20E'\).)g(The)e(v)m(ector)i(length)e(ma)m(y)h(b)
+s(e)f(increased)h(or)f(decreased)h(from)f(the)g(curren)m(t)h(v)-5
+b(alue.)95 4367 y Fe(int)47 b(fits_modify_vector_len)42
+b(/)48 b(ffmvec)286 4480 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e
+(LONGLONG)h(newveclen,)f(>)i(int)g(*status\))0 4770 y
+Fd(5.7.4)112 b(Read)38 b(and)h(W)-9 b(rite)36 b(Column)j(Data)e
+(Routines)0 4989 y Fj(The)e(follo)m(wing)h(routines)g(write)f(or)g
+(read)g(data)h(v)-5 b(alues)36 b(in)f(the)g(curren)m(t)g(ASCI)s(I)f(or)
+h(binary)g(table)h(extension.)0 5102 y(If)d(a)g(write)g(op)s(eration)h
+(extends)f(b)s(ey)m(ond)f(the)h(curren)m(t)g(size)h(of)f(the)g(table,)i
+(then)e(the)g(n)m(um)m(b)s(er)f(of)h(ro)m(ws)g(in)g(the)0
+5215 y(table)i(will)g(automatically)i(b)s(e)c(increased)i(and)e(the)i
+(NAXIS2)f(k)m(eyw)m(ord)h(v)-5 b(alue)35 b(will)f(b)s(e)g(up)s(dated.)
+51 b(A)m(ttempts)0 5328 y(to)31 b(read)f(b)s(ey)m(ond)g(the)h(end)e(of)
+i(the)f(table)i(will)e(result)h(in)f(an)g(error.)0 5488
+y(Automatic)d(data)e(t)m(yp)s(e)g(con)m(v)m(ersion)h(is)f(p)s(erformed)
+f(for)g(n)m(umerical)i(data)f(t)m(yp)s(es)g(\(only\))h(if)f(the)g(data)
+h(t)m(yp)s(e)f(of)g(the)0 5601 y(column)34 b(\(de\014ned)f(b)m(y)h(the)
+g(TF)m(ORMn)g(k)m(eyw)m(ord\))h(di\013ers)f(from)g(the)g(data)h(t)m(yp)
+s(e)f(of)g(the)h(arra)m(y)f(in)g(the)g(calling)0 5714
+y(routine.)65 b(ASCI)s(I)37 b(and)h(binary)f(tables)i(supp)s(ort)e(the)
+i(follo)m(wing)g(data)h(t)m(yp)s(e)e(v)-5 b(alues:)57
+b(TSTRING,)38 b(TBYTE,)p eop end
+%%Page: 54 62
+TeXDict begin 54 61 bop 0 299 a Fj(54)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Fj(TSBYTE,)e(TSHOR)-8 b(T,)27 b(TUSHOR)-8
+b(T,)28 b(TINT,)g(TUINT,)g(TLONG,)g(TLONGLONG,)g(TULONG,)g(TFLO)m(A)-8
+b(T,)0 668 y(or)25 b(TDOUBLE.)g(Binary)f(tables)i(also)f(supp)s(ort)e
+(TLOGICAL)h(\(in)m(ternally)i(mapp)s(ed)d(to)i(the)g(`c)m(har')h(data)f
+(t)m(yp)s(e\),)0 781 y(TCOMPLEX,)30 b(and)f(TDBLCOMPLEX.)0
+941 y(Note)d(that)g(it)g(is)f(*not*)h(necessary)f(to)h(insert)f(ro)m
+(ws)g(in)g(a)g(table)h(b)s(efore)f(writing)g(data)h(to)g(those)f(ro)m
+(ws)g(\(indeed,)h(it)0 1054 y(w)m(ould)h(b)s(e)g(ine\016cien)m(t)i(to)f
+(do)f(so\).)41 b(Instead,)28 b(one)g(ma)m(y)g(simply)f(write)g(data)h
+(to)h(an)m(y)e(ro)m(w)h(of)g(the)f(table,)j(whether)0
+1167 y(that)h(ro)m(w)f(of)h(data)g(already)g(exists)g(or)f(not.)0
+1327 y(Individual)g(bits)i(in)f(a)h(binary)e(table)i('X')g(or)g('B')g
+(column)f(ma)m(y)h(b)s(e)f(read/written)h(to/from)g(a)g(*c)m(har)g
+(arra)m(y)g(b)m(y)0 1440 y(sp)s(ecifying)k(the)f(TBIT)h(datat)m(yp)s
+(e.)57 b(The)35 b(*c)m(har)i(arra)m(y)f(will)g(b)s(e)f(in)m(terpreted)h
+(as)g(an)g(arra)m(y)g(of)g(logical)i(TR)m(UE)0 1553 y(\(1\))d(or)g(F)
+-10 b(ALSE)34 b(\(0\))h(v)-5 b(alues)35 b(that)g(corresp)s(ond)e(to)i
+(the)g(v)-5 b(alue)35 b(of)f(eac)m(h)i(bit)e(in)g(the)h(FITS)e('X')i
+(or)g('B')g(column.)0 1666 y(Alternativ)m(ely)-8 b(,)30
+b(the)c(v)-5 b(alues)27 b(in)e(a)i(binary)e(table)i('X')g(column)f(ma)m
+(y)h(b)s(e)e(read/written)i(8)f(bits)g(at)h(a)f(time)h(to/from)0
+1779 y(an)j(arra)m(y)h(of)g(8-bit)g(in)m(tegers)g(b)m(y)g(sp)s
+(ecifying)f(the)h(TBYTE)f(datat)m(yp)s(e.)0 1939 y(Note)25
+b(that)g(within)e(the)h(con)m(text)i(of)e(these)g(routines,)i(the)e
+(TSTRING)f(data)h(t)m(yp)s(e)g(corresp)s(onds)f(to)h(a)h(C)e('c)m
+(har**')0 2052 y(data)35 b(t)m(yp)s(e,)h(i.e.,)h(a)e(p)s(oin)m(ter)f
+(to)i(an)e(arra)m(y)h(of)g(p)s(oin)m(ters)f(to)h(an)g(arra)m(y)g(of)g
+(c)m(haracters.)54 b(This)34 b(is)g(di\013eren)m(t)h(from)0
+2165 y(the)d(k)m(eyw)m(ord)h(reading)f(and)f(writing)h(routines)g
+(where)g(TSTRING)f(corresp)s(onds)g(to)h(a)h(C)e('c)m(har*')j(data)f(t)
+m(yp)s(e,)0 2278 y(i.e.,)g(a)e(single)h(p)s(oin)m(ter)f(to)h(an)f(arra)
+m(y)g(of)g(c)m(haracters.)45 b(When)30 b(reading)i(strings)e(from)h(a)g
+(table,)i(the)e(c)m(har)h(arra)m(ys)0 2391 y(ob)m(viously)f(m)m(ust)f
+(ha)m(v)m(e)i(b)s(een)e(allo)s(cated)i(long)f(enough)f(to)h(hold)f(the)
+h(whole)f(FITS)g(table)h(string.)0 2551 y(Numerical)i(data)g(v)-5
+b(alues)33 b(are)g(automatically)j(scaled)d(b)m(y)f(the)h(TSCALn)e(and)
+h(TZER)m(On)f(k)m(eyw)m(ord)i(v)-5 b(alues)33 b(\(if)0
+2664 y(they)e(exist\).)0 2824 y(In)25 b(the)g(case)i(of)e(binary)g
+(tables)h(with)f(v)m(ector)i(elemen)m(ts,)h(the)e('felem')g(parameter)g
+(de\014nes)f(the)g(starting)h(elemen)m(t)0 2937 y(\(b)s(eginning)h
+(with)g(1,)h(not)g(0\))g(within)f(the)g(cell)i(\(a)f(cell)g(is)f
+(de\014ned)f(as)i(the)f(in)m(tersection)i(of)f(a)f(ro)m(w)h(and)e(a)i
+(column)0 3050 y(and)e(ma)m(y)h(con)m(tain)h(a)g(single)f(v)-5
+b(alue)27 b(or)g(a)g(v)m(ector)h(of)f(v)-5 b(alues\).)40
+b(The)26 b(felem)i(parameter)f(is)g(ignored)f(when)g(dealing)0
+3163 y(with)34 b(ASCI)s(I)e(tables.)52 b(Similarly)-8
+b(,)36 b(in)d(the)i(case)f(of)h(binary)e(tables)h(the)h('nelemen)m(ts')
+g(parameter)f(sp)s(eci\014es)g(the)0 3275 y(total)28
+b(n)m(um)m(b)s(er)d(of)h(v)m(ector)i(v)-5 b(alues)27
+b(to)g(b)s(e)e(read)h(or)h(written)f(\(con)m(tin)m(uing)i(on)e
+(subsequen)m(t)f(ro)m(ws)i(if)f(required\))g(and)0 3388
+y(not)31 b(the)f(n)m(um)m(b)s(er)f(of)i(table)g(cells.)0
+3637 y Fi(1)81 b Fj(W)-8 b(rite)31 b(elemen)m(ts)h(in)m(to)f(an)g(ASCI)
+s(I)e(or)h(binary)f(table)j(column.)0 3885 y(The)38 b(\014rst)f
+(routine)h(simply)g(writes)g(the)g(arra)m(y)h(of)f(v)-5
+b(alues)39 b(to)g(the)f(FITS)g(\014le)g(\(doing)g(data)h(t)m(yp)s(e)g
+(con)m(v)m(ersion)0 3998 y(if)h(necessary\))h(whereas)f(the)h(second)f
+(routine)h(will)f(substitute)h(the)f(appropriate)g(FITS)g(n)m(ull)g(v)
+-5 b(alue)41 b(for)f(all)0 4111 y(elemen)m(ts)34 b(whic)m(h)f(are)g
+(equal)h(to)f(the)g(input)f(v)-5 b(alue)34 b(of)f(n)m(ulv)-5
+b(al)33 b(\(note)h(that)f(this)g(parameter)g(giv)m(es)i(the)e(address)0
+4224 y(of)40 b(n)m(ulv)-5 b(al,)44 b(not)c(the)g(n)m(ull)g(v)-5
+b(alue)41 b(itself)7 b(\).)72 b(F)-8 b(or)40 b(in)m(teger)i(columns)e
+(the)g(FITS)g(n)m(ull)g(v)-5 b(alue)40 b(is)h(de\014ned)e(b)m(y)h(the)0
+4337 y(TNULLn)32 b(k)m(eyw)m(ord)i(\(an)g(error)e(is)i(returned)e(if)h
+(the)h(k)m(eyw)m(ord)f(do)s(esn't)g(exist\).)51 b(F)-8
+b(or)34 b(\015oating)g(p)s(oin)m(t)f(columns)0 4449 y(the)h(sp)s(ecial)
+h(IEEE)f(NaN)h(\(Not-a-Num)m(b)s(er\))h(v)-5 b(alue)35
+b(will)f(b)s(e)g(written)g(in)m(to)i(the)e(FITS)g(\014le.)52
+b(If)34 b(a)h(n)m(ull)f(p)s(oin)m(ter)0 4562 y(is)f(en)m(tered)g(for)g
+(n)m(ulv)-5 b(al,)34 b(then)f(the)g(n)m(ull)g(v)-5 b(alue)33
+b(is)g(ignored)g(and)g(this)g(routine)f(b)s(eha)m(v)m(es)i(the)f(same)g
+(as)h(the)f(\014rst)0 4675 y(routine.)41 b(The)29 b(third)g(routine)h
+(simply)f(writes)h(unde\014ned)d(pixel)k(v)-5 b(alues)30
+b(to)g(the)g(column.)41 b(The)29 b(fourth)g(routine)0
+4788 y(\014lls)e(ev)m(ery)i(column)e(in)h(the)g(table)g(with)g(n)m(ull)
+f(v)-5 b(alues,)29 b(in)e(the)h(sp)s(eci\014ed)f(ro)m(ws)h(\(ignoring)g
+(an)m(y)g(columns)g(that)g(do)0 4901 y(not)j(ha)m(v)m(e)g(a)g
+(de\014ned)e(n)m(ull)h(v)-5 b(alue\).)95 5149 y Fe(int)47
+b(fits_write_col)d(/)k(ffpcl)286 5262 y(\(fitsfile)e(*fptr,)g(int)h
+(datatype,)e(int)i(colnum,)f(LONGLONG)f(firstrow,)334
+5375 y(LONGLONG)h(firstelem,)f(LONGLONG)g(nelements,)g(DTYPE)i(*array,)
+e(>)j(int)f(*status\))95 5601 y(int)g(fits_write_colnull)c(/)48
+b(ffpcn)286 5714 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(int)i
+(colnum,)f(LONGLONG)f(firstrow,)p eop end
+%%Page: 55 63
+TeXDict begin 55 62 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29
+b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864
+b Fj(55)286 555 y Fe(LONGLONG)46 b(firstelem,)f(LONGLONG)g(nelements,)g
+(DTYPE)i(*array,)f(DTYPE)g(*nulval,)286 668 y(>)i(int)f(*status\))143
+894 y(int)g(fits_write_col_null)c(/)k(ffpclu)334 1007
+y(\(fitsfile)e(*fptr,)h(int)h(colnum,)f(LONGLONG)g(firstrow,)f
+(LONGLONG)h(firstelem,)382 1120 y(LONGLONG)f(nelements,)g(>)j(int)f
+(*status\))143 1346 y(int)g(fits_write_nullrows)c(/)k(ffprwu)334
+1458 y(\(fitsfile)e(*fptr,)h(LONGLONG)g(firstrow,)f(LONGLONG)h
+(nelements,)f(>)i(int)g(*status\))0 1783 y Fi(2)81 b
+Fj(Read)33 b(elemen)m(ts)i(from)e(an)g(ASCI)s(I)f(or)i(binary)e(table)i
+(column.)50 b(The)33 b(data)h(t)m(yp)s(e)g(parameter)g(sp)s(eci\014es)f
+(the)227 1896 y(data)28 b(t)m(yp)s(e)g(of)g(the)f(`n)m(ulv)-5
+b(al')29 b(and)e(`arra)m(y')h(p)s(oin)m(ters;)h(Unde\014ned)c(arra)m(y)
+j(elemen)m(ts)h(will)f(b)s(e)f(returned)f(with)227 2009
+y(a)k(v)-5 b(alue)30 b(=)e(*n)m(ullv)-5 b(al,)31 b(\(note)f(that)g
+(this)f(parameter)h(giv)m(es)g(the)g(address)e(of)h(the)h(n)m(ull)f(v)
+-5 b(alue,)30 b(not)g(the)f(n)m(ull)227 2122 y(v)-5 b(alue)31
+b(itself)7 b(\))32 b(unless)e(n)m(ulv)-5 b(al)32 b(=)e(0)h(or)g(*n)m
+(ulv)-5 b(al)31 b(=)g(0,)g(in)f(whic)m(h)h(case)h(no)e(c)m(hec)m(king)j
+(for)d(unde\014ned)f(pixels)227 2235 y(will)34 b(b)s(e)f(p)s(erformed.)
+48 b(The)33 b(second)g(routine)h(is)f(similar)h(except)g(that)g(an)m(y)
+g(unde\014ned)d(pixels)j(will)g(ha)m(v)m(e)227 2347 y(the)d(corresp)s
+(onding)e(n)m(ullarra)m(y)i(elemen)m(t)h(set)f(equal)g(to)g(TR)m(UE)f
+(\(=)h(1\).)227 2530 y(An)m(y)c(column,)g(regardless)f(of)g(it's)h(in)m
+(trinsic)g(data)g(t)m(yp)s(e,)g(ma)m(y)g(b)s(e)e(read)i(as)f(a)g
+(string.)40 b(It)26 b(should)f(b)s(e)h(noted)227 2643
+y(ho)m(w)m(ev)m(er)32 b(that)f(reading)f(a)h(n)m(umeric)f(column)g(as)h
+(a)g(string)f(is)g(10)i(-)e(100)i(times)f(slo)m(w)m(er)g(than)f
+(reading)h(the)227 2756 y(same)22 b(column)g(as)f(a)h(n)m(um)m(b)s(er)e
+(due)h(to)i(the)e(large)i(o)m(v)m(erhead)g(in)e(constructing)h(the)g
+(formatted)g(strings.)37 b(The)227 2869 y(displa)m(y)26
+b(format)g(of)f(the)h(returned)e(strings)h(will)h(b)s(e)f(determined)g
+(b)m(y)g(the)h(TDISPn)e(k)m(eyw)m(ord,)j(if)e(it)h(exists,)227
+2982 y(otherwise)32 b(b)m(y)f(the)g(data)h(t)m(yp)s(e)f(of)g(the)g
+(column.)43 b(The)30 b(length)i(of)f(the)g(returned)f(strings)h(\(not)g
+(including)227 3095 y(the)26 b(n)m(ull)f(terminating)i(c)m(haracter\))g
+(can)f(b)s(e)f(determined)g(with)g(the)h(\014ts)p 2703
+3095 28 4 v 32 w(get)p 2855 3095 V 34 w(col)p 2999 3095
+V 34 w(displa)m(y)p 3311 3095 V 33 w(width)f(routine.)227
+3208 y(The)30 b(follo)m(wing)i(TDISPn)d(displa)m(y)i(formats)f(are)h
+(curren)m(tly)f(supp)s(orted:)418 3554 y Fe(Iw.m)142
+b(Integer)418 3667 y(Ow.m)g(Octal)47 b(integer)418 3780
+y(Zw.m)142 b(Hexadecimal)45 b(integer)418 3893 y(Fw.d)142
+b(Fixed)47 b(floating)e(point)418 4006 y(Ew.d)142 b(Exponential)45
+b(floating)h(point)418 4119 y(Dw.d)142 b(Exponential)45
+b(floating)h(point)418 4232 y(Gw.d)142 b(General;)46
+b(uses)g(Fw.d)h(if)g(significance)e(not)i(lost,)f(else)h(Ew.d)227
+4579 y Fj(where)24 b(w)h(is)f(the)h(width)f(in)g(c)m(haracters)i(of)f
+(the)g(displa)m(y)m(ed)g(v)-5 b(alues,)27 b(m)d(is)h(the)f(minim)m(um)g
+(n)m(um)m(b)s(er)g(of)g(digits)227 4692 y(displa)m(y)m(ed,)29
+b(and)e(d)g(is)h(the)f(n)m(um)m(b)s(er)g(of)g(digits)i(to)f(the)g(righ)
+m(t)g(of)f(the)h(decimal.)41 b(The)27 b(.m)g(\014eld)g(is)h(optional.)
+95 5016 y Fe(int)47 b(fits_read_col)e(/)i(ffgcv)286 5129
+y(\(fitsfile)f(*fptr,)g(int)h(datatype,)e(int)i(colnum,)f(LONGLONG)f
+(firstrow,)g(LONGLONG)h(firstelem,)334 5242 y(LONGLONG)g(nelements,)f
+(DTYPE)h(*nulval,)g(DTYPE)g(*array,)g(int)h(*anynul,)e(int)i(*status\))
+95 5468 y(int)g(fits_read_colnull)c(/)48 b(ffgcf)286
+5581 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(int)i(colnum,)f
+(LONGLONG)f(firstrow,)g(LONGLONG)h(firstelem,)286 5694
+y(LONGLONG)g(nelements,)f(DTYPE)h(*array,)g(char)h(*nullarray,)d(int)j
+(*anynul,)f(int)h(*status\))p eop end
+%%Page: 56 64
+TeXDict begin 56 63 bop 0 299 a Fj(56)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Fd(5.7.5)112 b(Ro)m(w)37 b(Selection)h(and)h
+(Calculator)f(Routines)0 774 y Fj(These)21 b(routines)f(all)i(parse)f
+(and)f(ev)-5 b(aluate)23 b(an)d(input)g(string)h(con)m(taining)i(a)e
+(user)f(de\014ned)g(arithmetic)i(expression.)0 887 y(The)29
+b(\014rst)f(3)i(routines)f(select)i(ro)m(ws)e(in)g(a)h(FITS)e(table,)j
+(based)e(on)g(whether)g(the)g(expression)g(ev)-5 b(aluates)31
+b(to)f(true)0 1000 y(\(not)e(equal)f(to)h(zero\))g(or)f(false)h
+(\(zero\).)41 b(The)27 b(other)g(routines)g(ev)-5 b(aluate)29
+b(the)e(expression)g(and)f(calculate)k(a)d(v)-5 b(alue)0
+1113 y(for)26 b(eac)m(h)i(ro)m(w)f(of)g(the)g(table.)40
+b(The)26 b(allo)m(w)m(ed)j(expression)d(syn)m(tax)i(is)e(describ)s(ed)g
+(in)g(the)h(ro)m(w)g(\014lter)g(section)g(in)g(the)0
+1226 y(`Extended)32 b(File)h(Name)g(Syn)m(tax')g(c)m(hapter)g(of)f
+(this)g(do)s(cumen)m(t.)46 b(The)32 b(expression)g(ma)m(y)h(also)g(b)s
+(e)e(written)i(to)g(a)0 1339 y(text)h(\014le,)h(and)e(the)h(name)f(of)h
+(the)f(\014le,)i(prep)s(ended)c(with)i(a)h('@')g(c)m(haracter)h(ma)m(y)
+f(b)s(e)f(supplied)f(for)h(the)h('expr')0 1452 y(parameter)d(\(e.g.)42
+b('@\014lename.txt'\).)g(The)30 b(expression)g(in)g(the)g(\014le)h(can)
+f(b)s(e)g(arbitrarily)g(complex)h(and)f(extend)0 1564
+y(o)m(v)m(er)35 b(m)m(ultiple)g(lines)g(of)f(the)g(\014le.)53
+b(Lines)33 b(that)i(b)s(egin)f(with)g(2)g(slash)g(c)m(haracters)i
+(\('//'\))g(will)f(b)s(e)e(ignored)i(and)0 1677 y(ma)m(y)c(b)s(e)f
+(used)f(to)i(add)f(commen)m(ts)h(to)h(the)e(\014le.)0
+1925 y Fi(1)81 b Fj(Ev)-5 b(aluate)38 b(a)f(b)s(o)s(olean)g(expression)
+g(o)m(v)m(er)h(the)g(indicated)f(ro)m(ws,)i(returning)d(an)h(arra)m(y)h
+(of)f(\015ags)g(indicating)227 2038 y(whic)m(h)31 b(ro)m(ws)g(ev)-5
+b(aluated)32 b(to)f(TR)m(UE/F)-10 b(ALSE.)31 b(Up)s(on)f(return,)g(*n)p
+2518 2038 28 4 v 33 w(go)s(o)s(d)p 2743 2038 V 33 w(ro)m(ws)g(con)m
+(tains)i(the)f(n)m(um)m(b)s(er)f(of)227 2151 y(ro)m(ws)h(that)g(ev)-5
+b(aluate)32 b(to)f(TR)m(UE.)95 2399 y Fe(int)47 b(fits_find_rows)d(/)k
+(fffrow)286 2512 y(\(fitsfile)e(*fptr,)93 b(char)47 b(*expr,)f(long)h
+(firstrow,)e(long)i(nrows,)286 2625 y(>)h(long)e(*n_good_rows,)f(char)h
+(*row_status,)92 b(int)47 b(*status\))0 2872 y Fi(2)81
+b Fj(Find)29 b(the)i(\014rst)f(ro)m(w)g(whic)m(h)g(satis\014es)h(the)g
+(input)e(b)s(o)s(olean)h(expression)95 3120 y Fe(int)47
+b(fits_find_first_row)c(/)k(ffffrw)286 3233 y(\(fitsfile)f(*fptr,)93
+b(char)47 b(*expr,)f(>)i(long)e(*rownum,)g(int)h(*status\))0
+3481 y Fi(3)81 b Fj(Ev)-5 b(aluate)35 b(an)f(expression)h(on)f(all)h
+(ro)m(ws)g(of)f(a)h(table.)54 b(If)34 b(the)g(input)g(and)g(output)g
+(\014les)g(are)h(not)g(the)f(same,)227 3594 y(cop)m(y)i(the)g(TR)m(UE)f
+(ro)m(ws)g(to)h(the)f(output)g(\014le;)j(if)d(the)g(output)g(table)h
+(is)f(not)h(empt)m(y)-8 b(,)37 b(then)e(this)g(routine)227
+3707 y(will)28 b(app)s(end)e(the)i(new)f(selected)i(ro)m(ws)e(after)h
+(the)g(existing)h(ro)m(ws.)39 b(If)27 b(the)h(\014les)g(are)f(the)h
+(same,)h(delete)g(the)227 3819 y(F)-10 b(ALSE)30 b(ro)m(ws)h(\(preserv)
+m(e)f(the)h(TR)m(UE)f(ro)m(ws\).)95 4067 y Fe(int)47
+b(fits_select_rows)d(/)j(ffsrow)286 4180 y(\(fitsfile)f(*infptr,)f
+(fitsfile)h(*outfptr,)93 b(char)46 b(*expr,)94 b(>)48
+b(int)f(*status)e(\))0 4428 y Fi(4)81 b Fj(Calculate)28
+b(an)f(expression)f(for)h(the)f(indicated)i(ro)m(ws)e(of)h(a)g(table,)i
+(returning)d(the)h(results,)g(cast)h(as)f(datat)m(yp)s(e)227
+4541 y(\(TSHOR)-8 b(T,)32 b(TDOUBLE,)h(etc\),)h(in)e(arra)m(y)-8
+b(.)48 b(If)31 b(n)m(ulv)-5 b(al==NULL,)33 b(UNDEFs)g(will)f(b)s(e)g
+(zero)s(ed)g(out.)47 b(F)-8 b(or)227 4654 y(v)m(ector)37
+b(results,)f(the)f(n)m(um)m(b)s(er)e(of)i(elemen)m(ts)i(returned)c(ma)m
+(y)j(b)s(e)e(less)h(than)g(nelemen)m(ts)g(if)g(nelemen)m(ts)h(is)227
+4767 y(not)c(an)g(ev)m(en)h(m)m(ultiple)f(of)g(the)g(result)g
+(dimension.)44 b(Call)33 b(\014ts)p 2392 4767 V 32 w(test)p
+2570 4767 V 34 w(expr)e(to)h(obtain)h(the)f(dimensions)f(of)227
+4880 y(the)g(results.)95 5127 y Fe(int)47 b(fits_calc_rows)d(/)k
+(ffcrow)286 5240 y(\(fitsfile)e(*fptr,)93 b(int)47 b(datatype,)f(char)g
+(*expr,)g(long)h(firstrow,)334 5353 y(long)g(nelements,)e(void)h
+(*nulval,)g(>)h(void)g(*array,)94 b(int)46 b(*anynul,)g(int)h
+(*status\))0 5601 y Fi(5)81 b Fj(Ev)-5 b(aluate)33 b(an)g(expression)f
+(and)h(write)f(the)h(result)g(either)g(to)h(a)f(column)f(\(if)h(the)g
+(expression)f(is)h(a)g(function)227 5714 y(of)d(other)g(columns)g(in)f
+(the)h(table\))h(or)f(to)g(a)h(k)m(eyw)m(ord)f(\(if)g(the)g(expression)
+f(ev)-5 b(aluates)32 b(to)e(a)g(constan)m(t)i(and)p eop
+end
+%%Page: 57 65
+TeXDict begin 57 64 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29
+b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864
+b Fj(57)227 555 y(is)31 b(not)f(a)h(function)f(of)h(other)f(columns)h
+(in)f(the)g(table\).)42 b(In)30 b(the)h(former)e(case,)j(the)f(parName)
+f(parameter)227 668 y(is)40 b(the)g(name)f(of)h(the)g(column)f(\(whic)m
+(h)h(ma)m(y)g(or)f(ma)m(y)h(not)g(already)g(exist\))h(in)m(to)f(whic)m
+(h)g(to)g(write)g(the)227 781 y(results,)e(and)f(parInfo)e(con)m(tains)
+j(an)f(optional)g(TF)m(ORM)g(k)m(eyw)m(ord)g(v)-5 b(alue)38
+b(if)e(a)h(new)f(column)h(is)f(b)s(eing)227 894 y(created.)42
+b(If)28 b(a)h(TF)m(ORM)h(v)-5 b(alue)29 b(is)g(not)g(sp)s(eci\014ed)g
+(then)f(a)i(default)f(format)g(will)h(b)s(e)e(used,)h(dep)s(ending)e
+(on)227 1007 y(the)35 b(expression.)54 b(If)34 b(the)h(expression)f(ev)
+-5 b(aluates)37 b(to)e(a)g(constan)m(t,)i(then)e(the)g(result)f(will)h
+(b)s(e)f(written)h(to)227 1120 y(the)28 b(k)m(eyw)m(ord)g(name)f(giv)m
+(en)h(b)m(y)g(the)f(parName)h(parameter,)h(and)d(the)i(parInfo)e
+(parameter)i(ma)m(y)g(b)s(e)f(used)227 1233 y(to)k(supply)e(an)h
+(optional)i(commen)m(t)f(for)f(the)g(k)m(eyw)m(ord.)42
+b(If)29 b(the)i(k)m(eyw)m(ord)g(do)s(es)f(not)g(already)h(exist,)g
+(then)227 1346 y(the)f(name)f(of)h(the)g(k)m(eyw)m(ord)g(m)m(ust)f(b)s
+(e)g(preceded)g(with)g(a)h('#')f(c)m(haracter,)j(otherwise)e(the)f
+(result)h(will)g(b)s(e)227 1458 y(written)h(to)g(a)g(column)f(with)g
+(that)h(name.)95 1719 y Fe(int)47 b(fits_calculator)d(/)j(ffcalc)286
+1832 y(\(fitsfile)f(*infptr,)f(char)i(*expr,)f(fitsfile)f(*outfptr,)h
+(char)g(*parName,)334 1945 y(char)h(*parInfo,)e(>)95
+b(int)47 b(*status\))0 2205 y Fi(6)81 b Fj(This)38 b(calculator)k
+(routine)e(is)f(similar)h(to)g(the)g(previous)f(routine,)j(except)f
+(that)f(the)g(expression)f(is)h(only)227 2318 y(ev)-5
+b(aluated)42 b(o)m(v)m(er)f(the)f(sp)s(eci\014ed)g(ro)m(w)g(ranges.)70
+b(nranges)39 b(sp)s(eci\014es)h(the)g(n)m(um)m(b)s(er)f(of)h(ro)m(w)h
+(ranges,)i(and)227 2431 y(\014rstro)m(w)30 b(and)g(lastro)m(w)h(giv)m
+(e)h(the)f(starting)g(and)f(ending)g(ro)m(w)g(n)m(um)m(b)s(er)f(of)i
+(eac)m(h)g(range.)95 2691 y Fe(int)47 b(fits_calculator_rng)c(/)k
+(ffcalc_rng)286 2804 y(\(fitsfile)f(*infptr,)f(char)i(*expr,)f
+(fitsfile)f(*outfptr,)h(char)g(*parName,)334 2917 y(char)h(*parInfo,)e
+(int)i(nranges,)e(long)i(*firstrow,)e(long)i(*lastrow)334
+3030 y(>)95 b(int)47 b(*status\))0 3290 y Fi(7)81 b Fj(Ev)-5
+b(aluate)36 b(the)f(giv)m(en)h(expression)f(and)g(return)f(dimension)g
+(and)h(t)m(yp)s(e)g(information)g(on)g(the)h(result.)54
+b(The)227 3403 y(returned)37 b(dimensions)f(corresp)s(ond)g(to)j(a)e
+(single)i(ro)m(w)e(en)m(try)h(of)f(the)h(requested)f(expression,)j(and)
+d(are)227 3516 y(equiv)-5 b(alen)m(t)26 b(to)f(the)g(result)f(of)g
+(\014ts)p 1380 3516 28 4 v 33 w(read)p 1585 3516 V 32
+w(tdim\(\).)40 b(Note)25 b(that)g(strings)f(are)h(considered)f(to)h(b)s
+(e)f(one)g(elemen)m(t)227 3629 y(regardless)31 b(of)g(string)f(length.)
+41 b(If)30 b(maxdim)g(==)g(0,)h(then)f(naxes)g(is)h(optional.)95
+3889 y Fe(int)47 b(fits_test_expr)d(/)k(fftexp)286 4002
+y(\(fitsfile)e(*fptr,)g(char)g(*expr,)g(int)h(maxdim)f(>)i(int)f
+(*datatype,)e(long)h(*nelem,)g(int)h(*naxis,)334 4115
+y(long)g(*naxes,)f(int)g(*status\))0 4407 y Fd(5.7.6)112
+b(Column)39 b(Binning)f(or)f(Histogramming)i(Routines)0
+4626 y Fj(The)30 b(follo)m(wing)j(routines)e(ma)m(y)g(b)s(e)g(useful)f
+(when)g(p)s(erforming)g(histogramming)h(op)s(erations)h(on)e
+(column\(s\))i(of)0 4738 y(a)f(table)g(to)g(generate)h(an)e(image)i(in)
+e(a)h(primary)e(arra)m(y)i(or)f(image)i(extension.)0
+4999 y Fi(1)81 b Fj(Calculate)27 b(the)e(histogramming)h(parameters)g
+(\(min,)h(max,)f(and)f(bin)g(size)h(for)f(eac)m(h)i(axis)f(of)f(the)h
+(histogram,)227 5112 y(based)38 b(on)g(a)g(v)-5 b(ariet)m(y)39
+b(of)f(p)s(ossible)g(input)f(parameters.)64 b(If)37 b(the)h(input)f
+(names)h(of)g(the)g(columns)g(to)h(b)s(e)227 5225 y(binned)d(are)i(n)m
+(ull,)h(then)e(the)h(routine)f(will)h(\014rst)f(lo)s(ok)h(for)f(the)h
+(CPREF)f(=)g("NAME1,)j(NAME2,)h(...")227 5337 y(k)m(eyw)m(ord)34
+b(whic)m(h)f(lists)h(the)g(preferred)e(columns.)50 b(If)32
+b(not)i(presen)m(t,)h(then)e(the)g(routine)h(will)g(assume)f(the)227
+5450 y(column)d(names)h(X,)f(Y,)h(Z,)f(and)g(T)g(for)g(up)g(to)h(4)f
+(axes)h(\(as)g(sp)s(eci\014ed)f(b)m(y)g(the)h(NAXIS)f(parameter\).)227
+5601 y(MININ)39 b(and)f(MAXIN)h(are)g(input)e(arra)m(ys)i(that)g(giv)m
+(e)h(the)f(minim)m(um)e(and)h(maxim)m(um)h(v)-5 b(alue)39
+b(for)f(the)227 5714 y(histogram,)30 b(along)f(eac)m(h)g(axis.)40
+b(Alternativ)m(ely)-8 b(,)32 b(the)c(name)g(of)h(k)m(eyw)m(ords)f(that)
+h(giv)m(e)g(the)f(min,)h(max,)g(and)p eop end
+%%Page: 58 66
+TeXDict begin 58 65 bop 0 299 a Fj(58)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)227 555 y Fj(binsize)e(ma)m(y)g(b)s(e)f(giv)m(e)h(with)f
+(the)h(MINNAME,)h(MAXNAME,)f(and)f(BINNAME)h(arra)m(y)g(parameters.)40
+b(If)227 668 y(the)33 b(v)-5 b(alue)34 b(=)e(DOUBLENULL)-10
+b(V)g(ALUE)33 b(and)g(no)f(k)m(eyw)m(ord)i(names)e(are)h(giv)m(en,)i
+(then)e(the)g(routine)g(will)227 781 y(use)i(the)f(TLMINn)g(and)g
+(TLMAXn)g(k)m(eyw)m(ords,)j(if)d(presen)m(t,)i(or)f(the)f(actual)i(min)
+e(and/or)h(max)g(v)-5 b(alues)227 894 y(in)30 b(the)h(column.)227
+1046 y(BINSIZEIN)j(is)h(an)g(arra)m(y)g(giving)h(the)f(binsize)g(along)
+h(eac)m(h)g(axis.)55 b(If)34 b(the)h(v)-5 b(alue)36 b(=)e(DOUBLENULL-)
+227 1159 y(V)-10 b(ALUE,)38 b(and)e(a)i(k)m(eyw)m(ord)f(name)g(is)h
+(not)f(sp)s(eci\014ed)f(with)h(BINNAME,)h(then)f(this)g(routine)g(will)
+h(\014rst)227 1272 y(lo)s(ok)d(for)f(the)g(TDBINn)g(k)m(eyw)m(ord,)i
+(or)f(else)g(will)f(use)g(a)h(binsize)f(=)g(1,)h(or)g(a)f(binsize)g
+(that)h(pro)s(duces)e(10)227 1385 y(histogram)e(bins,)f(whic)m(h)g(ev)m
+(er)h(is)g(smaller.)95 1649 y Fe(int)47 b(fits_calc_binning)143
+1761 y(Input)g(parameters:)239 1874 y(\(fitsfile)e(*fptr,)94
+b(/*)47 b(IO)g(-)h(pointer)d(to)j(table)e(to)h(be)g(binned)667
+b(*/)286 1987 y(int)47 b(naxis,)333 b(/*)47 b(I)g(-)h(number)e(of)h
+(axes/columns)e(in)i(the)g(binned)f(image)94 b(*/)286
+2100 y(char)47 b(colname[4][FLEN_VALUE],)137 b(/*)47
+b(I)h(-)f(optional)f(column)g(names)428 b(*/)286 2213
+y(double)46 b(*minin,)237 b(/*)47 b(I)h(-)f(optional)f(lower)g(bound)h
+(value)f(for)h(each)f(axis)95 b(*/)286 2326 y(double)46
+b(*maxin,)237 b(/*)47 b(I)h(-)f(optional)f(upper)g(bound)h(value,)f
+(for)h(each)f(axis)h(*/)286 2439 y(double)f(*binsizein,)f(/*)i(I)h(-)f
+(optional)f(bin)h(size)f(along)h(each)f(axis)429 b(*/)286
+2552 y(char)47 b(minname[4][FLEN_VALUE],)41 b(/*)48 b(I)f(-)h(optional)
+d(keywords)h(for)h(min)333 b(*/)286 2665 y(char)47 b
+(maxname[4][FLEN_VALUE],)41 b(/*)48 b(I)f(-)h(optional)d(keywords)h
+(for)h(max)333 b(*/)286 2778 y(char)47 b(binname[4][FLEN_VALUE],)41
+b(/*)48 b(I)f(-)h(optional)d(keywords)h(for)h(binsize)141
+b(*/)143 2891 y(Output)46 b(parameters:)286 3003 y(int)h(*colnum,)237
+b(/*)47 b(O)g(-)h(column)e(numbers,)f(to)j(be)f(binned)f(*/)286
+3116 y(long)h(*naxes,)237 b(/*)47 b(O)g(-)h(number)e(of)h(bins)g(in)g
+(each)g(histogram)e(axis)h(*/)286 3229 y(float)h(*amin,)237
+b(/*)47 b(O)g(-)h(lower)e(bound)h(of)g(the)g(histogram)e(axes)i(*/)286
+3342 y(float)g(*amax,)237 b(/*)47 b(O)g(-)h(upper)e(bound)h(of)g(the)g
+(histogram)e(axes)i(*/)286 3455 y(float)g(*binsize,)93
+b(/*)47 b(O)g(-)h(width)e(of)h(histogram)f(bins/pixels)e(on)k(each)e
+(axis)h(*/)286 3568 y(int)g(*status\))0 3832 y Fi(2)81
+b Fj(Cop)m(y)26 b(the)h(relev)-5 b(an)m(t)28 b(k)m(eyw)m(ords)f(from)g
+(the)g(header)f(of)h(the)g(table)h(that)f(is)g(b)s(eing)f(binned,)h(to)
+g(the)g(the)g(header)227 3945 y(of)e(the)h(output)e(histogram)i(image.)
+40 b(This)24 b(will)i(not)f(cop)m(y)h(the)f(table)h(structure)f(k)m
+(eyw)m(ords)g(\(e.g.,)j(NAXIS,)227 4057 y(TF)m(ORMn,)j(TTYPEn,)f
+(etc.\))44 b(nor)31 b(will)g(it)g(cop)m(y)h(the)f(k)m(eyw)m(ords)g
+(that)h(apply)e(to)i(other)f(columns)g(of)g(the)227 4170
+y(table)g(that)g(are)f(not)h(used)e(to)i(create)g(the)f(histogram.)42
+b(This)29 b(routine)h(will)g(translate)h(the)g(names)f(of)g(the)227
+4283 y(W)-8 b(orld)27 b(Co)s(ordinate)e(System)h(\(W)m(CS\))g(k)m(eyw)m
+(ords)g(for)g(the)g(binned)e(columns)h(in)m(to)i(the)f(form)f(that)h
+(is)g(need)227 4396 y(for)h(a)g(FITS)g(image)h(\(e.g.,)h(the)e(TCTYPn)f
+(table)i(k)m(eyw)m(ord)f(will)g(b)s(e)g(translated)g(to)h(the)f(CTYPEn)
+f(image)227 4509 y(k)m(eyw)m(ord\).)95 4773 y Fe(int)47
+b(fits_copy_pixlist2image)286 4886 y(\(fitsfile)f(*infptr,)141
+b(/*)47 b(I)g(-)h(pointer)e(to)h(input)f(HDU)h(*/)334
+4999 y(fitsfile)f(*outfptr,)93 b(/*)47 b(I)g(-)h(pointer)e(to)h(output)
+f(HDU)h(*/)334 5111 y(int)g(firstkey,)332 b(/*)47 b(I)g(-)h(first)e
+(HDU)h(keyword)f(to)h(start)f(with)h(*/)334 5224 y(int)g(naxis,)476
+b(/*)47 b(I)g(-)h(number)e(of)h(axes)g(in)g(the)g(image)f(*/)334
+5337 y(int)h(*colnum,)380 b(/*)47 b(I)g(-)h(numbers)e(of)h(the)g
+(columns)e(to)j(be)f(binned)94 b(*/)334 5450 y(int)47
+b(*status\))380 b(/*)47 b(IO)g(-)g(error)g(status)f(*/)0
+5714 y Fi(3)81 b Fj(W)-8 b(rite)36 b(a)f(set)h(of)f(default)h(W)m(CS)f
+(k)m(eyw)m(ords)g(to)h(the)f(histogram)h(header,)g(IF)f(the)g(W)m(CS)g
+(k)m(eyw)m(ords)h(do)f(not)p eop end
+%%Page: 59 67
+TeXDict begin 59 66 bop 0 299 a Fh(5.7.)72 b(ASCI)s(I)29
+b(AND)i(BINAR)-8 b(Y)31 b(T)-8 b(ABLE)31 b(R)m(OUTINES)1864
+b Fj(59)227 555 y(already)40 b(exist.)69 b(This)38 b(will)i(create)h(a)
+e(linear)h(W)m(CS)f(where)g(the)h(co)s(ordinate)g(t)m(yp)s(es)f(are)h
+(equal)g(to)g(the)227 668 y(original)32 b(column)e(names.)95
+953 y Fe(int)47 b(fits_write_keys_histo)239 1066 y(\(fitsfile)e(*fptr,)
+237 b(/*)47 b(I)h(-)f(pointer)f(to)h(table)f(to)i(be)f(binned)666
+b(*/)286 1179 y(fitsfile)46 b(*histptr,)93 b(/*)47 b(I)h(-)f(pointer)f
+(to)h(output)f(histogram)f(image)i(HDU)285 b(*/)286 1292
+y(int)47 b(naxis,)476 b(/*)47 b(I)h(-)f(number)f(of)h(axes)g(in)g(the)g
+(histogram)e(image)285 b(*/)286 1405 y(int)47 b(*colnum,)380
+b(/*)47 b(I)h(-)f(column)f(numbers)g(of)h(the)g(binned)f(columns)332
+b(*/)286 1518 y(int)47 b(*status\))0 1803 y Fi(4)81 b
+Fj(Up)s(date)29 b(the)i(W)m(CS)f(k)m(eyw)m(ords)g(in)g(a)g(histogram)h
+(image)g(header)f(that)h(giv)m(e)g(the)f(lo)s(cation)i(of)e(the)g
+(reference)227 1916 y(pixel)h(\(CRPIXn\),)f(and)g(the)h(pixel)f(size)h
+(\(CDEL)-8 b(Tn\),)31 b(in)f(the)h(binned)e(image.)95
+2201 y Fe(int)47 b(fits_rebin_wcs)239 2314 y(\(fitsfile)e(*fptr,)237
+b(/*)47 b(I)h(-)f(pointer)f(to)h(table)f(to)i(be)f(binned)523
+b(*/)286 2426 y(int)47 b(naxis,)476 b(/*)47 b(I)h(-)f(number)f(of)h
+(axes)g(in)g(the)g(histogram)e(image)142 b(*/)286 2539
+y(float)47 b(*amin,)380 b(/*)47 b(I)h(-)f(first)f(pixel)h(include)f(in)
+h(each)f(axis)381 b(*/)286 2652 y(float)47 b(*binsize,)236
+b(/*)47 b(I)h(-)f(binning)f(factor)g(for)h(each)f(axis)572
+b(*/)286 2765 y(int)47 b(*status\))0 3050 y Fi(5)81 b
+Fj(Bin)33 b(the)h(v)-5 b(alues)35 b(in)e(the)h(input)f(table)h
+(columns,)h(and)e(write)h(the)g(histogram)h(arra)m(y)f(to)g(the)g
+(output)g(FITS)227 3163 y(image)e(\(histptr\).)95 3448
+y Fe(int)47 b(fits_make_hist)143 3561 y(\(fitsfile)e(*fptr,)190
+b(/*)47 b(I)g(-)h(pointer)e(to)h(table)f(with)h(X)g(and)g(Y)h(cols;)285
+b(*/)191 3674 y(fitsfile)45 b(*histptr,)h(/*)h(I)g(-)h(pointer)e(to)h
+(output)f(FITS)h(image)619 b(*/)191 3787 y(int)47 b(bitpix,)380
+b(/*)47 b(I)g(-)h(datatype)d(for)i(image:)f(16,)h(32,)g(-32,)g(etc)238
+b(*/)191 3900 y(int)47 b(naxis,)428 b(/*)47 b(I)g(-)h(number)e(of)h
+(axes)g(in)g(the)g(histogram)e(image)190 b(*/)191 4013
+y(long)47 b(*naxes,)332 b(/*)47 b(I)g(-)h(size)e(of)i(axes)e(in)h(the)g
+(histogram)f(image)285 b(*/)191 4126 y(int)47 b(*colnum,)332
+b(/*)47 b(I)g(-)h(column)e(numbers)g(\(array)g(length)g(=)h(naxis\))190
+b(*/)191 4238 y(float)46 b(*amin,)333 b(/*)47 b(I)g(-)h(minimum)e
+(histogram)f(value,)h(for)h(each)g(axis)142 b(*/)191
+4351 y(float)46 b(*amax,)333 b(/*)47 b(I)g(-)h(maximum)e(histogram)f
+(value,)h(for)h(each)g(axis)142 b(*/)191 4464 y(float)46
+b(*binsize,)189 b(/*)47 b(I)g(-)h(bin)f(size)f(along)h(each)f(axis)811
+b(*/)191 4577 y(float)46 b(weight,)285 b(/*)47 b(I)g(-)h(binning)e
+(weighting)f(factor)h(\(FLOATNULLVALUE)e(*/)1098 4690
+y(/*)238 b(for)47 b(no)g(weighting\))1143 b(*/)191 4803
+y(int)47 b(wtcolnum,)284 b(/*)47 b(I)g(-)h(keyword)e(or)h(col)g(for)g
+(weight)284 b(\(or)47 b(NULL\))g(*/)191 4916 y(int)g(recip,)428
+b(/*)47 b(I)g(-)h(use)f(reciprocal)e(of)i(the)g(weight?)f(0)h(or)g(1)
+239 b(*/)191 5029 y(char)47 b(*selectrow,)140 b(/*)47
+b(I)g(-)h(optional)d(array)i(\(length)f(=)h(no.)g(of)477
+b(*/)1098 5142 y(/*)47 b(rows)g(in)g(the)g(table\).)93
+b(If)47 b(the)g(element)f(is)h(true)95 b(*/)1098 5255
+y(/*)47 b(then)g(the)f(corresponding)f(row)i(of)g(the)g(table)f(will)h
+(*/)1098 5368 y(/*)g(be)g(included)f(in)h(the)g(histogram,)e(otherwise)
+g(the)95 b(*/)1098 5480 y(/*)47 b(row)g(will)f(be)i(skipped.)93
+b(Ingnored)45 b(if)j(*selectrow)d(*/)1098 5593 y(/*)i(is)g(equal)f(to)i
+(NULL.)1335 b(*/)191 5706 y(int)47 b(*status\))p eop
+end
+%%Page: 60 68
+TeXDict begin 60 67 bop 0 299 a Fj(60)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Ff(5.8)135 b(Utilit)l(y)47 b(Routines)0
+809 y Fd(5.8.1)112 b(File)39 b(Chec)m(ksum)f(Routines)0
+1028 y Fj(The)33 b(follo)m(wing)h(routines)f(either)h(compute)f(or)h(v)
+-5 b(alidate)34 b(the)g(c)m(hec)m(ksums)f(for)g(the)h(CHDU.)g(The)e(D)m
+(A)-8 b(T)g(ASUM)0 1140 y(k)m(eyw)m(ord)33 b(is)f(used)f(to)i(store)f
+(the)h(n)m(umerical)f(v)-5 b(alue)33 b(of)f(the)g(32-bit,)i(1's)f
+(complemen)m(t)g(c)m(hec)m(ksum)g(for)f(the)g(data)0
+1253 y(unit)26 b(alone.)40 b(If)25 b(there)h(is)h(no)e(data)i(unit)f
+(then)f(the)h(v)-5 b(alue)27 b(is)f(set)g(to)h(zero.)40
+b(The)26 b(n)m(umerical)g(v)-5 b(alue)27 b(is)f(stored)g(as)g(an)0
+1366 y(ASCI)s(I)20 b(string)i(of)h(digits,)h(enclosed)f(in)e(quotes,)k
+(b)s(ecause)d(the)g(v)-5 b(alue)23 b(ma)m(y)f(b)s(e)f(to)s(o)i(large)g
+(to)g(represen)m(t)f(as)g(a)h(32-bit)0 1479 y(signed)28
+b(in)m(teger.)41 b(The)27 b(CHECKSUM)g(k)m(eyw)m(ord)i(is)f(used)f(to)h
+(store)h(the)f(ASCI)s(I)e(enco)s(ded)i(COMPLEMENT)f(of)0
+1592 y(the)f(c)m(hec)m(ksum)h(for)f(the)h(en)m(tire)g(HDU.)g(Storing)f
+(the)h(complemen)m(t,)h(rather)e(than)g(the)h(actual)g(c)m(hec)m(ksum,)
+h(forces)0 1705 y(the)k(c)m(hec)m(ksum)h(for)f(the)h(whole)f(HDU)h(to)g
+(equal)g(zero.)47 b(If)31 b(the)i(\014le)f(has)g(b)s(een)f(mo)s
+(di\014ed)g(since)i(the)f(c)m(hec)m(ksums)0 1818 y(w)m(ere)39
+b(computed,)i(then)e(the)g(HDU)g(c)m(hec)m(ksum)h(will)f(usually)f(not)
+h(equal)h(zero.)66 b(These)39 b(c)m(hec)m(ksum)g(k)m(eyw)m(ord)0
+1931 y(con)m(v)m(en)m(tions)34 b(are)f(based)f(on)g(a)g(pap)s(er)f(b)m
+(y)h(Rob)g(Seaman)g(published)f(in)h(the)g(pro)s(ceedings)g(of)g(the)h
+(AD)m(ASS)f(IV)0 2044 y(conference)h(in)e(Baltimore)j(in)d(No)m(v)m(em)
+m(b)s(er)i(1994)h(and)d(a)h(later)h(revision)f(in)f(June)g(1995.)47
+b(See)32 b(App)s(endix)e(B)i(for)0 2157 y(the)f(de\014nition)f(of)g
+(the)h(parameters)f(used)g(in)g(these)h(routines.)0 2407
+y Fi(1)81 b Fj(Compute)33 b(and)g(write)h(the)g(D)m(A)-8
+b(T)g(ASUM)35 b(and)e(CHECKSUM)g(k)m(eyw)m(ord)h(v)-5
+b(alues)34 b(for)f(the)h(CHDU)g(in)m(to)h(the)227 2520
+y(curren)m(t)d(header.)46 b(If)32 b(the)g(k)m(eyw)m(ords)h(already)g
+(exist,)g(their)g(v)-5 b(alues)32 b(will)h(b)s(e)e(up)s(dated)g(only)h
+(if)h(necessary)227 2633 y(\(i.e.,)f(if)f(the)f(\014le)h(has)f(b)s(een)
+f(mo)s(di\014ed)h(since)g(the)h(original)h(k)m(eyw)m(ord)e(v)-5
+b(alues)31 b(w)m(ere)g(computed\).)95 2883 y Fe(int)47
+b(fits_write_chksum)c(/)48 b(ffpcks)286 2996 y(\(fitsfile)e(*fptr,)g(>)
+h(int)g(*status\))0 3246 y Fi(2)81 b Fj(Up)s(date)28
+b(the)h(CHECKSUM)e(k)m(eyw)m(ord)i(v)-5 b(alue)29 b(in)f(the)h(CHDU,)g
+(assuming)f(that)h(the)f(D)m(A)-8 b(T)g(ASUM)30 b(k)m(eyw)m(ord)227
+3359 y(exists)36 b(and)f(already)h(has)f(the)h(correct)g(v)-5
+b(alue.)56 b(This)35 b(routine)g(calculates)j(the)e(new)f(c)m(hec)m
+(ksum)h(for)f(the)227 3471 y(curren)m(t)40 b(header)g(unit,)j(adds)c
+(it)i(to)g(the)f(data)h(unit)f(c)m(hec)m(ksum,)k(enco)s(des)c(the)g(v)
+-5 b(alue)41 b(in)m(to)g(an)f(ASCI)s(I)227 3584 y(string,)31
+b(and)f(writes)g(the)h(string)f(to)h(the)g(CHECKSUM)e(k)m(eyw)m(ord.)95
+3834 y Fe(int)47 b(fits_update_chksum)c(/)48 b(ffupck)286
+3947 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*status\))0 4197
+y Fi(3)81 b Fj(V)-8 b(erify)35 b(the)f(CHDU)h(b)m(y)g(computing)f(the)h
+(c)m(hec)m(ksums)g(and)f(comparing)h(them)f(with)g(the)h(k)m(eyw)m
+(ords.)53 b(The)227 4310 y(data)34 b(unit)f(is)g(v)m(eri\014ed)g
+(correctly)h(if)f(the)h(computed)f(c)m(hec)m(ksum)g(equals)h(the)f(v)-5
+b(alue)34 b(of)f(the)g(D)m(A)-8 b(T)g(ASUM)227 4423 y(k)m(eyw)m(ord.)64
+b(The)37 b(c)m(hec)m(ksum)i(for)f(the)g(en)m(tire)g(HDU)h(\(header)f
+(plus)f(data)i(unit\))e(is)h(correct)h(if)f(it)h(equals)227
+4536 y(zero.)47 b(The)32 b(output)f(D)m(A)-8 b(T)g(A)m(OK)34
+b(and)d(HDUOK)i(parameters)f(in)g(this)g(routine)g(are)g(in)m(tegers)i
+(whic)m(h)e(will)227 4649 y(ha)m(v)m(e)k(a)f(v)-5 b(alue)35
+b(=)f(1)h(if)f(the)h(data)g(or)f(HDU)h(is)g(v)m(eri\014ed)f(correctly)
+-8 b(,)38 b(a)d(v)-5 b(alue)35 b(=)f(0)h(if)f(the)h(D)m(A)-8
+b(T)g(ASUM)36 b(or)227 4762 y(CHECKSUM)29 b(k)m(eyw)m(ord)g(is)h(not)f
+(presen)m(t,)h(or)f(v)-5 b(alue)30 b(=)f(-1)h(if)f(the)h(computed)f(c)m
+(hec)m(ksum)h(is)f(not)h(correct.)95 5125 y Fe(int)47
+b(fits_verify_chksum)c(/)48 b(ffvcks)286 5238 y(\(fitsfile)e(*fptr,)g
+(>)h(int)g(*dataok,)f(int)h(*hduok,)e(int)i(*status\))0
+5488 y Fi(4)81 b Fj(Compute)40 b(and)g(return)g(the)h(c)m(hec)m(ksum)g
+(v)-5 b(alues)41 b(for)g(the)g(CHDU)g(without)g(creating)h(or)f(mo)s
+(difying)f(the)227 5601 y(CHECKSUM)33 b(and)h(D)m(A)-8
+b(T)g(ASUM)35 b(k)m(eyw)m(ords.)52 b(This)33 b(routine)h(is)g(used)f
+(in)m(ternally)i(b)m(y)f(\013v)m(c)m(ks,)i(but)d(ma)m(y)227
+5714 y(b)s(e)d(useful)g(in)g(other)g(situations)h(as)g(w)m(ell.)p
+eop end
+%%Page: 61 69
+TeXDict begin 61 68 bop 0 299 a Fh(5.8.)72 b(UTILITY)30
+b(R)m(OUTINES)2693 b Fj(61)95 555 y Fe(int)47 b(fits_get_chksum/)d
+(/ffgcks)286 668 y(\(fitsfile)i(*fptr,)g(>)h(unsigned)f(long)g
+(*datasum,)g(unsigned)f(long)i(*hdusum,)334 781 y(int)g(*status\))0
+1022 y Fi(5)81 b Fj(Enco)s(de)23 b(a)h(c)m(hec)m(ksum)g(v)-5
+b(alue)24 b(in)m(to)g(a)g(16-c)m(haracter)j(string.)38
+b(If)23 b(complm)h(is)f(non-zero)i(\(true\))f(then)f(the)h(32-bit)227
+1135 y(sum)30 b(v)-5 b(alue)31 b(will)f(b)s(e)g(complemen)m(ted)h(b)s
+(efore)f(enco)s(ding.)95 1376 y Fe(int)47 b(fits_encode_chksum)c(/)48
+b(ffesum)286 1489 y(\(unsigned)e(long)g(sum,)h(int)g(complm,)f(>)h
+(char)g(*ascii\);)0 1730 y Fi(6)81 b Fj(Deco)s(de)24
+b(a)f(16-c)m(haracter)j(c)m(hec)m(ksum)e(string)f(in)m(to)g(a)h
+(unsigned)e(long)h(v)-5 b(alue.)39 b(If)23 b(is)g(non-zero)g(\(true\).)
+39 b(then)23 b(the)227 1842 y(32-bit)33 b(sum)d(v)-5
+b(alue)32 b(will)g(b)s(e)f(complemen)m(ted)h(after)g(deco)s(ding.)44
+b(The)31 b(c)m(hec)m(ksum)h(v)-5 b(alue)32 b(is)g(also)g(returned)227
+1955 y(as)f(the)f(v)-5 b(alue)31 b(of)g(the)f(function.)95
+2196 y Fe(unsigned)46 b(long)h(fits_decode_chksum)42
+b(/)48 b(ffdsum)525 2309 y(\(char)e(*ascii,)g(int)h(complm,)f(>)h
+(unsigned)f(long)h(*sum\);)0 2597 y Fd(5.8.2)112 b(Date)38
+b(and)g(Time)g(Utilit)m(y)f(Routines)0 2816 y Fj(The)29
+b(follo)m(wing)i(routines)f(help)f(to)i(construct)f(or)f(parse)h(the)g
+(FITS)f(date/time)i(strings.)41 b(Starting)30 b(in)f(the)h(y)m(ear)0
+2929 y(2000,)k(the)d(FITS)g(D)m(A)-8 b(TE)32 b(k)m(eyw)m(ord)g(v)-5
+b(alues)31 b(\(and)h(the)f(v)-5 b(alues)32 b(of)f(other)h(`D)m(A)-8
+b(TE-')33 b(k)m(eyw)m(ords\))f(m)m(ust)f(ha)m(v)m(e)i(the)0
+3042 y(form)j('YYYY-MM-DD')k(\(date)e(only\))f(or)g
+('YYYY-MM-DDThh:mm:ss.ddd...')61 b(\(date)38 b(and)e(time\))h(where)0
+3154 y(the)30 b(n)m(um)m(b)s(er)f(of)i(decimal)g(places)g(in)f(the)g
+(seconds)g(v)-5 b(alue)31 b(is)f(optional.)42 b(These)30
+b(times)h(are)f(in)g(UTC.)g(The)g(older)0 3267 y('dd/mm/yy')d(date)g
+(format)g(ma)m(y)h(not)f(b)s(e)f(used)g(for)h(dates)h(after)f(01)h(Jan)
+m(uary)e(2000.)42 b(See)27 b(App)s(endix)e(B)i(for)g(the)0
+3380 y(de\014nition)j(of)h(the)f(parameters)h(used)e(in)h(these)h
+(routines.)0 3621 y Fi(1)81 b Fj(Get)23 b(the)f(curren)m(t)f(system)i
+(date.)38 b(C)22 b(already)g(pro)m(vides)g(standard)f(library)h
+(routines)g(for)f(getting)j(the)e(curren)m(t)227 3734
+y(date)k(and)e(time,)j(but)d(this)h(routine)g(is)g(pro)m(vided)g(for)f
+(compatibilit)m(y)k(with)c(the)h(F)-8 b(ortran)26 b(FITSIO)e(library)-8
+b(.)227 3847 y(The)30 b(returned)f(y)m(ear)j(has)e(4)g(digits)h
+(\(1999,)i(2000,)g(etc.\))95 4088 y Fe(int)47 b
+(fits_get_system_date/ffgsd)o(t)286 4201 y(\()h(>)f(int)g(*day,)g(int)f
+(*month,)g(int)h(*year,)f(int)h(*status)f(\))0 4442 y
+Fi(2)81 b Fj(Get)34 b(the)g(curren)m(t)g(system)f(date)i(and)e(time)h
+(string)g(\('YYYY-MM-DDThh:mm:ss'\).)53 b(The)33 b(time)i(will)f(b)s(e)
+227 4555 y(in)26 b(UTC/GMT)g(if)g(a)m(v)-5 b(ailable,)29
+b(as)e(indicated)f(b)m(y)g(a)g(returned)f(timeref)h(v)-5
+b(alue)27 b(=)e(0.)40 b(If)26 b(the)g(returned)e(v)-5
+b(alue)227 4668 y(of)31 b(timeref)g(=)g(1)g(then)f(this)h(indicates)g
+(that)h(it)f(w)m(as)g(not)g(p)s(ossible)f(to)h(con)m(v)m(ert)i(the)d
+(lo)s(cal)i(time)g(to)f(UTC,)227 4780 y(and)f(th)m(us)g(the)h(lo)s(cal)
+g(time)g(w)m(as)g(returned.)95 5021 y Fe(int)47 b
+(fits_get_system_time/ffgst)o(m)286 5134 y(\(>)h(char)e(*datestr,)f
+(int)95 b(*timeref,)45 b(int)i(*status\))0 5375 y Fi(3)81
+b Fj(Construct)26 b(a)i(date)g(string)f(from)g(the)g(input)f(date)i(v)
+-5 b(alues.)40 b(If)27 b(the)g(y)m(ear)h(is)g(b)s(et)m(w)m(een)f(1900)i
+(and)e(1998,)j(inclu-)227 5488 y(siv)m(e,)38 b(then)c(the)i(returned)d
+(date)j(string)f(will)g(ha)m(v)m(e)i(the)e(old)g(FITS)f(format)i
+(\('dd/mm/yy'\),)h(otherwise)227 5601 y(the)32 b(date)f(string)g(will)h
+(ha)m(v)m(e)g(the)g(new)e(FITS)h(format)g(\('YYYY-MM-DD'\).)36
+b(Use)31 b(\014ts)p 3229 5601 28 4 v 33 w(time2str)h(instead)227
+5714 y(to)f(alw)m(a)m(ys)h(return)e(a)g(date)h(string)g(using)f(the)g
+(new)g(FITS)g(format.)p eop end
+%%Page: 62 70
+TeXDict begin 62 69 bop 0 299 a Fj(62)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_date2str/ffdt2s)286
+668 y(\(int)g(year,)f(int)h(month,)f(int)h(day,)g(>)g(char)g(*datestr,)
+e(int)i(*status\))0 928 y Fi(4)81 b Fj(Construct)34 b(a)i(new-format)f
+(date)h(+)f(time)h(string)f(\('YYYY-MM-DDThh:mm:ss.ddd...'\).)57
+b(If)34 b(the)i(y)m(ear,)227 1041 y(mon)m(th,)d(and)e(da)m(y)h(v)-5
+b(alues)32 b(all)h(=)e(0)h(then)g(only)g(the)g(time)g(is)g(enco)s(ded)f
+(with)h(format)g('hh:mm:ss.ddd...'.)227 1154 y(The)j(decimals)h
+(parameter)g(sp)s(eci\014es)e(ho)m(w)i(man)m(y)f(decimal)h(places)g(of)
+f(fractional)i(seconds)e(to)h(include)227 1266 y(in)30
+b(the)h(string.)41 b(If)29 b(`decimals')j(is)f(negativ)m(e,)h(then)f
+(only)f(the)h(date)g(will)f(b)s(e)g(return)f(\('YYYY-MM-DD'\).)95
+1526 y Fe(int)47 b(fits_time2str/fftm2s)286 1639 y(\(int)g(year,)f(int)
+h(month,)f(int)h(day,)g(int)g(hour,)f(int)h(minute,)f(double)g(second,)
+286 1752 y(int)h(decimals,)f(>)h(char)g(*datestr,)e(int)i(*status\))0
+2012 y Fi(5)81 b Fj(Return)44 b(the)g(date)i(as)f(read)f(from)h(the)g
+(input)e(string,)49 b(where)44 b(the)h(string)g(ma)m(y)g(b)s(e)f(in)h
+(either)g(the)g(old)227 2125 y(\('dd/mm/yy'\))29 b(or)f(new)f
+(\('YYYY-MM-DDThh:mm:ss')k(or)d('YYYY-MM-DD'\))j(FITS)d(format.)40
+b(Null)227 2237 y(p)s(oin)m(ters)31 b(ma)m(y)f(b)s(e)g(supplied)f(for)h
+(an)m(y)h(un)m(w)m(an)m(ted)g(output)f(date)h(parameters.)95
+2497 y Fe(int)47 b(fits_str2date/ffs2dt)286 2610 y(\(char)g(*datestr,)e
+(>)i(int)g(*year,)f(int)h(*month,)f(int)h(*day,)f(int)h(*status\))0
+2870 y Fi(6)81 b Fj(Return)30 b(the)h(date)h(and)f(time)h(as)f(read)g
+(from)g(the)h(input)e(string,)h(where)g(the)h(string)f(ma)m(y)h(b)s(e)e
+(in)h(either)h(the)227 2983 y(old)d(or)f(new)g(FITS)g(format.)40
+b(The)28 b(returned)f(hours,)h(min)m(utes,)h(and)f(seconds)g(v)-5
+b(alues)29 b(will)f(b)s(e)g(set)h(to)g(zero)227 3095
+y(if)k(the)h(input)e(string)h(do)s(es)g(not)h(include)f(the)g(time)h
+(\('dd/mm/yy')f(or)h('YYYY-MM-DD'\))j(.)c(Similarly)-8
+b(,)227 3208 y(the)36 b(returned)e(y)m(ear,)j(mon)m(th,)g(and)d(date)i
+(v)-5 b(alues)36 b(will)f(b)s(e)g(set)h(to)g(zero)g(if)f(the)g(date)h
+(is)f(not)h(included)e(in)227 3321 y(the)29 b(input)f(string)h
+(\('hh:mm:ss.ddd...'\).)40 b(Null)29 b(p)s(oin)m(ters)f(ma)m(y)i(b)s(e)
+e(supplied)f(for)i(an)m(y)g(un)m(w)m(an)m(ted)g(output)227
+3434 y(date)i(and)f(time)h(parameters.)95 3694 y Fe(int)47
+b(fits_str2time/ffs2tm)286 3807 y(\(char)g(*datestr,)e(>)i(int)g
+(*year,)f(int)h(*month,)f(int)h(*day,)f(int)h(*hour,)286
+3920 y(int)g(*minute,)f(double)g(*second,)f(int)i(*status\))0
+4210 y Fd(5.8.3)112 b(General)39 b(Utilit)m(y)e(Routines)0
+4429 y Fj(The)30 b(follo)m(wing)i(utilit)m(y)f(routines)g(ma)m(y)g(b)s
+(e)e(useful)h(for)g(certain)h(applications.)0 4689 y
+Fi(1)81 b Fj(Return)30 b(the)h(revision)g(n)m(um)m(b)s(er)f(of)h(the)g
+(CFITSIO)f(library)-8 b(.)42 b(The)31 b(revision)g(n)m(um)m(b)s(er)f
+(will)h(b)s(e)f(incremen)m(ted)227 4802 y(with)g(eac)m(h)i(new)e
+(release)h(of)g(CFITSIO.)95 5061 y Fe(float)47 b(fits_get_version)c(/)
+48 b(ffvers)e(\()h(>)h(float)e(*version\))0 5321 y Fi(2)81
+b Fj(W)-8 b(rite)34 b(an)g(80-c)m(haracter)i(message)e(to)g(the)g
+(CFITSIO)e(error)h(stac)m(k.)51 b(Application)34 b(programs)f(should)g
+(not)227 5434 y(normally)e(write)f(to)i(the)e(stac)m(k,)i(but)e(there)g
+(ma)m(y)h(b)s(e)f(some)h(situations)g(where)f(this)g(is)h(desirable.)95
+5694 y Fe(void)47 b(fits_write_errmsg)c(/)48 b(ffpmsg)e(\(char)g
+(*err_msg\))p eop end
+%%Page: 63 71
+TeXDict begin 63 70 bop 0 299 a Fh(5.8.)72 b(UTILITY)30
+b(R)m(OUTINES)2693 b Fj(63)0 555 y Fi(3)81 b Fj(Con)m(v)m(ert)31
+b(a)g(c)m(haracter)h(string)e(to)h(upp)s(ercase)e(\(op)s(erates)j(in)e
+(place\).)95 817 y Fe(void)47 b(fits_uppercase)d(/)j(ffupch)g(\(char)f
+(*string\))0 1079 y Fi(4)81 b Fj(Compare)43 b(the)i(input)e(template)i
+(string)f(against)h(the)g(reference)f(string)g(to)h(see)g(if)f(they)g
+(matc)m(h.)82 b(The)227 1192 y(template)36 b(string)f(ma)m(y)g(con)m
+(tain)g(wildcard)f(c)m(haracters:)51 b('*')35 b(will)g(matc)m(h)g(an)m
+(y)g(sequence)g(of)f(c)m(haracters)227 1305 y(\(including)j(zero)h(c)m
+(haracters\))g(and)e(')10 b(?')60 b(will)38 b(matc)m(h)f(an)m(y)g
+(single)h(c)m(haracter)g(in)f(the)g(reference)g(string.)227
+1418 y(The)e('#')h(c)m(haracter)h(will)f(matc)m(h)g(an)m(y)g
+(consecutiv)m(e)h(string)f(of)f(decimal)i(digits)f(\(0)g(-)f(9\).)57
+b(If)35 b(casesen)h(=)227 1531 y(CASESEN)c(=)h(TR)m(UE)h(then)f(the)g
+(matc)m(h)i(will)e(b)s(e)g(case)h(sensitiv)m(e,)i(otherwise)e(the)f
+(case)i(of)e(the)h(letters)227 1644 y(will)g(b)s(e)f(ignored)h(if)g
+(casesen)g(=)g(CASEINSEN)e(=)h(F)-10 b(ALSE.)34 b(The)f(returned)f(MA)
+-8 b(TCH)34 b(parameter)h(will)227 1757 y(b)s(e)30 b(TR)m(UE)g(if)g
+(the)g(2)h(strings)f(matc)m(h,)h(and)f(EXA)m(CT)g(will)g(b)s(e)g(TR)m
+(UE)g(if)g(the)g(matc)m(h)h(is)f(exact)i(\(i.e.,)g(if)e(no)227
+1870 y(wildcard)k(c)m(haracters)i(w)m(ere)f(used)e(in)h(the)h(matc)m
+(h\).)53 b(Both)35 b(strings)g(m)m(ust)f(b)s(e)f(68)j(c)m(haracters)f
+(or)g(less)f(in)227 1983 y(length.)95 2245 y Fe(void)47
+b(fits_compare_str)c(/)48 b(ffcmps)334 2358 y(\(char)e(*templt,)g(char)
+h(*string,)e(int)i(casesen,)f(>)h(int)g(*match,)f(int)h(*exact\))0
+2620 y Fi(5)81 b Fj(Split)30 b(a)i(string)f(con)m(taining)h(a)g(list)f
+(of)g(names)g(\(t)m(ypically)j(\014le)d(names)g(or)g(column)f(names\))i
+(in)m(to)g(individual)227 2733 y(name)23 b(tok)m(ens)g(b)m(y)g(a)g
+(sequence)g(of)g(calls)g(to)h(\014ts)p 1814 2733 28 4
+v 32 w(split)p 2018 2733 V 33 w(names.)38 b(The)22 b(names)h(in)f(the)h
+(list)g(m)m(ust)f(b)s(e)g(delimited)227 2846 y(b)m(y)45
+b(a)f(comma)i(and/or)e(spaces.)83 b(This)44 b(routine)g(ignores)h
+(spaces)g(and)f(commas)h(that)g(o)s(ccur)f(within)227
+2959 y(paren)m(theses,)36 b(brac)m(k)m(ets,)h(or)e(curly)f(brac)m(k)m
+(ets.)54 b(It)35 b(also)g(strips)f(an)m(y)h(leading)g(and)f(trailing)h
+(blanks)f(from)227 3072 y(the)d(returned)e(name.)227
+3223 y(This)h(routine)g(is)h(similar)f(to)h(the)g(ANSI)f(C)g('strtok')h
+(function:)227 3374 y(The)37 b(\014rst)f(call)i(to)g(\014ts)p
+1033 3374 V 32 w(split)p 1237 3374 V 33 w(names)f(has)g(a)g(non-n)m
+(ull)f(input)g(string.)61 b(It)37 b(\014nds)e(the)i(\014rst)f(name)h
+(in)g(the)227 3487 y(string)26 b(and)f(terminates)h(it)h(b)m(y)e(o)m(v)
+m(erwriting)i(the)f(next)g(c)m(haracter)h(of)f(the)g(string)f(with)h(a)
+g(n)m(ull)f(terminator)227 3600 y(and)31 b(returns)g(a)h(p)s(oin)m(ter)
+f(to)i(the)e(name.)45 b(Eac)m(h)32 b(subsequen)m(t)f(call,)j(indicated)
+e(b)m(y)f(a)h(NULL)g(v)-5 b(alue)32 b(of)g(the)227 3713
+y(input)f(string,)i(returns)e(the)h(next)h(name,)f(searc)m(hing)h(from)
+f(just)g(past)g(the)g(end)f(of)i(the)f(previous)g(name.)227
+3826 y(It)f(returns)e(NULL)h(when)g(no)g(further)f(names)h(are)h
+(found.)143 4088 y Fe(char)47 b(*fits_split_names\(char)42
+b(*namelist\))0 4350 y Fj(The)30 b(follo)m(wing)i(example)f(sho)m(ws)f
+(ho)m(w)g(a)h(string)f(w)m(ould)h(b)s(e)e(split)i(in)m(to)g(3)g(names:)
+191 4612 y Fe(myfile[1][bin)44 b(\(x,y\)=4],)h(file2.fits)93
+b(file3.fits)191 4725 y(^^^^^^^^^^^^^^^^^^^^^^)c(^^^^^^^^^^)k
+(^^^^^^^^^^)382 4838 y(1st)47 b(name)619 b(2nd)47 b(name)190
+b(3rd)47 b(name)0 5100 y Fi(6)81 b Fj(T)-8 b(est)34 b(that)g(the)g(k)m
+(eyw)m(ord)g(name)f(con)m(tains)i(only)e(legal)j(c)m(haracters)f
+(\(A-Z,0-9,)h(h)m(yphen,)d(and)g(underscore\))227 5213
+y(or)e(that)g(the)f(k)m(eyw)m(ord)h(record)f(con)m(tains)i(only)e
+(legal)i(prin)m(table)f(ASCI)s(I)e(c)m(haracters)95 5475
+y Fe(int)47 b(fits_test_keyword)c(/)48 b(fftkey)e(\(char)g(*keyname,)g
+(>)h(int)g(*status\))95 5701 y(int)g(fits_test_record)d(/)j(fftrec)f
+(\(char)h(*card,)f(>)h(int)g(*status\))p eop end
+%%Page: 64 72
+TeXDict begin 64 71 bop 0 299 a Fj(64)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Fi(7)81 b Fj(T)-8 b(est)25 b(whether)f(the)h
+(curren)m(t)f(header)h(con)m(tains)g(an)m(y)g(NULL)g(\(ASCI)s(I)e(0\))j
+(c)m(haracters.)40 b(These)24 b(c)m(haracters)j(are)227
+668 y(illegal)37 b(in)d(the)h(header,)g(but)f(they)g(will)h(go)g
+(undetected)g(b)m(y)f(most)h(of)g(the)f(CFITSIO)f(k)m(eyw)m(ord)i
+(header)227 781 y(routines,)29 b(b)s(ecause)f(the)h(n)m(ull)f(is)g(in)m
+(terpreted)g(as)h(the)f(normal)g(end-of-string)h(terminator.)41
+b(This)27 b(routine)227 894 y(returns)h(the)g(p)s(osition)h(of)g(the)g
+(\014rst)f(n)m(ull)g(c)m(haracter)i(in)f(the)f(header,)h(or)g(zero)g
+(if)g(there)g(are)g(no)f(n)m(ulls.)40 b(F)-8 b(or)227
+1007 y(example)37 b(a)f(returned)f(v)-5 b(alue)37 b(of)f(110)h(w)m
+(ould)f(indicate)h(that)g(the)f(\014rst)f(NULL)h(is)g(lo)s(cated)h(in)f
+(the)g(30th)227 1120 y(c)m(haracter)28 b(of)f(the)g(second)f(k)m(eyw)m
+(ord)h(in)f(the)h(header)f(\(recall)i(that)f(eac)m(h)h(header)e(record)
+h(is)f(80)h(c)m(haracters)227 1233 y(long\).)45 b(Note)33
+b(that)f(this)g(is)f(one)h(of)g(the)g(few)f(CFITSIO)f(routines)h(in)h
+(whic)m(h)f(the)h(returned)e(v)-5 b(alue)32 b(is)g(not)227
+1346 y(necessarily)g(equal)e(to)i(the)e(status)h(v)-5
+b(alue\).)95 1597 y Fe(int)47 b(fits_null_check)d(/)j(ffnchk)g(\(char)f
+(*card,)g(>)h(int)g(*status\))0 1849 y Fi(8)81 b Fj(P)m(arse)25
+b(a)g(header)g(k)m(eyw)m(ord)g(record)g(and)f(return)g(the)h(name)g(of)
+g(the)g(k)m(eyw)m(ord,)i(and)d(the)h(length)h(of)f(the)g(name.)227
+1962 y(The)34 b(k)m(eyw)m(ord)h(name)f(normally)h(o)s(ccupies)f(the)h
+(\014rst)e(8)i(c)m(haracters)g(of)g(the)f(record,)i(except)f(under)e
+(the)227 2075 y(HIERAR)m(CH)e(con)m(v)m(en)m(tion)h(where)e(the)h(name)
+f(can)h(b)s(e)f(up)f(to)i(70)g(c)m(haracters)h(in)e(length.)95
+2326 y Fe(int)47 b(fits_get_keyname)d(/)j(ffgknm)286
+2439 y(\(char)g(*card,)f(>)h(char)g(*keyname,)e(int)i(*keylength,)e
+(int)i(*status\))0 2691 y Fi(9)81 b Fj(P)m(arse)29 b(a)h(header)f(k)m
+(eyw)m(ord)h(record,)f(returning)g(the)g(v)-5 b(alue)30
+b(\(as)g(a)f(literal)i(c)m(haracter)g(string\))e(and)g(commen)m(t)227
+2804 y(strings.)40 b(If)27 b(the)g(k)m(eyw)m(ord)h(has)f(no)g(v)-5
+b(alue)28 b(\(columns)f(9-10)i(not)f(equal)f(to)h('=)g('\),)g(then)f(a)
+h(n)m(ull)f(v)-5 b(alue)28 b(string)227 2916 y(is)j(returned)e(and)h
+(the)g(commen)m(t)i(string)e(is)g(set)h(equal)g(to)g(column)f(9)h(-)g
+(80)g(of)g(the)f(input)g(string.)95 3168 y Fe(int)47
+b(fits_parse_value)d(/)j(ffpsvc)286 3281 y(\(char)g(*card,)f(>)h(char)g
+(*value,)f(char)g(*comment,)g(int)h(*status\))0 3533
+y Fi(10)f Fj(Construct)26 b(an)h(arra)m(y)g(indexed)f(k)m(eyw)m(ord)h
+(name)f(\(R)m(OOT)g(+)h(nnn\).)38 b(This)26 b(routine)g(app)s(ends)f
+(the)i(sequence)227 3645 y(n)m(um)m(b)s(er)i(to)i(the)g(ro)s(ot)g
+(string)f(to)h(create)h(a)f(k)m(eyw)m(ord)g(name)f(\(e.g.,)i('NAXIS')f
+(+)f(2)h(=)f('NAXIS2'\))95 3897 y Fe(int)47 b(fits_make_keyn)d(/)k
+(ffkeyn)286 4010 y(\(char)f(*keyroot,)e(int)i(value,)f(>)h(char)g
+(*keyname,)e(int)i(*status\))0 4261 y Fi(11)f Fj(Construct)41
+b(a)h(sequence)f(k)m(eyw)m(ord)h(name)g(\(n)f(+)g(R)m(OOT\).)g(This)g
+(routine)g(concatenates)j(the)e(sequence)227 4374 y(n)m(um)m(b)s(er)20
+b(to)j(the)e(fron)m(t)h(of)g(the)f(ro)s(ot)h(string)g(to)g(create)h(a)f
+(k)m(eyw)m(ord)g(name)g(\(e.g.,)j(1)d(+)f('CTYP')g(=)g('1CTYP'\))95
+4739 y Fe(int)47 b(fits_make_nkey)d(/)k(ffnkey)286 4852
+y(\(int)f(value,)f(char)h(*keyroot,)e(>)i(char)g(*keyname,)e(int)i
+(*status\))0 5103 y Fi(12)f Fj(Determine)41 b(the)g(data)f(t)m(yp)s(e)h
+(of)f(a)h(k)m(eyw)m(ord)f(v)-5 b(alue)41 b(string.)70
+b(This)39 b(routine)i(parses)e(the)i(k)m(eyw)m(ord)f(v)-5
+b(alue)227 5216 y(string)28 b(to)h(determine)f(its)g(data)h(t)m(yp)s
+(e.)40 b(Returns)27 b('C',)h('L',)h('I',)f('F')h(or)f('X',)g(for)g(c)m
+(haracter)i(string,)e(logical,)227 5329 y(in)m(teger,)k(\015oating)g(p)
+s(oin)m(t,)e(or)h(complex,)g(resp)s(ectiv)m(ely)-8 b(.)95
+5581 y Fe(int)47 b(fits_get_keytype)d(/)j(ffdtyp)286
+5694 y(\(char)g(*value,)f(>)h(char)g(*dtype,)e(int)i(*status\))p
+eop end
+%%Page: 65 73
+TeXDict begin 65 72 bop 0 299 a Fh(5.8.)72 b(UTILITY)30
+b(R)m(OUTINES)2693 b Fj(65)0 555 y Fi(13)46 b Fj(Determine)39
+b(the)f(in)m(teger)h(data)g(t)m(yp)s(e)f(of)g(an)g(in)m(teger)h(k)m
+(eyw)m(ord)f(v)-5 b(alue)39 b(string.)63 b(The)37 b(returned)g(datat)m
+(yp)s(e)227 668 y(v)-5 b(alue)36 b(is)f(the)g(minim)m(um)f(in)m(teger)i
+(datat)m(yp)s(e)g(\(starting)g(from)f(top)g(of)g(the)g(follo)m(wing)i
+(list)e(and)g(w)m(orking)227 781 y(do)m(wn\))c(required)e(to)i(store)g
+(the)g(in)m(teger)h(v)-5 b(alue:)191 1045 y Fe(Data)47
+b(Type)285 b(Range)239 1158 y(TSBYTE:)236 b(-128)47 b(to)g(127)239
+1271 y(TBYTE:)332 b(128)47 b(to)g(255)239 1384 y(TSHORT:)236
+b(-32768)46 b(to)i(32767)239 1497 y(TUSHORT:)236 b(32768)46
+b(to)i(65535)239 1610 y(TINT)380 b(-2147483648)45 b(to)i(2147483647)239
+1722 y(TUINT)380 b(2147483648)45 b(to)i(4294967295)239
+1835 y(TLONGLONG)140 b(-9223372036854775808)43 b(to)k
+(9223372036854775807)80 2099 y Fj(The)30 b(*neg)h(parameter)g(returns)e
+(1)i(if)f(the)h(input)e(v)-5 b(alue)31 b(is)g(negativ)m(e)h(and)e
+(returns)f(0)i(if)f(it)h(is)g(non-negativ)m(e.)95 2363
+y Fe(int)47 b(fits_get_inttype)d(/)j(ffinttyp)286 2476
+y(\(char)g(*value,)f(>)h(int)g(*datatype,)e(int)i(*neg,)f(int)h
+(*status\))0 2740 y Fi(14)f Fj(Return)35 b(the)g(class)h(of)g(an)f
+(input)g(header)g(record.)56 b(The)35 b(record)g(is)g(classi\014ed)h
+(in)m(to)h(one)e(of)h(the)f(follo)m(wing)227 2853 y(categories)d(\(the)
+e(class)g(v)-5 b(alues)30 b(are)f(de\014ned)f(in)h(\014tsio.h\).)41
+b(Note)31 b(that)e(this)h(is)f(one)h(of)f(the)g(few)g(CFITSIO)227
+2966 y(routines)i(that)f(do)s(es)h(not)f(return)f(a)i(status)g(v)-5
+b(alue.)334 3230 y Fe(Class)94 b(Value)619 b(Keywords)95
+3343 y(TYP_STRUC_KEY)92 b(10)j(SIMPLE,)46 b(BITPIX,)g(NAXIS,)g(NAXISn,)
+g(EXTEND,)g(BLOCKED,)1002 3456 y(GROUPS,)g(PCOUNT,)g(GCOUNT,)g(END)1002
+3569 y(XTENSION,)g(TFIELDS,)f(TTYPEn,)h(TBCOLn,)g(TFORMn,)g(THEAP,)1002
+3681 y(and)h(the)g(first)f(4)i(COMMENT)e(keywords)f(in)i(the)g(primary)
+f(array)1002 3794 y(that)h(define)f(the)h(FITS)g(format.)95
+3907 y(TYP_CMPRS_KEY)92 b(20)j(The)47 b(experimental)e(keywords)g(used)
+i(in)g(the)g(compressed)1002 4020 y(image)g(format)f(ZIMAGE,)g
+(ZCMPTYPE,)f(ZNAMEn,)h(ZVALn,)1002 4133 y(ZTILEn,)g(ZBITPIX,)g
+(ZNAXISn,)f(ZSCALE,)h(ZZERO,)g(ZBLANK)95 4246 y(TYP_SCAL_KEY)140
+b(30)95 b(BSCALE,)46 b(BZERO,)g(TSCALn,)g(TZEROn)95 4359
+y(TYP_NULL_KEY)140 b(40)95 b(BLANK,)46 b(TNULLn)95 4472
+y(TYP_DIM_KEY)188 b(50)95 b(TDIMn)95 4585 y(TYP_RANG_KEY)140
+b(60)95 b(TLMINn,)46 b(TLMAXn,)g(TDMINn,)g(TDMAXn,)g(DATAMIN,)f
+(DATAMAX)95 4698 y(TYP_UNIT_KEY)140 b(70)95 b(BUNIT,)46
+b(TUNITn)95 4811 y(TYP_DISP_KEY)140 b(80)95 b(TDISPn)95
+4924 y(TYP_HDUID_KEY)d(90)j(EXTNAME,)46 b(EXTVER,)g(EXTLEVEL,)f
+(HDUNAME,)g(HDUVER,)h(HDULEVEL)95 5036 y(TYP_CKSUM_KEY)f(100)94
+b(CHECKSUM,)46 b(DATASUM)95 5149 y(TYP_WCS_KEY)141 b(110)94
+b(WCS)47 b(keywords)f(defined)g(in)h(the)g(the)g(WCS)f(papers,)g
+(including:)1002 5262 y(CTYPEn,)g(CUNITn,)g(CRVALn,)g(CRPIXn,)g
+(CROTAn,)f(CDELTn)1002 5375 y(CDj_is,)h(PVj_ms,)g(LONPOLEs,)f(LATPOLEs)
+1002 5488 y(TCTYPn,)h(TCTYns,)g(TCUNIn,)g(TCUNns,)g(TCRVLn,)f(TCRVns,)h
+(TCRPXn,)1002 5601 y(TCRPks,)g(TCDn_k,)g(TCn_ks,)g(TPVn_m,)g(TPn_ms,)f
+(TCDLTn,)h(TCROTn)1002 5714 y(jCTYPn,)g(jCTYns,)g(jCUNIn,)g(jCUNns,)g
+(jCRVLn,)f(jCRVns,)h(iCRPXn,)p eop end
+%%Page: 66 74
+TeXDict begin 66 73 bop 0 299 a Fj(66)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)1002 555 y Fe(iCRPns,)46 b(jiCDn,)94 b(jiCDns,)46
+b(jPVn_m,)g(jPn_ms,)f(jCDLTn,)h(jCROTn)1002 668 y(\(i,j,m,n)g(are)h
+(integers,)e(s)i(is)h(any)f(letter\))95 781 y(TYP_REFSYS_KEY)d(120)j
+(EQUINOXs,)f(EPOCH,)g(MJD-OBSs,)f(RADECSYS,)g(RADESYSs,)g(DATE-OBS)95
+894 y(TYP_COMM_KEY)140 b(130)47 b(COMMENT,)f(HISTORY,)f(\(blank)h
+(keyword\))95 1007 y(TYP_CONT_KEY)140 b(140)47 b(CONTINUE)95
+1120 y(TYP_USER_KEY)140 b(150)47 b(all)g(other)g(keywords)95
+1346 y(int)g(fits_get_keyclass)c(/)48 b(ffgkcl)e(\(char)g(*card\))0
+1628 y Fi(15)g Fj(P)m(arse)28 b(the)g('TF)m(ORM')g(binary)f(table)h
+(column)g(format)f(string.)40 b(This)27 b(routine)g(parses)g(the)h
+(input)f(TF)m(ORM)227 1740 y(c)m(haracter)38 b(string)d(and)g(returns)g
+(the)g(in)m(teger)i(data)g(t)m(yp)s(e)f(co)s(de,)h(the)f(rep)s(eat)g
+(coun)m(t)g(of)g(the)f(\014eld,)i(and,)227 1853 y(in)e(the)f(case)i(of)
+f(c)m(haracter)h(string)f(\014elds,)g(the)g(length)g(of)g(the)g(unit)f
+(string.)54 b(See)34 b(App)s(endix)f(B)i(for)g(the)227
+1966 y(allo)m(w)m(ed)41 b(v)-5 b(alues)38 b(for)h(the)f(returned)g(t)m
+(yp)s(eco)s(de)h(parameter.)65 b(A)39 b(n)m(ull)f(p)s(oin)m(ter)h(ma)m
+(y)g(b)s(e)f(giv)m(en)h(for)g(an)m(y)227 2079 y(output)30
+b(parameters)h(that)g(are)g(not)f(needed.)143 2361 y
+Fe(int)47 b(fits_binary_tform)c(/)48 b(ffbnfm)334 2474
+y(\(char)e(*tform,)g(>)i(int)f(*typecode,)e(long)h(*repeat,)g(long)g
+(*width,)382 2587 y(int)h(*status\))143 2813 y(int)g
+(fits_binary_tformll)c(/)k(ffbnfmll)334 2926 y(\(char)f(*tform,)g(>)i
+(int)f(*typecode,)e(LONGLONG)g(*repeat,)h(long)g(*width,)382
+3039 y(int)h(*status\))0 3321 y Fi(16)f Fj(P)m(arse)38
+b(the)f('TF)m(ORM')h(k)m(eyw)m(ord)g(v)-5 b(alue)37 b(that)h(de\014nes)
+e(the)h(column)g(format)h(in)e(an)h(ASCI)s(I)f(table.)62
+b(This)227 3434 y(routine)29 b(parses)g(the)g(input)f(TF)m(ORM)h(c)m
+(haracter)h(string)f(and)g(returns)e(the)i(data)h(t)m(yp)s(e)f(co)s
+(de,)h(the)f(width)227 3546 y(of)f(the)f(column,)h(and)f(\(if)h(it)g
+(is)f(a)h(\015oating)g(p)s(oin)m(t)g(column\))f(the)h(n)m(um)m(b)s(er)e
+(of)h(decimal)i(places)f(to)g(the)f(righ)m(t)227 3659
+y(of)39 b(the)f(decimal)h(p)s(oin)m(t.)65 b(The)38 b(returned)f(data)i
+(t)m(yp)s(e)f(co)s(des)g(are)h(the)g(same)f(as)h(for)f(the)g(binary)g
+(table,)227 3772 y(with)26 b(the)h(follo)m(wing)h(additional)f(rules:)
+38 b(in)m(teger)28 b(columns)e(that)h(are)f(b)s(et)m(w)m(een)h(1)g(and)
+f(4)g(c)m(haracters)i(wide)227 3885 y(are)i(de\014ned)e(to)j(b)s(e)d
+(short)i(in)m(tegers)g(\(co)s(de)g(=)g(TSHOR)-8 b(T\).)29
+b(Wider)g(in)m(teger)i(columns)e(are)h(de\014ned)e(to)j(b)s(e)227
+3998 y(regular)39 b(in)m(tegers)g(\(co)s(de)g(=)f(TLONG\).)h(Similarly)
+-8 b(,)41 b(Fixed)e(decimal)g(p)s(oin)m(t)f(columns)g(\(with)h(TF)m
+(ORM)227 4111 y(=)c('Fw.d'\))g(are)h(de\014ned)d(to)j(b)s(e)e(single)i
+(precision)f(reals)h(\(co)s(de)f(=)g(TFLO)m(A)-8 b(T\))35
+b(if)g(w)g(is)g(b)s(et)m(w)m(een)g(1)h(and)227 4224 y(7)42
+b(c)m(haracters)h(wide,)h(inclusiv)m(e.)75 b(Wider)41
+b('F')h(columns)f(will)h(return)e(a)i(double)f(precision)h(data)g(co)s
+(de)227 4337 y(\(=)32 b(TDOUBLE\).)h('Ew.d')f(format)g(columns)g(will)g
+(ha)m(v)m(e)i(dataco)s(de)f(=)e(TFLO)m(A)-8 b(T,)33 b(and)e('Dw.d')i
+(format)227 4450 y(columns)45 b(will)h(ha)m(v)m(e)h(dataco)s(de)f(=)f
+(TDOUBLE.)g(A)h(n)m(ull)f(p)s(oin)m(ter)h(ma)m(y)f(b)s(e)g(giv)m(en)i
+(for)e(an)m(y)g(output)227 4563 y(parameters)31 b(that)g(are)g(not)f
+(needed.)95 4845 y Fe(int)47 b(fits_ascii_tform)d(/)j(ffasfm)286
+4958 y(\(char)g(*tform,)f(>)h(int)g(*typecode,)e(long)i(*width,)e(int)i
+(*decimals,)334 5070 y(int)g(*status\))0 5352 y Fi(17)f
+Fj(Calculate)32 b(the)f(starting)g(column)g(p)s(ositions)f(and)g(total)
+i(ASCI)s(I)d(table)j(width)d(based)i(on)f(the)h(input)e(arra)m(y)227
+5465 y(of)e(ASCI)s(I)e(table)i(TF)m(ORM)g(v)-5 b(alues.)40
+b(The)26 b(SP)-8 b(A)m(CE)27 b(input)e(parameter)i(de\014nes)f(ho)m(w)h
+(man)m(y)f(blank)h(spaces)227 5578 y(to)40 b(lea)m(v)m(e)i(b)s(et)m(w)m
+(een)e(eac)m(h)g(column)g(\(it)g(is)f(recommended)g(to)h(ha)m(v)m(e)h
+(one)e(space)h(b)s(et)m(w)m(een)g(columns)f(for)227 5691
+y(b)s(etter)31 b(h)m(uman)e(readabilit)m(y\).)p eop end
+%%Page: 67 75
+TeXDict begin 67 74 bop 0 299 a Fh(5.8.)72 b(UTILITY)30
+b(R)m(OUTINES)2693 b Fj(67)95 555 y Fe(int)47 b(fits_get_tbcol)d(/)k
+(ffgabc)286 668 y(\(int)f(tfields,)f(char)g(**tform,)g(int)h(space,)f
+(>)h(long)g(*rowlen,)334 781 y(long)g(*tbcol,)f(int)g(*status\))0
+1017 y Fi(18)g Fj(P)m(arse)27 b(a)g(template)h(header)e(record)g(and)g
+(return)g(a)g(formatted)h(80-c)m(haracter)j(string)c(suitable)h(for)f
+(app)s(end-)227 1129 y(ing)40 b(to)f(\(or)h(deleting)g(from\))f(a)g
+(FITS)g(header)g(\014le.)67 b(This)38 b(routine)h(is)g(useful)g(for)f
+(parsing)h(lines)g(from)227 1242 y(an)33 b(ASCI)s(I)f(template)i
+(\014le)f(and)g(reformatting)h(them)f(in)m(to)h(legal)h(FITS)d(header)h
+(records.)49 b(The)32 b(format-)227 1355 y(ted)i(string)g(ma)m(y)g
+(then)f(b)s(e)g(passed)h(to)g(the)g(\014ts)p 1880 1355
+28 4 v 32 w(write)p 2114 1355 V 33 w(record,)h(\013mcrd,)f(or)g(\014ts)
+p 3007 1355 V 32 w(delete)p 3270 1355 V 34 w(k)m(ey)h(routines)e(to)227
+1468 y(app)s(end)c(or)h(mo)s(dify)g(a)h(FITS)e(header)h(record.)95
+1704 y Fe(int)47 b(fits_parse_template)c(/)k(ffgthd)286
+1817 y(\(char)g(*templt,)e(>)j(char)e(*card,)g(int)h(*keytype,)f(int)h
+(*status\))0 2052 y Fj(The)31 b(input)g(templt)h(c)m(haracter)h(string)
+f(generally)h(should)d(con)m(tain)j(3)f(tok)m(ens:)44
+b(\(1\))33 b(the)f(KEYNAME,)g(\(2\))h(the)0 2165 y(V)-10
+b(ALUE,)37 b(and)f(\(3\))i(the)f(COMMENT)g(string.)59
+b(The)37 b(TEMPLA)-8 b(TE)36 b(string)h(m)m(ust)f(adhere)h(to)h(the)e
+(follo)m(wing)0 2278 y(format:)0 2514 y Fi(-)80 b Fj(The)32
+b(KEYNAME)h(tok)m(en)h(m)m(ust)f(b)s(egin)f(in)h(columns)f(1-8)i(and)e
+(b)s(e)g(a)h(maxim)m(um)g(of)g(8)g(c)m(haracters)h(long.)49
+b(A)227 2626 y(legal)30 b(FITS)e(k)m(eyw)m(ord)h(name)f(ma)m(y)h(only)f
+(con)m(tain)i(the)f(c)m(haracters)g(A-Z,)g(0-9,)h(and)e('-')h(\(min)m
+(us)f(sign\))h(and)227 2739 y(underscore.)40 b(This)27
+b(routine)i(will)g(automatically)i(con)m(v)m(ert)f(an)m(y)f(lo)m(w)m
+(ercase)i(c)m(haracters)f(to)g(upp)s(ercase)d(in)227
+2852 y(the)k(output)f(string.)42 b(If)30 b(the)h(\014rst)f(8)h(c)m
+(haracters)h(of)f(the)g(template)h(line)f(are)g(blank)f(then)h(the)g
+(remainder)227 2965 y(of)g(the)f(line)h(is)g(considered)f(to)h(b)s(e)f
+(a)g(FITS)g(commen)m(t)h(\(with)g(a)g(blank)f(k)m(eyw)m(ord)g(name\).)0
+3201 y Fi(-)80 b Fj(The)26 b(V)-10 b(ALUE)26 b(tok)m(en)h(m)m(ust)e(b)s
+(e)h(separated)g(from)f(the)i(KEYNAME)f(tok)m(en)h(b)m(y)f(one)g(or)g
+(more)g(spaces)g(and/or)227 3314 y(an)g('=')g(c)m(haracter.)41
+b(The)25 b(data)h(t)m(yp)s(e)g(of)g(the)g(V)-10 b(ALUE)26
+b(tok)m(en)g(\(n)m(umeric,)h(logical,)j(or)c(c)m(haracter)h(string\))f
+(is)227 3427 y(automatically)35 b(determined)c(and)h(the)g(output)f
+(CARD)h(string)g(is)g(formatted)g(accordingly)-8 b(.)47
+b(The)31 b(v)-5 b(alue)227 3539 y(tok)m(en)34 b(ma)m(y)f(b)s(e)f
+(forced)g(to)i(b)s(e)e(in)m(terpreted)g(as)h(a)g(string)g(\(e.g.)48
+b(if)33 b(it)g(is)f(a)h(string)g(of)f(n)m(umeric)h(digits\))g(b)m(y)227
+3652 y(enclosing)g(it)f(in)f(single)h(quotes.)45 b(If)31
+b(the)h(v)-5 b(alue)32 b(tok)m(en)g(is)g(a)g(c)m(haracter)h(string)e
+(that)i(con)m(tains)f(1)g(or)g(more)227 3765 y(em)m(b)s(edded)39
+b(blank)g(space)h(c)m(haracters)h(or)e(slash)h(\('/'\))h(c)m(haracters)
+g(then)e(the)g(en)m(tire)i(c)m(haracter)g(string)227
+3878 y(m)m(ust)31 b(b)s(e)e(enclosed)i(in)f(single)h(quotes.)0
+4114 y Fi(-)80 b Fj(The)28 b(COMMENT)g(tok)m(en)h(is)f(optional,)i(but)
+e(if)g(presen)m(t)g(m)m(ust)g(b)s(e)g(separated)g(from)g(the)h(V)-10
+b(ALUE)28 b(tok)m(en)h(b)m(y)227 4227 y(a)i(blank)f(space)h(or)f(a)h
+('/')g(c)m(haracter.)0 4462 y Fi(-)80 b Fj(One)29 b(exception)h(to)f
+(the)g(ab)s(o)m(v)m(e)i(rules)d(is)h(that)g(if)g(the)g(\014rst)g
+(non-blank)f(c)m(haracter)i(in)f(the)g(\014rst)f(8)h(c)m(haracters)227
+4575 y(of)24 b(the)h(template)g(string)f(is)g(a)g(min)m(us)g(sign)g
+(\('-'\))h(follo)m(w)m(ed)h(b)m(y)e(a)g(single)h(tok)m(en,)h(or)e(a)h
+(single)f(tok)m(en)h(follo)m(w)m(ed)227 4688 y(b)m(y)k(an)g(equal)h
+(sign,)g(then)f(it)g(is)h(in)m(terpreted)f(as)h(the)f(name)g(of)h(a)f
+(k)m(eyw)m(ord)h(whic)m(h)f(is)g(to)h(b)s(e)e(deleted)i(from)227
+4801 y(the)h(FITS)e(header.)0 5036 y Fi(-)80 b Fj(The)32
+b(second)g(exception)h(is)f(that)h(if)f(the)g(template)h(string)f
+(starts)h(with)e(a)i(min)m(us)e(sign)h(and)f(is)h(follo)m(w)m(ed)i(b)m
+(y)227 5149 y(2)f(tok)m(ens)g(\(without)g(an)f(equals)h(sign)g(b)s(et)m
+(w)m(een)g(them\))f(then)g(the)h(second)f(tok)m(en)i(is)e(in)m
+(terpreted)h(as)g(the)227 5262 y(new)f(name)h(for)f(the)h(k)m(eyw)m
+(ord)g(sp)s(eci\014ed)f(b)m(y)h(\014rst)f(tok)m(en.)48
+b(In)32 b(this)g(case)i(the)f(old)g(k)m(eyw)m(ord)g(name)f(\(\014rst)
+227 5375 y(tok)m(en\))c(is)e(returned)e(in)i(c)m(haracters)h(1-8)g(of)g
+(the)f(returned)e(CARD)j(string,)g(and)e(the)h(new)f(k)m(eyw)m(ord)i
+(name)227 5488 y(\(the)35 b(second)e(tok)m(en\))j(is)e(returned)e(in)i
+(c)m(haracters)h(41-48)h(of)e(the)g(returned)e(CARD)i(string.)51
+b(These)34 b(old)227 5601 y(and)i(new)f(names)h(ma)m(y)h(then)f(b)s(e)f
+(passed)g(to)i(the)f(\013mnam)g(routine)g(whic)m(h)g(will)g(c)m(hange)h
+(the)f(k)m(eyw)m(ord)227 5714 y(name.)p eop end
+%%Page: 68 76
+TeXDict begin 68 75 bop 0 299 a Fj(68)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Fj(The)g(k)m(eyt)m(yp)s(e)h(output)f(parameter)h
+(indicates)g(ho)m(w)g(the)f(returned)g(CARD)g(string)g(should)g(b)s(e)f
+(in)m(terpreted:)382 784 y Fe(keytype)857 b(interpretation)382
+897 y(-------)475 b(-------------------------)o(----)o(---)o(----)o
+(----)o(---)o(----)o(--)525 1010 y(-2)572 b(Rename)46
+b(the)h(keyword)f(with)h(name)f(=)i(the)f(first)f(8)h(characters)e(of)j
+(CARD)1193 1123 y(to)f(the)g(new)g(name)g(given)f(in)h(characters)e(41)
+j(-)f(48)g(of)g(CARD.)525 1349 y(-1)572 b(delete)46 b(the)h(keyword)f
+(with)h(this)f(name)h(from)g(the)f(FITS)h(header.)573
+1575 y(0)572 b(append)46 b(the)h(CARD)g(string)f(to)h(the)g(FITS)g
+(header)f(if)h(the)1193 1688 y(keyword)f(does)h(not)g(already)e(exist,)
+h(otherwise)g(update)1193 1801 y(the)h(keyword)f(value)g(and/or)g
+(comment)g(field)h(if)g(is)g(already)f(exists.)573 2026
+y(1)572 b(This)47 b(is)g(a)g(HISTORY)f(or)h(COMMENT)f(keyword;)g
+(append)g(it)h(to)g(the)g(header)573 2252 y(2)572 b(END)47
+b(record;)f(do)h(not)g(explicitly)e(write)h(it)i(to)f(the)g(FITS)f
+(file.)0 2481 y Fj(EXAMPLES:)30 b(The)g(follo)m(wing)i(lines)e
+(illustrate)i(v)-5 b(alid)31 b(input)e(template)j(strings:)286
+2710 y Fe(INTVAL)46 b(7)i(/)f(This)g(is)g(an)g(integer)f(keyword)286
+2823 y(RVAL)524 b(34.6)142 b(/)239 b(This)46 b(is)i(a)f(floating)f
+(point)g(keyword)286 2936 y(EVAL=-12.45E-03)92 b(/)47
+b(This)g(is)g(a)g(floating)f(point)g(keyword)g(in)h(exponential)e
+(notation)286 3049 y(lval)i(F)g(/)h(This)f(is)g(a)g(boolean)f(keyword)
+859 3162 y(This)h(is)g(a)g(comment)f(keyword)g(with)h(a)g(blank)f
+(keyword)g(name)286 3275 y(SVAL1)h(=)g('Hello)f(world')142
+b(/)95 b(this)47 b(is)g(a)g(string)f(keyword)286 3388
+y(SVAL2)94 b('123.5')g(this)47 b(is)g(also)f(a)i(string)e(keyword)286
+3501 y(sval3)94 b(123+)h(/)g(this)47 b(is)g(also)f(a)i(string)e
+(keyword)g(with)g(the)h(value)g('123+)189 b(')286 3614
+y(#)48 b(the)f(following)e(template)h(line)g(deletes)g(the)h(DATE)g
+(keyword)286 3727 y(-)h(DATE)286 3840 y(#)g(the)f(following)e(template)
+h(line)g(modifies)g(the)h(NAME)f(keyword)g(to)h(OBJECT)286
+3952 y(-)h(NAME)e(OBJECT)0 4182 y Fi(19)g Fj(T)-8 b(ranslate)32
+b(a)g(k)m(eyw)m(ord)g(name)f(in)m(to)h(a)g(new)f(name,)h(based)f(on)g
+(a)h(set)f(of)h(patterns.)43 b(This)31 b(routine)g(is)h(useful)227
+4294 y(for)j(translating)h(k)m(eyw)m(ords)g(in)e(cases)i(suc)m(h)f(as)h
+(adding)e(or)h(deleting)h(columns)f(in)g(a)g(table,)j(or)d(cop)m(ying)
+227 4407 y(a)41 b(column)g(from)f(one)h(table)g(to)g(another,)j(or)c
+(extracting)j(an)d(arra)m(y)h(from)f(a)h(cell)h(in)e(a)h(binary)f
+(table)227 4520 y(column)31 b(in)m(to)g(an)g(image)g(extension.)42
+b(In)30 b(these)h(cases,)h(it)f(is)g(necessary)g(to)g(translate)h(the)f
+(names)f(of)h(the)227 4633 y(k)m(eyw)m(ords)f(asso)s(ciated)i(with)d
+(the)h(original)h(table)g(column\(s\))f(in)m(to)g(the)g(appropriate)g
+(k)m(eyw)m(ord)g(name)g(in)227 4746 y(the)37 b(\014nal)f(\014le.)58
+b(F)-8 b(or)37 b(example,)i(if)d(column)h(2)f(is)h(deleted)g(from)e(a)i
+(table,)i(then)d(the)h(v)-5 b(alue)36 b(of)h('n')f(in)g(all)227
+4859 y(the)c(TF)m(ORMn)g(and)f(TTYPEn)f(k)m(eyw)m(ords)i(for)g(columns)
+f(3)h(and)f(higher)h(m)m(ust)f(b)s(e)g(decremen)m(ted)i(b)m(y)e(1.)227
+4972 y(Ev)m(en)j(more)g(complex)h(translations)f(are)h(sometimes)f
+(needed)g(to)h(con)m(v)m(ert)g(the)f(W)m(CS)g(k)m(eyw)m(ords)g(when)227
+5085 y(extracting)e(an)f(image)g(out)g(of)f(a)h(table)g(column)g(cell)g
+(in)m(to)h(a)e(separate)i(image)f(extension.)227 5230
+y(The)g(user)f(passes)i(an)f(arra)m(y)g(of)h(patterns)f(to)h(b)s(e)e
+(matc)m(hed.)44 b(Input)30 b(pattern)h(n)m(um)m(b)s(er)f(i)i(is)f
+(pattern[i][0],)227 5343 y(and)j(output)f(pattern)h(n)m(um)m(b)s(er)f
+(i)h(is)g(pattern[i][1].)53 b(Keyw)m(ords)34 b(are)g(matc)m(hed)h
+(against)g(the)f(input)f(pat-)227 5456 y(terns.)41 b(If)30
+b(a)g(matc)m(h)i(is)e(found)f(then)h(the)h(k)m(eyw)m(ord)g(is)f
+(re-written)h(according)g(to)g(the)g(output)f(pattern.)227
+5601 y(Order)41 b(is)h(imp)s(ortan)m(t.)76 b(The)41 b(\014rst)h(matc)m
+(h)h(is)f(accepted.)77 b(The)41 b(fastest)i(matc)m(h)g(will)f(b)s(e)g
+(made)g(when)227 5714 y(templates)32 b(with)e(the)h(same)f(\014rst)g(c)
+m(haracter)i(are)f(group)s(ed)e(together.)p eop end
+%%Page: 69 77
+TeXDict begin 69 76 bop 0 299 a Fh(5.8.)72 b(UTILITY)30
+b(R)m(OUTINES)2693 b Fj(69)227 555 y(Sev)m(eral)32 b(c)m(haracters)f
+(ha)m(v)m(e)h(sp)s(ecial)f(meanings:)466 772 y Fe(i,j)47
+b(-)g(single)f(digits,)g(preserved)f(in)j(output)e(template)466
+885 y(n)h(-)h(column)e(number)g(of)h(one)g(or)g(more)g(digits,)f
+(preserved)f(in)i(output)f(template)466 998 y(m)h(-)h(generic)e(number)
+g(of)h(one)g(or)g(more)g(digits,)e(preserved)h(in)h(output)f(template)
+466 1111 y(a)h(-)h(coordinate)d(designator,)g(preserved)g(in)i(output)f
+(template)466 1224 y(#)h(-)h(number)e(of)h(one)g(or)g(more)g(digits)466
+1337 y(?)g(-)h(any)f(character)466 1450 y(*)g(-)h(only)e(allowed)g(in)h
+(first)g(character)e(position,)g(to)j(match)e(all)657
+1563 y(keywords;)f(only)i(useful)f(as)h(last)g(pattern)e(in)j(the)f
+(list)227 1780 y Fj(i,)31 b(j,)f(n,)g(and)g(m)g(are)h(returned)e(b)m(y)
+i(the)f(routine.)227 1926 y(F)-8 b(or)27 b(example,)g(the)f(input)f
+(pattern)h("iCTYPn")g(will)g(matc)m(h)h("1CTYP5")g(\(if)f(n)p
+3003 1926 28 4 v 32 w(v)-5 b(alue)26 b(is)g(5\);)i(the)e(output)227
+2038 y(pattern)31 b("CTYPEi")f(will)h(b)s(e)f(re-written)h(as)f
+("CTYPE1".)42 b(Notice)32 b(that)f("i")g(is)g(preserv)m(ed.)227
+2184 y(The)f(follo)m(wing)i(output)e(patterns)g(are)h(sp)s(ecial:)227
+2330 y("-")h(-)e(do)h(not)f(cop)m(y)h(a)g(k)m(eyw)m(ord)g(that)g(matc)m
+(hes)g(the)g(corresp)s(onding)e(input)h(pattern)227 2475
+y("+")h(-)g(cop)m(y)g(the)f(input)g(unc)m(hanged)227
+2621 y(The)f(inrec)h(string)g(could)g(b)s(e)f(just)g(the)h(8-c)m(har)h
+(k)m(eyw)m(ord)f(name,)g(or)f(the)h(en)m(tire)h(80-c)m(har)g(header)f
+(record.)227 2734 y(Characters)h(9)g(-)f(80)h(in)g(the)f(input)g
+(string)g(simply)g(get)h(app)s(ended)e(to)i(the)g(translated)g(k)m(eyw)
+m(ord)f(name.)227 2879 y(If)h(n)p 375 2879 V 33 w(range)g(=)g(0,)i
+(then)e(only)h(k)m(eyw)m(ords)f(with)h('n')f(equal)h(to)g(n)p
+2410 2879 V 32 w(v)-5 b(alue)32 b(will)g(b)s(e)f(considered)g(as)h(a)g
+(pattern)227 2992 y(matc)m(h.)70 b(If)39 b(n)p 722 2992
+V 32 w(range)h(=)f(+1,)j(then)e(all)g(v)-5 b(alues)40
+b(of)g('n')f(greater)i(than)e(or)h(equal)g(to)g(n)p 3269
+2992 V 33 w(v)-5 b(alue)40 b(will)g(b)s(e)f(a)227 3105
+y(matc)m(h,)32 b(and)e(if)g(-1,)h(then)f(v)-5 b(alues)31
+b(of)g('n')f(less)g(than)h(or)f(equal)h(to)g(n)p 2530
+3105 V 32 w(v)-5 b(alue)31 b(will)g(matc)m(h.)0 3337
+y Fe(int)47 b(fits_translate_keyword\()286 3450 y(char)g(*inrec,)380
+b(/*)47 b(I)h(-)f(input)f(string)g(*/)286 3563 y(char)h(*outrec,)332
+b(/*)47 b(O)h(-)f(output)f(converted)f(string,)h(or)h(*/)1241
+3676 y(/*)238 b(a)47 b(null)g(string)f(if)h(input)g(does)f(not)95
+b(*/)1241 3788 y(/*)238 b(match)46 b(any)h(of)g(the)g(patterns)f(*/)286
+3901 y(char)h(*patterns[][2],/*)c(I)48 b(-)f(pointer)f(to)h(input)f(/)i
+(output)e(string)g(*/)1241 4014 y(/*)238 b(templates)45
+b(*/)286 4127 y(int)i(npat,)524 b(/*)47 b(I)h(-)f(number)f(of)h
+(templates)f(passed)g(*/)286 4240 y(int)h(n_value,)380
+b(/*)47 b(I)h(-)f(base)g('n')g(template)e(value)h(of)i(interest)d(*/)
+286 4353 y(int)i(n_offset,)332 b(/*)47 b(I)h(-)f(offset)f(to)h(be)g
+(applied)f(to)h(the)g('n')g(*/)1241 4466 y(/*)238 b(value)46
+b(in)i(the)e(output)h(string)f(*/)286 4579 y(int)h(n_range,)380
+b(/*)47 b(I)h(-)f(controls)f(range)g(of)h('n')g(template)f(*/)1241
+4692 y(/*)238 b(values)46 b(of)h(interest)f(\(-1,0,)g(or)h(+1\))g(*/)
+286 4805 y(int)g(*pat_num,)332 b(/*)47 b(O)h(-)f(matched)f(pattern)g
+(number)g(\(0)h(based\))f(or)h(-1)g(*/)286 4918 y(int)g(*i,)620
+b(/*)47 b(O)h(-)f(value)f(of)i(i,)f(if)g(any,)g(else)f(0)i(*/)286
+5031 y(int)f(*j,)620 b(/*)47 b(O)h(-)f(value)f(of)i(j,)f(if)g(any,)g
+(else)f(0)i(*/)286 5143 y(int)f(*m,)620 b(/*)47 b(O)h(-)f(value)f(of)i
+(m,)f(if)g(any,)g(else)f(0)i(*/)286 5256 y(int)f(*n,)620
+b(/*)47 b(O)h(-)f(value)f(of)i(n,)f(if)g(any,)g(else)f(0)i(*/)286
+5369 y(int)f(*status\))380 b(/*)47 b(IO)g(-)h(error)e(status)g(*/)80
+5601 y Fj(Here)25 b(is)f(an)g(example)g(of)g(some)h(of)f(the)g
+(patterns)g(used)f(to)i(con)m(v)m(ert)g(the)f(k)m(eyw)m(ords)h(asso)s
+(ciated)g(with)f(an)g(image)227 5714 y(in)30 b(a)h(cell)h(of)e(a)h
+(table)g(column)f(in)m(to)i(the)e(k)m(eyw)m(ords)h(appropriate)f(for)h
+(an)f(IMA)m(GE)h(extension:)p eop end
+%%Page: 70 78
+TeXDict begin 70 77 bop 0 299 a Fj(70)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)191 555 y Fe(char)47 b(*patterns[][2])c(=)48
+b({{"TSCALn",)92 b("BSCALE")i(},)h(/*)47 b(Standard)e(FITS)i(keywords)e
+(*/)143 668 y({"TZEROn",)93 b("BZERO")141 b(},)143 781
+y({"TUNITn",)93 b("BUNIT")141 b(},)143 894 y({"TNULLn",)93
+b("BLANK")141 b(},)143 1007 y({"TDMINn",)93 b("DATAMIN")45
+b(},)143 1120 y({"TDMAXn",)93 b("DATAMAX")45 b(},)143
+1233 y({"iCTYPn",)93 b("CTYPEi")g(},)i(/*)47 b(Coordinate)e(labels)h
+(*/)143 1346 y({"iCTYna",)93 b("CTYPEia")45 b(},)143
+1458 y({"iCUNIn",)93 b("CUNITi")g(},)i(/*)47 b(Coordinate)e(units)i(*/)
+143 1571 y({"iCUNna",)93 b("CUNITia")45 b(},)143 1684
+y({"iCRVLn",)93 b("CRVALi")g(},)i(/*)47 b(WCS)g(keywords)f(*/)143
+1797 y({"iCRVna",)93 b("CRVALia")45 b(},)143 1910 y({"iCDLTn",)93
+b("CDELTi")g(},)143 2023 y({"iCDEna",)g("CDELTia")45
+b(},)143 2136 y({"iCRPXn",)93 b("CRPIXi")g(},)143 2249
+y({"iCRPna",)g("CRPIXia")45 b(},)143 2362 y({"ijPCna",)93
+b("PCi_ja")g(},)143 2475 y({"ijCDna",)g("CDi_ja")g(},)143
+2588 y({"iVn_ma",)g("PVi_ma")g(},)143 2700 y({"iSn_ma",)g("PSi_ma")g
+(},)143 2813 y({"iCRDna",)g("CRDERia")45 b(},)143 2926
+y({"iCSYna",)93 b("CSYERia")45 b(},)143 3039 y({"iCROTn",)93
+b("CROTAi")g(},)143 3152 y({"WCAXna",)g("WCSAXESa"},)143
+3265 y({"WCSNna",)g("WCSNAMEa"}};)0 3517 y Fi(20)46 b
+Fj(T)-8 b(ranslate)26 b(the)f(k)m(eyw)m(ords)g(in)g(the)g(input)e(HDU)j
+(in)m(to)g(the)f(k)m(eyw)m(ords)g(that)h(are)f(appropriate)g(for)f(the)
+h(output)227 3630 y(HDU.)32 b(This)d(is)i(a)f(driv)m(er)h(routine)f
+(that)h(calls)g(the)g(previously)f(describ)s(ed)f(routine.)0
+3881 y Fe(int)47 b(fits_translate_keywords\()143 3994
+y(fitsfile)f(*infptr,)141 b(/*)47 b(I)g(-)h(pointer)e(to)h(input)f(HDU)
+h(*/)143 4107 y(fitsfile)f(*outfptr,)93 b(/*)47 b(I)g(-)h(pointer)e(to)
+h(output)f(HDU)h(*/)143 4220 y(int)g(firstkey,)332 b(/*)47
+b(I)g(-)h(first)e(HDU)h(record)f(number)g(to)h(start)g(with)f(*/)143
+4333 y(char)h(*patterns[][2],/*)c(I)k(-)h(pointer)e(to)h(input)f(/)i
+(output)e(keyword)g(templates)f(*/)143 4446 y(int)i(npat,)524
+b(/*)47 b(I)g(-)h(number)e(of)h(templates)e(passed)h(*/)143
+4559 y(int)h(n_value,)380 b(/*)47 b(I)g(-)h(base)e('n')h(template)f
+(value)g(of)h(interest)f(*/)143 4672 y(int)h(n_offset,)332
+b(/*)47 b(I)g(-)h(offset)e(to)h(be)g(applied)f(to)h(the)g('n')g(*/)1193
+4785 y(/*)238 b(value)47 b(in)g(the)g(output)f(string)g(*/)143
+4898 y(int)h(n_range,)380 b(/*)47 b(I)g(-)h(controls)d(range)i(of)g
+('n')g(template)e(*/)1098 5011 y(/*)238 b(values)46 b(of)h(interest)f
+(\(-1,0,)g(or)h(+1\))g(*/)143 5123 y(int)g(*status\))380
+b(/*)47 b(IO)g(-)h(error)e(status)g(*/)0 5375 y Fi(21)g
+Fj(P)m(arse)35 b(the)g(input)f(string)h(con)m(taining)h(a)f(list)h(of)f
+(ro)m(ws)f(or)h(ro)m(w)g(ranges,)h(and)e(return)g(in)m(teger)i(arra)m
+(ys)f(con-)227 5488 y(taining)27 b(the)f(\014rst)f(and)g(last)i(ro)m(w)
+f(in)f(eac)m(h)i(range.)40 b(F)-8 b(or)26 b(example,)i(if)d(ro)m(wlist)
+i(=)e("3-5,)k(6,)e(8-9")h(then)d(it)i(will)227 5601 y(return)34
+b(n)m(umranges)h(=)g(3,)h(rangemin)f(=)g(3,)i(6,)g(8)e(and)g(rangemax)g
+(=)g(5,)i(6,)g(9.)55 b(A)m(t)36 b(most,)h('maxranges')227
+5714 y(n)m(um)m(b)s(er)31 b(of)h(ranges)f(will)h(b)s(e)g(returned.)43
+b('maxro)m(ws')32 b(is)g(the)g(maxim)m(um)g(n)m(um)m(b)s(er)e(of)i(ro)m
+(ws)g(in)f(the)h(table;)p eop end
+%%Page: 71 79
+TeXDict begin 71 78 bop 0 299 a Fh(5.8.)72 b(UTILITY)30
+b(R)m(OUTINES)2693 b Fj(71)227 555 y(an)m(y)30 b(ro)m(ws)f(or)g(ranges)
+g(larger)h(than)f(this)g(will)g(b)s(e)g(ignored.)40 b(The)29
+b(ro)m(ws)g(m)m(ust)g(b)s(e)f(sp)s(eci\014ed)h(in)f(increasing)227
+668 y(order,)33 b(and)f(the)g(ranges)h(m)m(ust)f(not)g(o)m(v)m(erlap.)
+48 b(A)33 b(min)m(us)e(sign)i(ma)m(y)g(b)s(e)e(use)h(to)h(sp)s(ecify)f
+(all)h(the)g(ro)m(ws)f(to)227 781 y(the)h(upp)s(er)d(or)j(lo)m(w)m(er)h
+(b)s(ound,)d(so)i("50-")h(means)e(all)i(the)f(ro)m(ws)f(from)g(50)h(to)
+h(the)e(end)g(of)h(the)f(table,)j(and)227 894 y("-")d(means)e(all)h
+(the)g(ro)m(ws)f(in)g(the)h(table,)g(from)f(1)h(-)g(maxro)m(ws.)191
+1143 y Fe(int)47 b(fits_parse_range)c(/)48 b(ffrwrg\(char)c(*rowlist,)i
+(LONGLONG)f(maxrows,)h(int)h(maxranges,)e(>)334 1256
+y(int)i(*numranges,)e(long)h(*rangemin,)f(long)i(*rangemax,)e(int)i
+(*status\))191 1481 y(int)g(fits_parse_rangell)c(/)k(ffrwrgll\(char)d
+(*rowlist,)i(LONGLONG)f(maxrows,)h(int)h(maxranges,)e(>)334
+1594 y(int)i(*numranges,)e(LONGLONG)g(*rangemin,)g(LONGLONG)h
+(*rangemax,)f(int)i(*status\))0 1843 y Fi(22)f Fj(Chec)m(k)37
+b(that)g(the)g(Header)g(\014ll)g(b)m(ytes)g(\(if)g(an)m(y\))g(are)g
+(all)h(blank.)59 b(These)36 b(are)h(the)g(b)m(ytes)g(that)g(ma)m(y)h
+(follo)m(w)227 1956 y(END)e(k)m(eyw)m(ord)g(and)f(b)s(efore)g(the)h(b)s
+(eginning)f(of)h(data)g(unit,)g(or)g(the)g(end)f(of)g(the)h(HDU)g(if)g
+(there)f(is)h(no)227 2069 y(data)31 b(unit.)191 2318
+y Fe(int)47 b(ffchfl\(fitsfile)c(*fptr,)k(>)g(int)g(*status\))0
+2566 y Fi(23)f Fj(Chec)m(k)30 b(that)g(the)f(Data)i(\014ll)e(b)m(ytes)h
+(\(if)g(an)m(y\))g(are)g(all)g(zero)g(\(for)f(IMA)m(GE)i(or)e(BINAR)-8
+b(Y)30 b(T)-8 b(able)30 b(HDU\))h(or)e(all)227 2679 y(blanks)g(\(for)g
+(ASCI)s(I)f(table)i(HDU\).)g(These)f(\014le)g(b)m(ytes)h(ma)m(y)f(b)s
+(e)g(lo)s(cated)h(after)g(the)f(last)h(v)-5 b(alid)29
+b(data)h(b)m(yte)227 2792 y(in)g(the)h(HDU)g(and)f(b)s(efore)g(the)g
+(ph)m(ysical)h(end)f(of)h(the)f(HDU.)191 3041 y Fe(int)47
+b(ffcdfl\(fitsfile)c(*fptr,)k(>)g(int)g(*status\))0 3290
+y Fi(24)f Fj(Estimate)35 b(the)e(ro)s(ot-mean-squared)h(\(RMS\))f
+(noise)h(in)f(an)g(image.)51 b(These)33 b(routines)g(are)h(mainly)f
+(for)g(use)227 3403 y(with)25 b(the)g(Hcompress)g(image)i(compression)e
+(algorithm.)40 b(They)24 b(return)g(an)h(estimate)i(of)e(the)h(RMS)f
+(noise)227 3515 y(in)38 b(the)f(bac)m(kground)h(pixels)f(of)h(the)g
+(image.)64 b(This)36 b(robust)h(algorithm)i(\(written)f(b)m(y)f(Ric)m
+(hard)h(White,)227 3628 y(STScI\))e(\014rst)f(attempts)i(to)g(estimate)
+h(the)f(RMS)e(v)-5 b(alue)37 b(as)g(1.68)g(times)g(the)f(median)g(of)h
+(the)f(absolute)227 3741 y(di\013erences)26 b(b)s(et)m(w)m(een)h
+(successiv)m(e)g(pixels)f(in)g(the)g(image.)41 b(If)25
+b(the)h(median)g(=)f(0,)j(then)d(the)h(algorithm)h(falls)227
+3854 y(bac)m(k)h(to)f(computing)g(the)g(RMS)f(of)h(the)g(di\013erence)g
+(b)s(et)m(w)m(een)h(successiv)m(e)g(pixels,)f(after)h(sev)m(eral)g
+(N-sigma)227 3967 y(rejection)e(cycles)g(to)g(remo)m(v)m(e)g(extreme)g
+(v)-5 b(alues.)39 b(The)25 b(input)e(parameters)j(are:)38
+b(the)25 b(arra)m(y)g(of)g(image)i(pixel)227 4080 y(v)-5
+b(alues)30 b(\(either)h(\015oat)f(or)g(short)f(v)-5 b(alues\),)31
+b(the)f(n)m(um)m(b)s(er)e(of)i(v)-5 b(alues)30 b(in)g(the)g(arra)m(y)-8
+b(,)31 b(the)f(v)-5 b(alue)30 b(that)g(is)g(used)227
+4193 y(to)h(represen)m(t)g(n)m(ull)f(pixels)h(\(en)m(ter)g(a)g(v)m(ery)
+g(large)g(n)m(um)m(b)s(er)e(if)h(there)h(are)g(no)f(n)m(ull)g
+(pixels\).)191 4442 y Fe(int)47 b(fits_rms_float)d(\(float)i(fdata[],)f
+(int)i(npix,)g(float)f(in_null_value,)907 4555 y(>)h(double)f(*rms,)h
+(int)g(*status\))191 4668 y(int)g(fits_rms_short)d(\(short)i(fdata[],)f
+(int)i(npix,)g(short)f(in_null_value,)907 4780 y(>)h(double)f(*rms,)h
+(int)g(*status\))0 5029 y Fi(25)f Fj(W)-8 b(as)33 b(CFITSIO)d(compiled)
+h(with)h(the)f(-D)p 1612 5029 28 4 v 34 w(REENTRANT)g(directiv)m(e)i
+(so)e(that)h(it)g(ma)m(y)h(b)s(e)d(safely)j(used)d(in)227
+5142 y(m)m(ulti-threaded)d(en)m(vironmen)m(ts?)40 b(The)26
+b(follo)m(wing)i(function)e(returns)f(1)i(if)f(y)m(es,)i(0)f(if)f(no.)
+40 b(Note,)28 b(ho)m(w)m(ev)m(er,)227 5255 y(that)35
+b(ev)m(en)g(if)g(the)f(-D)p 991 5255 V 34 w(REENTRANT)f(directiv)m(e)j
+(w)m(as)f(sp)s(eci\014ed,)g(this)f(do)s(es)g(not)h(guaran)m(tee)h(that)
+f(the)227 5368 y(CFITSIO)29 b(routines)h(are)h(thread-safe,)g(b)s
+(ecause)g(some)f(compilers)h(ma)m(y)g(not)g(supp)s(ort)d(this)j
+(feature.)0 5617 y Fe(int)47 b(fits_is_reentrant\(void\))p
+eop end
+%%Page: 72 80
+TeXDict begin 72 79 bop 0 299 a Fj(72)1379 b Fh(CHAPTER)30
+b(5.)71 b(BASIC)30 b(CFITSIO)f(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)p eop end
+%%Page: 73 81
+TeXDict begin 73 80 bop 0 1225 a Fg(Chapter)65 b(6)0
+1687 y Fm(The)77 b(CFITSIO)f(Iterator)i(F)-19 b(unction)0
+2180 y Fj(The)41 b(\014ts)p 325 2180 28 4 v 33 w(iterate)p
+614 2180 V 34 w(data)i(function)e(in)h(CFITSIO)e(pro)m(vides)i(a)g
+(unique)e(metho)s(d)i(of)g(executing)h(an)e(arbitrary)0
+2293 y(user-supplied)35 b(`w)m(ork')i(function)f(that)h(op)s(erates)g
+(on)g(ro)m(ws)f(of)h(data)g(in)f(FITS)g(tables)h(or)f(on)h(pixels)f(in)
+h(FITS)0 2406 y(images.)i(Rather)24 b(than)e(explicitly)j(reading)e
+(and)g(writing)g(the)g(FITS)g(images)h(or)f(columns)g(of)g(data,)i(one)
+f(instead)0 2518 y(calls)36 b(the)g(CFITSIO)d(iterator)k(routine,)g
+(passing)e(to)h(it)g(the)f(name)g(of)h(the)f(user's)g(w)m(ork)g
+(function)g(that)h(is)f(to)0 2631 y(b)s(e)30 b(executed)h(along)g(with)
+f(a)h(list)g(of)f(all)h(the)f(table)i(columns)e(or)g(image)h(arra)m(ys)
+g(that)g(are)f(to)h(b)s(e)f(passed)g(to)h(the)0 2744
+y(w)m(ork)37 b(function.)61 b(The)37 b(CFITSIO)e(iterator)k(function)e
+(then)g(do)s(es)g(all)h(the)f(w)m(ork)g(of)h(allo)s(cating)h(memory)e
+(for)0 2857 y(the)28 b(arra)m(ys,)h(reading)f(the)g(input)e(data)j
+(from)e(the)h(FITS)f(\014le,)h(passing)g(them)g(to)g(the)g(w)m(ork)g
+(function,)g(and)f(then)0 2970 y(writing)36 b(an)m(y)h(output)f(data)h
+(bac)m(k)h(to)f(the)f(FITS)g(\014le)g(after)h(the)g(w)m(ork)g(function)
+f(exits.)59 b(Because)38 b(it)f(is)g(often)0 3083 y(more)g(e\016cien)m
+(t)i(to)f(pro)s(cess)f(only)g(a)h(subset)f(of)g(the)g(total)i(table)g
+(ro)m(ws)e(at)h(one)f(time,)j(the)e(iterator)g(function)0
+3196 y(can)31 b(determine)f(the)h(optim)m(um)f(amoun)m(t)h(of)f(data)h
+(to)g(pass)f(in)g(eac)m(h)i(iteration)f(and)f(rep)s(eatedly)h(call)g
+(the)g(w)m(ork)0 3309 y(function)f(un)m(til)h(the)f(en)m(tire)i(table)f
+(b)s(een)e(pro)s(cessed.)0 3469 y(F)-8 b(or)37 b(man)m(y)f
+(applications)h(this)e(single)i(CFITSIO)d(iterator)k(function)d(can)h
+(e\013ectiv)m(ely)j(replace)e(all)g(the)f(other)0 3582
+y(CFITSIO)g(routines)i(for)f(reading)h(or)f(writing)h(data)g(in)f(FITS)
+g(images)i(or)e(tables.)64 b(Using)37 b(the)h(iterator)h(has)0
+3695 y(sev)m(eral)32 b(imp)s(ortan)m(t)e(adv)-5 b(an)m(tages)32
+b(o)m(v)m(er)g(the)f(traditional)g(metho)s(d)f(of)h(reading)f(and)g
+(writing)g(FITS)g(data)h(\014les:)136 3961 y Fc(\017)46
+b Fj(It)33 b(cleanly)h(separates)g(the)f(data)h(I/O)f(from)f(the)h
+(routine)g(that)h(op)s(erates)f(on)g(the)g(data.)49 b(This)32
+b(leads)h(to)227 4074 y(a)e(more)g(mo)s(dular)e(and)h(`ob)5
+b(ject)31 b(orien)m(ted')h(programming)e(st)m(yle.)136
+4268 y Fc(\017)46 b Fj(It)27 b(simpli\014es)f(the)h(application)h
+(program)f(b)m(y)f(eliminating)i(the)f(need)g(to)g(allo)s(cate)i
+(memory)e(for)f(the)h(data)227 4381 y(arra)m(ys)e(and)f(eliminates)i
+(most)e(of)h(the)f(calls)i(to)f(the)g(CFITSIO)d(routines)j(that)g
+(explicitly)h(read)e(and)g(write)227 4494 y(the)31 b(data.)136
+4689 y Fc(\017)46 b Fj(It)32 b(ensures)e(that)i(the)g(data)g(are)g(pro)
+s(cessed)f(as)h(e\016cien)m(tly)h(as)e(p)s(ossible.)44
+b(This)31 b(is)g(esp)s(ecially)i(imp)s(ortan)m(t)227
+4801 y(when)44 b(pro)s(cessing)g(tabular)h(data)h(since)f(the)g
+(iterator)h(function)e(will)h(calculate)i(the)e(most)g(e\016cien)m(t)
+227 4914 y(n)m(um)m(b)s(er)36 b(of)i(ro)m(ws)g(in)f(the)h(table)g(to)g
+(b)s(e)f(passed)g(at)i(one)e(time)i(to)f(the)g(user's)e(w)m(ork)i
+(function)f(on)h(eac)m(h)227 5027 y(iteration.)136 5222
+y Fc(\017)46 b Fj(Mak)m(es)39 b(it)e(p)s(ossible)g(for)g(larger)h(pro)5
+b(jects)37 b(to)h(dev)m(elop)g(a)g(library)e(of)i(w)m(ork)f(functions)f
+(that)i(all)g(ha)m(v)m(e)h(a)227 5335 y(uniform)29 b(calling)j
+(sequence)f(and)f(are)h(all)g(indep)s(enden)m(t)e(of)i(the)f(details)i
+(of)e(the)h(FITS)e(\014le)i(format.)0 5601 y(There)f(are)h(basically)h
+(2)g(steps)e(in)h(using)f(the)h(CFITSIO)e(iterator)j(function.)42
+b(The)30 b(\014rst)g(step)h(is)g(to)g(design)g(the)0
+5714 y(w)m(ork)26 b(function)f(itself)h(whic)m(h)f(m)m(ust)h(ha)m(v)m
+(e)g(a)g(prescrib)s(ed)e(set)i(of)g(input)f(parameters.)39
+b(One)25 b(of)h(these)g(parameters)1905 5942 y(73)p eop
+end
+%%Page: 74 82
+TeXDict begin 74 81 bop 0 299 a Fj(74)1455 b Fh(CHAPTER)30
+b(6.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)0
+555 y Fj(is)f(a)g(structure)g(con)m(taining)i(p)s(oin)m(ters)d(to)i
+(the)f(arra)m(ys)h(of)f(data;)h(the)f(w)m(ork)h(function)e(can)i(p)s
+(erform)d(an)m(y)i(desired)0 668 y(op)s(erations)k(on)h(these)f(arra)m
+(ys)h(and)e(do)s(es)h(not)g(need)g(to)h(w)m(orry)f(ab)s(out)g(ho)m(w)g
+(the)h(input)e(data)i(w)m(ere)f(read)g(from)0 781 y(the)e(\014le)f(or)g
+(ho)m(w)h(the)f(output)g(data)h(get)h(written)e(bac)m(k)h(to)h(the)e
+(\014le.)0 941 y(The)24 b(second)h(step)g(is)f(to)i(design)e(the)h
+(driv)m(er)g(routine)f(that)i(op)s(ens)e(all)h(the)g(necessary)g(FITS)f
+(\014les)h(and)f(initializes)0 1054 y(the)41 b(input)g(parameters)g(to)
+h(the)g(iterator)g(function.)73 b(The)41 b(driv)m(er)g(program)g(calls)
+h(the)g(CFITSIO)e(iterator)0 1167 y(function)30 b(whic)m(h)g(then)g
+(reads)g(the)h(data)g(and)f(passes)g(it)h(to)g(the)g(user's)e(w)m(ork)i
+(function.)0 1327 y(The)20 b(follo)m(wing)i(2)f(sections)g(describ)s(e)
+f(these)h(steps)g(in)f(more)g(detail.)39 b(There)20 b(are)h(also)g(sev)
+m(eral)h(example)f(programs)0 1440 y(included)30 b(with)g(the)g
+(CFITSIO)f(distribution)h(whic)m(h)g(illustrate)i(ho)m(w)e(to)h(use)f
+(the)h(iterator)g(function.)0 1789 y Ff(6.1)135 b(The)45
+b(Iterator)h(W)-11 b(ork)45 b(F)-11 b(unction)0 2043
+y Fj(The)42 b(user-supplied)f(iterator)j(w)m(ork)f(function)f(m)m(ust)g
+(ha)m(v)m(e)i(the)f(follo)m(wing)h(set)f(of)g(input)e(parameters)i
+(\(the)0 2156 y(function)30 b(can)h(b)s(e)e(giv)m(en)j(an)m(y)f
+(desired)e(name\):)95 2429 y Fe(int)47 b(user_fn\()f(long)h(totaln,)e
+(long)i(offset,)f(long)g(firstn,)g(long)h(nvalues,)716
+2542 y(int)g(narrays,)e(iteratorCol)g(*data,)94 b(void)47
+b(*userPointer)d(\))136 2815 y Fc(\017)i Fj(totaln)24
+b({)f(the)f(total)j(n)m(um)m(b)s(er)c(of)h(table)i(ro)m(ws)e(or)g
+(image)i(pixels)f(that)g(will)f(b)s(e)g(passed)g(to)h(the)g(w)m(ork)f
+(function)227 2928 y(during)29 b(1)i(or)g(more)f(iterations.)136
+3129 y Fc(\017)46 b Fj(o\013set)d({)f(the)h(o\013set)f(applied)g(to)h
+(the)f(\014rst)f(table)i(ro)m(w)f(or)g(image)h(pixel)f(to)h(b)s(e)e
+(passed)g(to)i(the)f(w)m(ork)227 3241 y(function.)55
+b(In)34 b(other)i(w)m(ords,)g(this)f(is)g(the)g(n)m(um)m(b)s(er)f(of)h
+(ro)m(ws)h(or)f(pixels)g(that)h(are)f(skipp)s(ed)f(o)m(v)m(er)i(b)s
+(efore)227 3354 y(starting)30 b(the)g(iterations.)42
+b(If)28 b(o\013set)j(=)e(0,)h(then)f(all)h(the)f(table)i(ro)m(ws)e(or)g
+(image)i(pixels)e(will)h(b)s(e)e(passed)h(to)227 3467
+y(the)i(w)m(ork)f(function.)136 3668 y Fc(\017)46 b Fj(\014rstn)26
+b({)i(the)f(n)m(um)m(b)s(er)f(of)i(the)f(\014rst)g(table)h(ro)m(w)f(or)
+g(image)i(pixel)e(\(starting)i(with)e(1\))h(that)f(is)h(b)s(eing)e
+(passed)227 3781 y(in)k(this)h(particular)f(call)i(to)f(the)g(w)m(ork)f
+(function.)136 3982 y Fc(\017)46 b Fj(n)m(v)-5 b(alues)35
+b({)g(the)f(n)m(um)m(b)s(er)g(of)g(table)h(ro)m(ws)g(or)f(image)i
+(pixels)e(that)h(are)g(b)s(eing)f(passed)g(in)g(this)h(particular)227
+4095 y(call)h(to)g(the)f(w)m(ork)f(function.)54 b(n)m(v)-5
+b(alues)35 b(will)g(alw)m(a)m(ys)h(b)s(e)e(less)h(than)f(or)h(equal)g
+(to)h(totaln)g(and)e(will)h(ha)m(v)m(e)227 4208 y(the)f(same)f(v)-5
+b(alue)34 b(on)f(eac)m(h)h(iteration,)i(except)e(p)s(ossibly)f(on)g
+(the)g(last)h(call)h(whic)m(h)e(ma)m(y)g(ha)m(v)m(e)i(a)e(smaller)227
+4321 y(v)-5 b(alue.)136 4522 y Fc(\017)46 b Fj(narra)m(ys)31
+b({)g(the)g(n)m(um)m(b)s(er)f(of)h(arra)m(ys)g(of)g(data)h(that)f(are)g
+(b)s(eing)g(passed)f(to)i(the)f(w)m(ork)g(function.)42
+b(There)30 b(is)227 4635 y(one)h(arra)m(y)g(for)f(eac)m(h)i(image)f(or)
+f(table)i(column.)136 4835 y Fc(\017)46 b Fj(*data)31
+b({)e(arra)m(y)h(of)f(structures,)g(one)h(for)f(eac)m(h)h(column)f(or)g
+(image.)42 b(Eac)m(h)29 b(structure)g(con)m(tains)h(a)g(p)s(oin)m(ter)
+227 4948 y(to)h(the)g(arra)m(y)g(of)f(data)h(as)g(w)m(ell)g(as)g(other)
+g(descriptiv)m(e)g(parameters)g(ab)s(out)f(that)h(arra)m(y)-8
+b(.)136 5149 y Fc(\017)46 b Fj(*userP)m(oin)m(ter)26
+b({)g(a)f(user)f(supplied)g(p)s(oin)m(ter)h(that)h(can)f(b)s(e)f(used)h
+(to)g(pass)g(ancillary)h(information)f(from)g(the)227
+5262 y(driv)m(er)h(function)g(to)g(the)g(w)m(ork)g(function.)39
+b(This)25 b(p)s(oin)m(ter)h(is)g(passed)g(to)g(the)h(CFITSIO)d
+(iterator)j(function)227 5375 y(whic)m(h)37 b(then)f(passes)g(it)h(on)g
+(to)g(the)f(w)m(ork)h(function)f(without)h(an)m(y)g(mo)s(di\014cation.)
+59 b(It)37 b(ma)m(y)g(p)s(oin)m(t)f(to)i(a)227 5488 y(single)29
+b(n)m(um)m(b)s(er,)f(to)h(an)f(arra)m(y)h(of)g(v)-5 b(alues,)29
+b(to)g(a)g(structure)f(con)m(taining)i(an)e(arbitrary)g(set)h(of)g
+(parameters)227 5601 y(of)e(di\013eren)m(t)h(t)m(yp)s(es,)g(or)f(it)h
+(ma)m(y)f(b)s(e)g(a)g(n)m(ull)g(p)s(oin)m(ter)g(if)g(it)h(is)f(not)g
+(needed.)40 b(The)26 b(w)m(ork)h(function)g(m)m(ust)g(cast)227
+5714 y(this)k(p)s(oin)m(ter)f(to)h(the)g(appropriate)f(data)h(t)m(yp)s
+(e)g(b)s(efore)f(using)f(it)i(it.)p eop end
+%%Page: 75 83
+TeXDict begin 75 82 bop 0 299 a Fh(6.1.)72 b(THE)30 b(ITERA)-8
+b(TOR)30 b(W)m(ORK)g(FUNCTION)2021 b Fj(75)0 555 y(The)23
+b(totaln,)k(o\013set,)g(narra)m(ys,)e(data,)h(and)d(userP)m(oin)m(ter)i
+(parameters)f(are)g(guaran)m(teed)h(to)g(ha)m(v)m(e)g(the)f(same)g(v)-5
+b(alue)0 668 y(on)35 b(eac)m(h)i(iteration.)57 b(Only)34
+b(\014rstn,)i(n)m(v)-5 b(alues,)37 b(and)d(the)i(arra)m(ys)f(of)h(data)
+g(p)s(oin)m(ted)f(to)h(b)m(y)f(the)h(data)g(structures)0
+781 y(ma)m(y)31 b(c)m(hange)g(on)g(eac)m(h)g(iterativ)m(e)i(call)f(to)f
+(the)f(w)m(ork)h(function.)0 941 y(Note)43 b(that)g(the)f(iterator)h
+(treats)g(an)f(image)h(as)f(a)g(long)h(1-D)g(arra)m(y)f(of)h(pixels)f
+(regardless)g(of)g(it's)h(in)m(trinsic)0 1054 y(dimensionalit)m(y)-8
+b(.)52 b(The)33 b(total)j(n)m(um)m(b)s(er)c(of)i(pixels)g(is)g(just)f
+(the)h(pro)s(duct)e(of)i(the)g(size)h(of)e(eac)m(h)i(dimension,)g(and)0
+1167 y(the)e(order)g(of)g(the)g(pixels)g(is)g(the)g(same)g(as)g(the)h
+(order)e(that)h(they)h(are)f(stored)g(in)g(the)g(FITS)f(\014le.)48
+b(If)33 b(the)g(w)m(ork)0 1280 y(function)27 b(needs)g(to)h(kno)m(w)f
+(the)h(n)m(um)m(b)s(er)e(and)h(size)h(of)g(the)f(image)i(dimensions)d
+(then)h(these)h(parameters)g(can)g(b)s(e)0 1393 y(passed)i(via)h(the)f
+(userP)m(oin)m(ter)i(structure.)0 1553 y(The)e(iteratorCol)i(structure)
+e(is)g(curren)m(tly)h(de\014ned)e(as)h(follo)m(ws:)0
+1780 y Fe(typedef)46 b(struct)94 b(/*)47 b(structure)e(for)i(the)g
+(iterator)e(function)h(column)g(information)f(*/)0 1893
+y({)143 2005 y(/*)i(structure)f(elements)f(required)h(as)h(input)f(to)h
+(fits_iterate_data:)c(*/)95 2231 y(fitsfile)j(*fptr;)332
+b(/*)48 b(pointer)d(to)j(the)f(HDU)f(containing)f(the)i(column)f(or)i
+(image)e(*/)95 2344 y(int)286 b(colnum;)e(/*)48 b(column)e(number)g(in)
+h(the)g(table;)f(ignored)g(for)h(images)189 b(*/)95 2457
+y(char)238 b(colname[70];)44 b(/*)k(name)e(\(TTYPEn\))g(of)h(the)g
+(column;)f(null)g(for)h(images)285 b(*/)95 2570 y(int)h(datatype;)188
+b(/*)48 b(output)e(data)g(type)h(\(converted)e(if)i(necessary\))e(*/)95
+2683 y(int)286 b(iotype;)e(/*)48 b(type:)e(InputCol,)f(InputOutputCol,)
+f(or)j(OutputCol)e(*/)95 2909 y(/*)j(output)e(structure)f(elements)h
+(that)g(may)h(be)g(useful)f(for)h(the)g(work)g(function:)e(*/)95
+3135 y(void)238 b(*array;)189 b(/*)47 b(pointer)f(to)h(the)g(array)f
+(\(and)h(the)g(null)g(value\))f(*/)95 3247 y(long)238
+b(repeat;)189 b(/*)47 b(binary)f(table)h(vector)f(repeat)g(value;)g
+(set)238 b(*/)1050 3360 y(/*)g(equal)46 b(to)i(1)f(for)g(images)810
+b(*/)95 3473 y(long)238 b(tlmin;)f(/*)47 b(legal)g(minimum)e(data)i
+(value,)f(if)h(any)477 b(*/)95 3586 y(long)238 b(tlmax;)f(/*)47
+b(legal)g(maximum)e(data)i(value,)f(if)h(any)477 b(*/)95
+3699 y(char)238 b(unit[70];)93 b(/*)47 b(physical)f(unit)g(string)g
+(\(BUNIT)h(or)g(TUNITn\))189 b(*/)95 3812 y(char)238
+b(tdisp[70];)45 b(/*)i(suggested)e(display)h(format;)g(null)h(if)g
+(none)190 b(*/)0 4038 y(})47 b(iteratorCol;)0 4264 y
+Fj(Instead)34 b(of)g(directly)g(reading)g(or)g(writing)g(the)f(elemen)m
+(ts)j(in)d(this)h(structure,)g(it)h(is)e(recommended)h(that)g(pro-)0
+4377 y(grammers)c(use)g(the)h(access)h(functions)d(that)i(are)g(pro)m
+(vided)f(for)g(this)h(purp)s(ose.)0 4538 y(The)25 b(\014rst)g(\014v)m
+(e)h(elemen)m(ts)h(in)f(this)f(structure)h(m)m(ust)f(b)s(e)g(initially)
+j(de\014ned)c(b)m(y)i(the)g(driv)m(er)f(routine)h(b)s(efore)f(calling)0
+4650 y(the)f(iterator)h(routine.)38 b(The)23 b(CFITSIO)f(iterator)j
+(routine)f(uses)f(this)g(information)h(to)g(determine)g(what)f(column)0
+4763 y(or)32 b(arra)m(y)h(to)h(pass)e(to)h(the)g(w)m(ork)f(function,)h
+(and)f(whether)g(the)g(arra)m(y)h(is)g(to)g(b)s(e)f(input)g(to)h(the)f
+(w)m(ork)h(function,)0 4876 y(output)g(from)g(the)h(w)m(ork)f
+(function,)h(or)g(b)s(oth.)49 b(The)33 b(CFITSIO)f(iterator)i(function)
+f(\014lls)h(in)f(the)g(v)-5 b(alues)34 b(of)g(the)0 4989
+y(remaining)c(structure)g(elemen)m(ts)i(b)s(efore)e(passing)g(it)h(to)g
+(the)g(w)m(ork)f(function.)0 5149 y(The)d(arra)m(y)g(structure)g
+(elemen)m(t)i(is)e(a)g(p)s(oin)m(ter)g(to)h(the)g(actual)g(data)g(arra)
+m(y)g(and)e(it)i(m)m(ust)f(b)s(e)f(cast)j(to)e(the)h(correct)0
+5262 y(data)k(t)m(yp)s(e)f(b)s(efore)f(it)i(is)f(used.)41
+b(The)31 b(`rep)s(eat')g(structure)g(elemen)m(t)h(giv)m(e)g(the)g(n)m
+(um)m(b)s(er)d(of)i(data)h(v)-5 b(alues)31 b(in)g(eac)m(h)0
+5375 y(ro)m(w)f(of)g(the)g(table,)i(so)e(that)h(the)f(total)i(n)m(um)m
+(b)s(er)c(of)i(data)h(v)-5 b(alues)30 b(in)g(the)g(arra)m(y)h(is)f(giv)
+m(en)h(b)m(y)f(rep)s(eat)g(*)g(n)m(v)-5 b(alues.)0 5488
+y(In)36 b(the)g(case)i(of)e(image)i(arra)m(ys)f(and)e(ASCI)s(I)g
+(tables,)k(rep)s(eat)e(will)g(alw)m(a)m(ys)g(b)s(e)f(equal)h(to)g(1.)59
+b(When)37 b(the)f(data)0 5601 y(t)m(yp)s(e)k(is)f(a)h(c)m(haracter)h
+(string,)h(the)e(arra)m(y)g(p)s(oin)m(ter)f(is)h(actually)h(a)f(p)s
+(oin)m(ter)f(to)i(an)e(arra)m(y)h(of)g(string)f(p)s(oin)m(ters)0
+5714 y(\(i.e.,)31 b(c)m(har)e(**arra)m(y\).)42 b(The)29
+b(other)g(output)g(structure)f(elemen)m(ts)j(are)e(pro)m(vided)g(for)f
+(con)m(v)m(enience)k(in)c(case)i(that)p eop end
+%%Page: 76 84
+TeXDict begin 76 83 bop 0 299 a Fj(76)1455 b Fh(CHAPTER)30
+b(6.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)0
+555 y Fj(information)36 b(is)g(needed)f(within)g(the)h(w)m(ork)g
+(function.)56 b(An)m(y)35 b(other)h(information)g(ma)m(y)g(b)s(e)f
+(passed)h(from)f(the)0 668 y(driv)m(er)30 b(routine)h(to)g(the)f(w)m
+(ork)h(function)f(via)h(the)f(userP)m(oin)m(ter)h(parameter.)0
+828 y(Up)s(on)g(completion,)j(the)e(w)m(ork)h(routine)f(m)m(ust)g
+(return)f(an)h(in)m(teger)h(status)f(v)-5 b(alue,)34
+b(with)d(0)i(indicating)g(success)0 941 y(and)e(an)m(y)g(other)g(v)-5
+b(alue)32 b(indicating)g(an)f(error)g(whic)m(h)g(will)g(cause)h(the)f
+(iterator)i(function)e(to)h(immediately)g(exit)0 1054
+y(at)27 b(that)f(p)s(oin)m(t.)39 b(Return)25 b(status)i(v)-5
+b(alues)26 b(in)f(the)h(range)h(1)f({)g(1000)i(should)c(b)s(e)i(a)m(v)m
+(oided)h(since)f(these)h(are)f(reserv)m(ed)0 1167 y(for)d(use)g(b)m(y)h
+(CFITSIO.)e(A)i(return)e(status)i(v)-5 b(alue)24 b(of)g(-1)g(ma)m(y)g
+(b)s(e)f(used)f(to)j(force)f(the)f(CFITSIO)f(iterator)j(function)0
+1280 y(to)i(stop)g(at)g(that)h(p)s(oin)m(t)e(and)g(return)g(con)m(trol)
+i(to)f(the)g(driv)m(er)f(routine)h(after)g(writing)f(an)m(y)h(output)f
+(arra)m(ys)h(to)h(the)0 1393 y(FITS)e(\014le.)40 b(CFITSIO)26
+b(do)s(es)g(not)i(considered)f(this)g(to)h(b)s(e)e(an)h(error)g
+(condition,)i(so)e(an)m(y)g(further)f(pro)s(cessing)h(b)m(y)0
+1506 y(the)k(application)g(program)f(will)h(con)m(tin)m(ue)h(normally)
+-8 b(.)0 1837 y Ff(6.2)135 b(The)45 b(Iterator)h(Driv)l(er)g(F)-11
+b(unction)0 2087 y Fj(The)33 b(iterator)h(driv)m(er)f(function)g(m)m
+(ust)h(op)s(en)e(the)i(necessary)f(FITS)g(\014les)g(and)g(p)s(osition)g
+(them)g(to)h(the)g(correct)0 2200 y(HDU.)23 b(It)f(m)m(ust)g(also)i
+(initialize)g(the)e(follo)m(wing)i(parameters)e(in)g(the)h(iteratorCol)
+h(structure)d(\(de\014ned)g(ab)s(o)m(v)m(e\))j(for)0
+2313 y(eac)m(h)31 b(column)f(or)g(image)h(b)s(efore)e(calling)j(the)e
+(CFITSIO)e(iterator)j(function.)40 b(Sev)m(eral)31 b(`constructor')g
+(routines)0 2426 y(are)g(pro)m(vided)f(in)g(CFITSIO)f(for)h(this)g
+(purp)s(ose.)136 2670 y Fc(\017)46 b Fj(*fptr)30 b({)h(The)f
+(\014ts\014le)g(p)s(oin)m(ter)g(to)i(the)e(table)h(or)g(image.)136
+2853 y Fc(\017)46 b Fj(coln)m(um)30 b({)f(the)h(n)m(um)m(b)s(er)e(of)h
+(the)h(column)f(in)g(the)g(table.)42 b(This)28 b(v)-5
+b(alue)30 b(is)f(ignored)g(in)g(the)h(case)g(of)g(images.)227
+2966 y(If)j(coln)m(um)h(equals)g(0,)g(then)g(the)f(column)g(name)h
+(will)f(b)s(e)g(used)g(to)h(iden)m(tify)g(the)f(column)h(to)g(b)s(e)e
+(passed)227 3079 y(to)f(the)g(w)m(ork)f(function.)136
+3261 y Fc(\017)46 b Fj(colname)32 b({)e(the)g(name)h(\(TTYPEn)e(k)m
+(eyw)m(ord\))i(of)f(the)h(column.)40 b(This)29 b(is)i(only)f(required)f
+(if)h(coln)m(um)h(=)f(0)227 3374 y(and)g(is)g(ignored)h(for)f(images.)
+136 3556 y Fc(\017)46 b Fj(datat)m(yp)s(e)29 b({)g(The)e(desired)h
+(data)g(t)m(yp)s(e)g(of)h(the)f(arra)m(y)g(to)h(b)s(e)e(passed)h(to)h
+(the)f(w)m(ork)g(function.)40 b(F)-8 b(or)28 b(n)m(umer-)227
+3669 y(ical)h(data)f(the)f(data)h(t)m(yp)s(e)g(do)s(es)f(not)g(need)g
+(to)h(b)s(e)f(the)g(same)h(as)f(the)h(actual)g(data)g(t)m(yp)s(e)g(in)f
+(the)g(FITS)g(\014le,)227 3782 y(in)h(whic)m(h)h(case)g(CFITSIO)e(will)
+i(do)g(the)f(con)m(v)m(ersion.)42 b(Allo)m(w)m(ed)30
+b(v)-5 b(alues)29 b(are:)40 b(TSTRING,)28 b(TLOGICAL,)227
+3895 y(TBYTE,)37 b(TSBYTE,)f(TSHOR)-8 b(T,)36 b(TUSHOR)-8
+b(T,)37 b(TINT,)f(TLONG,)h(TULONG,)f(TFLO)m(A)-8 b(T,)38
+b(TDOU-)227 4008 y(BLE.)33 b(If)g(the)g(input)f(v)-5
+b(alue)33 b(of)g(data)h(t)m(yp)s(e)f(equals)g(0,)i(then)d(the)h
+(existing)h(data)g(t)m(yp)s(e)f(of)g(the)g(column)g(or)227
+4121 y(image)f(will)f(b)s(e)e(used)h(without)g(an)m(y)h(con)m(v)m
+(ersion.)136 4303 y Fc(\017)46 b Fj(iot)m(yp)s(e)37 b({)f(de\014nes)e
+(whether)h(the)h(data)g(arra)m(y)g(is)g(to)g(b)s(e)f(input)g(to)h(the)g
+(w)m(ork)f(function)h(\(i.e,)i(read)d(from)227 4416 y(the)42
+b(FITS)e(\014le\),)k(or)d(output)g(from)g(the)g(w)m(ork)g(function)g
+(\(i.e.,)k(written)c(to)h(the)f(FITS)g(\014le\))g(or)g(b)s(oth.)227
+4529 y(Allo)m(w)m(ed)30 b(v)-5 b(alues)29 b(are)f(InputCol,)g
+(OutputCol,)h(or)f(InputOutputCol.)38 b(V)-8 b(ariable-length)30
+b(arra)m(y)f(columns)227 4642 y(are)h(supp)s(orted)e(as)i(InputCol)e
+(or)i(InputOutputCol)d(t)m(yp)s(es,)j(but)f(ma)m(y)h(not)g(b)s(e)e
+(used)h(for)g(an)h(OutputCol)227 4755 y(t)m(yp)s(e.)0
+4999 y(After)h(the)f(driv)m(er)g(routine)g(has)g(initialized)j(all)e
+(these)f(parameters,)h(it)g(can)g(then)f(call)h(the)g(CFITSIO)e
+(iterator)0 5112 y(function:)95 5357 y Fe(int)47 b
+(fits_iterate_data\(int)42 b(narrays,)k(iteratorCol)f(*data,)h(long)g
+(offset,)286 5470 y(long)h(nPerLoop,)e(int)i(\(*workFn\)\()e(\),)i
+(void)g(*userPointer,)d(int)j(*status\);)136 5714 y Fc(\017)f
+Fj(narra)m(ys)31 b({)f(the)h(n)m(um)m(b)s(er)e(of)h(columns)g(or)h
+(images)g(that)g(are)g(to)g(b)s(e)f(passed)g(to)h(the)f(w)m(ork)h
+(function.)p eop end
+%%Page: 77 85
+TeXDict begin 77 84 bop 0 299 a Fh(6.3.)72 b(GUIDELINES)30
+b(F)m(OR)h(USING)f(THE)g(ITERA)-8 b(TOR)30 b(FUNCTION)1200
+b Fj(77)136 555 y Fc(\017)46 b Fj(*data)32 b({)f(p)s(oin)m(ter)f(to)h
+(arra)m(y)g(of)f(structures)g(con)m(taining)i(information)f(ab)s(out)f
+(eac)m(h)h(column)g(or)f(image.)136 736 y Fc(\017)46
+b Fj(o\013set)31 b({)f(if)f(p)s(ositiv)m(e,)i(this)f(n)m(um)m(b)s(er)e
+(of)i(ro)m(ws)f(at)h(the)g(b)s(eginning)f(of)h(the)f(table)i(\(or)f
+(pixels)f(in)h(the)f(image\))227 849 y(will)i(b)s(e)f(skipp)s(ed)f(and)
+g(will)i(not)g(b)s(e)e(passed)h(to)h(the)g(w)m(ork)f(function.)136
+1030 y Fc(\017)46 b Fj(nP)m(erLo)s(op)38 b(-)h(sp)s(eci\014es)e(the)i
+(n)m(um)m(b)s(er)e(of)h(table)h(ro)m(ws)g(\(or)f(n)m(um)m(b)s(er)f(of)i
+(image)g(pixels\))g(that)g(are)g(to)g(b)s(e)227 1143
+y(passed)29 b(to)h(the)f(w)m(ork)h(function)e(on)h(eac)m(h)i
+(iteration.)42 b(If)28 b(nP)m(erLo)s(op)h(=)g(0)g(then)g(CFITSIO)f
+(will)i(calculate)227 1256 y(the)22 b(optim)m(um)g(n)m(um)m(b)s(er)e
+(for)h(greatest)j(e\016ciency)-8 b(.)39 b(If)21 b(nP)m(erLo)s(op)g(is)h
+(negativ)m(e,)k(then)21 b(all)i(the)f(ro)m(ws)f(or)h(pixels)227
+1368 y(will)36 b(b)s(e)f(passed)g(at)h(one)g(time,)i(and)c(the)i(w)m
+(ork)g(function)f(will)h(only)f(b)s(e)g(called)i(once.)56
+b(If)35 b(an)m(y)h(v)-5 b(ariable)227 1481 y(length)33
+b(arra)m(ys)g(are)g(b)s(eing)f(pro)s(cessed,)h(then)g(the)f(nP)m(erLo)s
+(op)h(v)-5 b(alue)33 b(is)f(ignored,)i(and)e(the)h(iterator)h(will)227
+1594 y(alw)m(a)m(ys)e(pro)s(cess)e(one)h(ro)m(w)f(of)h(the)f(table)i
+(at)f(a)g(time.)136 1775 y Fc(\017)46 b Fj(*w)m(orkFn)f(-)f(the)h(name)
+f(\(actually)i(the)f(address\))f(of)g(the)g(w)m(ork)h(function)f(that)h
+(is)f(to)h(b)s(e)f(called)h(b)m(y)227 1888 y(\014ts)p
+354 1888 28 4 v 33 w(iterate)p 643 1888 V 34 w(data.)136
+2069 y Fc(\017)h Fj(*userP)m(oin)m(ter)34 b(-)f(this)g(is)g(a)g(user)f
+(supplied)g(p)s(oin)m(ter)h(that)g(can)g(b)s(e)g(used)f(to)h(pass)g
+(ancillary)h(information)227 2182 y(from)f(the)g(driv)m(er)g(routine)g
+(to)h(the)f(w)m(ork)g(function.)48 b(It)33 b(ma)m(y)h(p)s(oin)m(t)f(to)
+h(a)f(single)h(n)m(um)m(b)s(er,)e(an)h(arra)m(y)-8 b(,)35
+b(or)227 2295 y(to)c(a)g(structure)f(con)m(taining)i(an)e(arbitrary)g
+(set)h(of)g(parameters.)136 2476 y Fc(\017)46 b Fj(*status)30
+b(-)f(The)f(CFITSIO)f(error)h(status.)41 b(Should)27
+b(=)h(0)h(on)g(input;)f(a)h(non-zero)h(output)e(v)-5
+b(alue)29 b(indicates)227 2588 y(an)i(error.)0 2828 y(When)f(\014ts)p
+392 2828 V 32 w(iterate)p 680 2828 V 35 w(data)h(is)f(called)h(it)f
+(\014rst)g(allo)s(cates)i(memory)e(to)h(hold)e(all)i(the)f(requested)g
+(columns)g(of)g(data)0 2941 y(or)f(image)i(pixel)e(arra)m(ys.)41
+b(It)29 b(then)g(reads)g(the)h(input)e(data)i(from)f(the)g(FITS)f
+(tables)i(or)g(images)g(in)m(to)g(the)g(arra)m(ys)0 3054
+y(then)h(passes)h(the)g(structure)f(with)g(p)s(oin)m(ters)h(to)g(these)
+g(data)h(arra)m(ys)f(to)g(the)g(w)m(ork)g(function.)44
+b(After)32 b(the)g(w)m(ork)0 3167 y(function)37 b(returns,)g(the)h
+(iterator)g(function)f(writes)g(an)m(y)g(output)g(columns)f(of)h(data)h
+(or)f(images)h(bac)m(k)g(to)g(the)0 3279 y(FITS)31 b(\014les.)46
+b(It)32 b(then)g(rep)s(eats)g(this)g(pro)s(cess)g(for)f(an)m(y)i
+(remaining)f(sets)g(of)h(ro)m(ws)f(or)g(image)h(pixels)f(un)m(til)h(it)
+f(has)0 3392 y(pro)s(cessed)27 b(the)i(en)m(tire)g(table)f(or)g(image)i
+(or)e(un)m(til)g(the)g(w)m(ork)g(function)g(returns)f(a)h(non-zero)h
+(status)f(v)-5 b(alue.)40 b(The)0 3505 y(iterator)33
+b(then)f(frees)g(the)h(memory)e(that)i(it)g(initially)g(allo)s(cated)h
+(and)e(returns)f(con)m(trol)i(to)g(the)f(driv)m(er)g(routine)0
+3618 y(that)f(called)h(it.)0 3949 y Ff(6.3)135 b(Guidelines)46
+b(for)f(Using)h(the)f(Iterator)h(F)-11 b(unction)0 4199
+y Fj(The)34 b(totaln,)i(o\013set,)h(\014rstn,)d(and)f(n)m(v)-5
+b(alues)35 b(parameters)f(that)h(are)f(passed)g(to)h(the)f(w)m(ork)g
+(function)g(are)h(useful)0 4312 y(for)f(determining)g(ho)m(w)g(m)m(uc)m
+(h)g(of)h(the)f(data)h(has)f(b)s(een)f(pro)s(cessed)h(and)f(ho)m(w)h(m)
+m(uc)m(h)g(remains)g(left)h(to)g(do.)52 b(On)0 4425 y(the)36
+b(v)m(ery)h(\014rst)f(call)h(to)g(the)f(w)m(ork)h(function)f(\014rstn)f
+(will)h(b)s(e)g(equal)h(to)g(o\013set)g(+)f(1;)k(the)c(w)m(ork)g
+(function)g(ma)m(y)0 4538 y(need)31 b(to)g(p)s(erform)f(v)-5
+b(arious)31 b(initialization)i(tasks)f(b)s(efore)e(starting)i(to)f(pro)
+s(cess)g(the)g(data.)43 b(Similarly)-8 b(,)32 b(\014rstn)d(+)0
+4650 y(n)m(v)-5 b(alues)29 b(-)f(1)h(will)f(b)s(e)g(equal)g(to)h
+(totaln)h(on)e(the)g(last)h(iteration,)i(at)e(whic)m(h)f(p)s(oin)m(t)g
+(the)g(w)m(ork)h(function)e(ma)m(y)i(need)0 4763 y(to)k(p)s(erform)f
+(some)h(clean)h(up)d(op)s(erations)i(b)s(efore)g(exiting)h(for)e(the)h
+(last)h(time.)48 b(The)33 b(w)m(ork)f(function)h(can)g(also)0
+4876 y(force)e(an)f(early)h(termination)g(of)g(the)g(iterations)g(b)m
+(y)g(returning)e(a)i(status)g(v)-5 b(alue)30 b(=)g(-1.)0
+5036 y(The)f(narra)m(ys)g(and)g(iteratorCol.datat)m(yp)s(e)j(argumen)m
+(ts)e(allo)m(w)g(the)g(w)m(ork)f(function)g(to)h(double)f(c)m(hec)m(k)i
+(that)f(the)0 5149 y(n)m(um)m(b)s(er)k(of)i(input)f(arra)m(ys)h(and)f
+(their)g(data)i(t)m(yp)s(es)e(ha)m(v)m(e)i(the)f(exp)s(ected)g(v)-5
+b(alues.)57 b(The)35 b(iteratorCol.fptr)i(and)0 5262
+y(iteratorCol.coln)m(um)d(structure)d(elemen)m(ts)h(can)g(b)s(e)f(used)
+f(if)i(the)f(w)m(ork)h(function)f(needs)g(to)h(read)f(or)g(write)h(the)
+0 5375 y(v)-5 b(alues)31 b(of)g(other)g(k)m(eyw)m(ords)g(in)g(the)g
+(FITS)f(\014le)h(asso)s(ciated)h(with)f(the)g(arra)m(y)-8
+b(.)43 b(This)30 b(should)g(generally)i(only)f(b)s(e)0
+5488 y(done)j(during)e(the)i(initialization)j(step)c(or)h(during)f(the)
+h(clean)g(up)f(step)h(after)g(the)g(last)h(set)f(of)g(data)g(has)g(b)s
+(een)0 5601 y(pro)s(cessed.)40 b(Extra)29 b(FITS)f(\014le)h(I/O)g
+(during)e(the)i(main)g(pro)s(cessing)g(lo)s(op)g(of)g(the)g(w)m(ork)g
+(function)g(can)g(seriously)0 5714 y(degrade)i(the)f(sp)s(eed)g(of)g
+(the)h(program.)p eop end
+%%Page: 78 86
+TeXDict begin 78 85 bop 0 299 a Fj(78)1455 b Fh(CHAPTER)30
+b(6.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)0
+555 y Fj(If)i(v)-5 b(ariable-length)35 b(arra)m(y)e(columns)g(are)g(b)s
+(eing)f(pro)s(cessed,)h(then)g(the)g(iterator)h(will)f(op)s(erate)h(on)
+f(one)g(ro)m(w)g(of)0 668 y(the)j(table)g(at)g(a)g(time.)57
+b(In)34 b(this)i(case)g(the)g(the)f(rep)s(eat)h(elemen)m(t)h(in)e(the)h
+(in)m(teratorCol)h(structure)e(will)h(b)s(e)e(set)0 781
+y(equal)d(to)g(the)g(n)m(um)m(b)s(er)e(of)h(elemen)m(ts)i(in)e(the)h
+(curren)m(t)f(ro)m(w)g(that)h(is)g(b)s(eing)f(pro)s(cessed.)0
+941 y(One)j(imp)s(ortan)m(t)g(feature)h(of)f(the)h(iterator)h(is)e
+(that)h(the)f(\014rst)g(elemen)m(t)i(in)e(eac)m(h)h(arra)m(y)g(that)g
+(is)f(passed)g(to)h(the)0 1054 y(w)m(ork)f(function)g(giv)m(es)h(the)f
+(v)-5 b(alue)33 b(that)h(is)f(used)f(to)h(represen)m(t)g(n)m(ull)g(or)g
+(unde\014ned)d(v)-5 b(alues)34 b(in)e(the)h(arra)m(y)-8
+b(.)49 b(The)0 1167 y(real)41 b(data)g(then)g(b)s(egins)f(with)g(the)g
+(second)h(elemen)m(t)h(of)f(the)f(arra)m(y)h(\(i.e.,)k(arra)m(y[1],)g
+(not)c(arra)m(y[0]\).)73 b(If)40 b(the)0 1280 y(\014rst)e(arra)m(y)h
+(elemen)m(t)h(is)f(equal)g(to)g(zero,)j(then)c(this)g(indicates)i(that)
+f(all)h(the)e(arra)m(y)h(elemen)m(ts)h(ha)m(v)m(e)g(de\014ned)0
+1393 y(v)-5 b(alues)33 b(and)f(there)h(are)g(no)g(unde\014ned)d(v)-5
+b(alues.)48 b(If)33 b(arra)m(y[0])h(is)f(not)g(equal)g(to)g(zero,)i
+(then)d(this)h(indicates)g(that)0 1506 y(some)h(of)g(the)g(data)h(v)-5
+b(alues)34 b(are)g(unde\014ned)d(and)j(this)f(v)-5 b(alue)35
+b(\(arra)m(y[0]\))h(is)d(used)g(to)i(represen)m(t)f(them.)51
+b(In)33 b(the)0 1619 y(case)i(of)e(output)g(arra)m(ys)h(\(i.e.,)i
+(those)e(arra)m(ys)g(that)g(will)g(b)s(e)f(written)g(bac)m(k)h(to)h
+(the)e(FITS)g(\014le)g(b)m(y)h(the)g(iterator)0 1732
+y(function)h(after)i(the)f(w)m(ork)f(function)h(exits\))h(the)f(w)m
+(ork)g(function)f(m)m(ust)h(set)g(the)g(\014rst)f(arra)m(y)h(elemen)m
+(t)h(to)g(the)0 1844 y(desired)g(n)m(ull)g(v)-5 b(alue)37
+b(if)g(necessary)-8 b(,)40 b(otherwise)e(the)f(\014rst)g(elemen)m(t)h
+(should)e(b)s(e)h(set)g(to)h(zero)g(to)g(indicate)g(that)0
+1957 y(there)30 b(are)h(no)e(n)m(ull)h(v)-5 b(alues)31
+b(in)e(the)h(output)g(arra)m(y)-8 b(.)42 b(CFITSIO)28
+b(de\014nes)h(2)h(v)-5 b(alues,)31 b(FLO)m(A)-8 b(TNULL)e(V)g(ALUE)31
+b(and)0 2070 y(DOUBLENULL)-10 b(V)g(ALUE,)37 b(that)f(can)h(b)s(e)e
+(used)g(as)i(default)f(n)m(ull)g(v)-5 b(alues)36 b(for)g(\015oat)h(and)
+e(double)h(data)h(t)m(yp)s(es,)0 2183 y(resp)s(ectiv)m(ely)-8
+b(.)60 b(In)35 b(the)i(case)g(of)f(c)m(haracter)i(string)e(data)h(t)m
+(yp)s(es,)h(a)e(n)m(ull)h(string)f(is)g(alw)m(a)m(ys)i(used)d(to)i
+(represen)m(t)0 2296 y(unde\014ned)28 b(strings.)0 2456
+y(In)33 b(some)h(applications)g(it)g(ma)m(y)g(b)s(e)f(necessary)h(to)g
+(recursiv)m(ely)g(call)h(the)f(iterator)h(function.)50
+b(An)33 b(example)h(of)0 2569 y(this)27 b(is)g(giv)m(en)h(b)m(y)f(one)h
+(of)f(the)h(example)f(programs)g(that)h(is)f(distributed)f(with)h
+(CFITSIO:)f(it)i(\014rst)e(calls)i(a)g(w)m(ork)0 2682
+y(function)38 b(that)g(writes)h(out)f(a)g(2D)h(histogram)g(image.)65
+b(That)38 b(w)m(ork)g(function)g(in)f(turn)g(calls)j(another)e(w)m(ork)
+0 2795 y(function)29 b(that)h(reads)g(the)f(`X')i(and)e(`Y')h(columns)f
+(in)g(a)h(table)h(to)f(calculate)i(the)d(v)-5 b(alue)31
+b(of)e(eac)m(h)i(2D)f(histogram)0 2908 y(image)i(pixel.)41
+b(Graphically)-8 b(,)32 b(the)e(program)g(structure)g(can)h(b)s(e)f
+(describ)s(ed)f(as:)48 3153 y Fe(driver)46 b(-->)h(iterator)e(-->)i
+(work1_fn)f(-->)h(iterator)e(-->)i(work2_fn)0 3399 y
+Fj(Finally)-8 b(,)42 b(it)d(should)e(b)s(e)h(noted)g(that)h(the)g
+(table)g(columns)f(or)g(image)i(arra)m(ys)f(that)g(are)f(passed)g(to)h
+(the)g(w)m(ork)0 3512 y(function)c(do)h(not)g(all)g(ha)m(v)m(e)h(to)f
+(come)h(from)e(the)h(same)g(FITS)f(\014le)g(and)g(instead)h(ma)m(y)g
+(come)h(from)e(an)m(y)h(com-)0 3625 y(bination)d(of)g(sources)g(as)h
+(long)f(as)h(they)f(ha)m(v)m(e)h(the)f(same)h(length.)49
+b(The)32 b(length)i(of)f(the)g(\014rst)f(table)i(column)f(or)0
+3738 y(image)f(arra)m(y)f(is)f(used)f(b)m(y)i(the)f(iterator)i(if)e
+(they)h(do)f(not)h(all)g(ha)m(v)m(e)h(the)e(same)h(length.)0
+4069 y Ff(6.4)135 b(Complete)47 b(List)e(of)g(Iterator)i(Routines)0
+4319 y Fj(All)36 b(of)f(the)g(iterator)h(routines)f(are)g(listed)h(b)s
+(elo)m(w.)54 b(Most)36 b(of)f(these)h(routines)e(do)h(not)g(ha)m(v)m(e)
+i(a)e(corresp)s(onding)0 4432 y(short)30 b(function)g(name.)0
+4678 y Fi(1)81 b Fj(Iterator)32 b(`constructor')h(functions)e(that)i
+(set)f(the)g(v)-5 b(alue)32 b(of)g(elemen)m(ts)h(in)f(the)g
+(iteratorCol)h(structure)e(that)227 4791 y(de\014ne)k(the)h(columns)f
+(or)h(arra)m(ys.)56 b(These)36 b(set)g(the)g(\014ts\014le)f(p)s(oin)m
+(ter,)i(column)e(name,)j(column)d(n)m(um)m(b)s(er,)227
+4904 y(datat)m(yp)s(e,)28 b(and)e(iot)m(yp)s(e,)i(resp)s(ectiv)m(ely)-8
+b(.)41 b(The)25 b(last)i(2)g(routines)f(allo)m(w)h(all)g(the)f
+(parameters)h(to)f(b)s(e)g(set)g(with)227 5017 y(one)31
+b(function)f(call)i(\(one)f(supplies)e(the)i(column)f(name,)h(the)f
+(other)h(the)f(column)g(n)m(um)m(b)s(er\).)95 5262 y
+Fe(int)47 b(fits_iter_set_file\(iterato)o(rCo)o(l)42
+b(*col,)k(fitsfile)g(*fptr\);)95 5488 y(int)h
+(fits_iter_set_colname\(iter)o(ato)o(rCol)41 b(*col,)46
+b(char)h(*colname\);)95 5714 y(int)g(fits_iter_set_colnum\(itera)o(tor)
+o(Col)41 b(*col,)47 b(int)g(colnum\);)p eop end
+%%Page: 79 87
+TeXDict begin 79 86 bop 0 299 a Fh(6.4.)72 b(COMPLETE)29
+b(LIST)g(OF)i(ITERA)-8 b(TOR)29 b(R)m(OUTINES)1638 b
+Fj(79)95 668 y Fe(int)47 b(fits_iter_set_datatype\(ite)o(rat)o(orCo)o
+(l)42 b(*col,)k(int)h(datatype\);)95 894 y(int)g
+(fits_iter_set_iotype\(itera)o(tor)o(Col)41 b(*col,)47
+b(int)g(iotype\);)95 1120 y(int)g(fits_iter_set_by_name\(iter)o(ato)o
+(rCol)41 b(*col,)46 b(fitsfile)g(*fptr,)477 1233 y(char)h(*colname,)e
+(int)i(datatype,)93 b(int)47 b(iotype\);)95 1458 y(int)g
+(fits_iter_set_by_num\(itera)o(tor)o(Col)41 b(*col,)47
+b(fitsfile)e(*fptr,)477 1571 y(int)i(colnum,)f(int)h(datatype,)93
+b(int)47 b(iotype\);)0 1820 y Fi(2)81 b Fj(Iterator)38
+b(`accessor')h(functions)e(that)g(return)g(the)g(v)-5
+b(alue)38 b(of)f(the)g(elemen)m(t)i(in)e(the)g(iteratorCol)i(structure)
+227 1933 y(that)31 b(describ)s(es)f(a)h(particular)f(data)h(column)g
+(or)f(arra)m(y)95 2181 y Fe(fitsfile)46 b(*)h
+(fits_iter_get_file\(iterato)o(rCol)41 b(*col\);)95 2407
+y(char)47 b(*)h(fits_iter_get_colname\(i)o(ter)o(ator)o(Col)41
+b(*col\);)95 2633 y(int)47 b(fits_iter_get_colnum\(itera)o(tor)o(Col)41
+b(*col\);)95 2858 y(int)47 b(fits_iter_get_datatype\(ite)o(rat)o(orCo)o
+(l)42 b(*col\);)95 3084 y(int)47 b(fits_iter_get_iotype\(itera)o(tor)o
+(Col)41 b(*col\);)95 3310 y(void)47 b(*)h(fits_iter_get_array\(ite)o
+(rat)o(orCo)o(l)42 b(*col\);)95 3536 y(long)47 b
+(fits_iter_get_tlmin\(itera)o(tor)o(Col)41 b(*col\);)95
+3762 y(long)47 b(fits_iter_get_tlmax\(itera)o(tor)o(Col)41
+b(*col\);)95 3987 y(long)47 b(fits_iter_get_repeat\(iter)o(ato)o(rCol)
+41 b(*col\);)95 4213 y(char)47 b(*)h(fits_iter_get_tunit\(ite)o(rat)o
+(orCo)o(l)42 b(*col\);)95 4439 y(char)47 b(*)h
+(fits_iter_get_tdisp\(ite)o(rat)o(orCo)o(l)42 b(*col\);)0
+4687 y Fi(3)81 b Fj(The)29 b(CFITSIO)g(iterator)j(function)95
+4936 y Fe(int)47 b(fits_iterate_data\(int)42 b(narrays,)94
+b(iteratorCol)44 b(*data,)i(long)h(offset,)573 5049 y(long)f(nPerLoop,)
+573 5161 y(int)h(\(*workFn\)\()e(long)h(totaln,)g(long)h(offset,)f
+(long)g(firstn,)1289 5274 y(long)g(nvalues,)g(int)h(narrays,)e
+(iteratorCol)g(*data,)1289 5387 y(void)h(*userPointer\),)573
+5500 y(void)g(*userPointer,)573 5613 y(int)h(*status\);)p
+eop end
+%%Page: 80 88
+TeXDict begin 80 87 bop 0 299 a Fj(80)1455 b Fh(CHAPTER)30
+b(6.)112 b(THE)30 b(CFITSIO)e(ITERA)-8 b(TOR)30 b(FUNCTION)p
+eop end
+%%Page: 81 89
+TeXDict begin 81 88 bop 0 1225 a Fg(Chapter)65 b(7)0
+1687 y Fm(W)-19 b(orld)77 b(Co)6 b(ordinate)78 b(System)f(Routines)0
+2180 y Fj(The)36 b(FITS)g(comm)m(unit)m(y)h(has)f(adopted)h(a)g(set)g
+(of)g(k)m(eyw)m(ord)g(con)m(v)m(en)m(tions)h(that)f(de\014ne)f(the)h
+(transformations)0 2293 y(needed)30 b(to)i(con)m(v)m(ert)g(b)s(et)m(w)m
+(een)f(pixel)g(lo)s(cations)h(in)e(an)h(image)h(and)e(the)g(corresp)s
+(onding)g(celestial)j(co)s(ordinates)0 2406 y(on)25 b(the)h(sky)-8
+b(,)27 b(or)e(more)g(generally)-8 b(,)29 b(that)d(de\014ne)e(w)m(orld)h
+(co)s(ordinates)i(that)e(are)h(to)g(b)s(e)f(asso)s(ciated)i(with)e(an)m
+(y)h(pixel)0 2518 y(lo)s(cation)h(in)e(an)h(n-dimensional)f(FITS)g
+(arra)m(y)-8 b(.)40 b(CFITSIO)24 b(is)h(distributed)g(with)g(a)h(a)g
+(few)f(self-con)m(tained)i(W)-8 b(orld)0 2631 y(Co)s(ordinate)30
+b(System)g(\(W)m(CS\))g(routines,)g(ho)m(w)m(ev)m(er,)i(these)e
+(routines)g(DO)f(NOT)h(supp)s(ort)e(all)j(the)f(latest)h(W)m(CS)0
+2744 y(con)m(v)m(en)m(tions,)38 b(so)c(it)h(is)g(STR)m(ONGL)-8
+b(Y)34 b(RECOMMENDED)h(that)g(soft)m(w)m(are)h(dev)m(elop)s(ers)e(use)g
+(a)h(more)g(robust)0 2857 y(external)c(W)m(CS)g(library)-8
+b(.)40 b(Sev)m(eral)32 b(recommended)e(libraries)g(are:)95
+3138 y Fe(WCSLIB)47 b(-)95 b(supported)45 b(by)i(Mark)g(Calabretta)95
+3251 y(WCSTools)f(-)h(supported)f(by)h(Doug)g(Mink)95
+3364 y(AST)g(library)f(-)i(developed)d(by)i(the)g(U.K.)g(Starlink)e
+(project)0 3644 y Fj(More)30 b(information)f(ab)s(out)g(the)g(W)m(CS)g
+(k)m(eyw)m(ord)h(con)m(v)m(en)m(tions)h(and)d(links)h(to)h(all)g(of)f
+(these)g(W)m(CS)g(libraries)h(can)0 3757 y(b)s(e)g(found)f(on)h(the)h
+(FITS)e(Supp)s(ort)g(O\016ce)h(w)m(eb)g(site)i(at)f(h)m
+(ttp://\014ts.gsfc.nasa.go)m(v)j(under)29 b(the)h(W)m(CS)h(link.)0
+3917 y(The)40 b(functions)h(pro)m(vided)g(in)f(these)i(external)f(W)m
+(CS)g(libraries)h(will)f(need)g(access)h(to)f(the)h(W)m(CS)f(k)m(eyw)m
+(ords)0 4030 y(con)m(tained)36 b(in)f(the)h(FITS)e(\014le)i(headers.)55
+b(One)35 b(con)m(v)m(enien)m(t)i(w)m(a)m(y)f(to)g(pass)f(this)g
+(information)h(to)g(the)f(external)0 4143 y(library)c(is)f(to)i(use)f
+(the)g(\014ts)p 942 4143 28 4 v 32 w(hdr2str)f(routine)h(in)g(CFITSIO)e
+(\(de\014ned)h(b)s(elo)m(w\))h(to)h(cop)m(y)g(the)f(header)g(k)m(eyw)m
+(ords)0 4256 y(in)m(to)k(one)e(long)i(string,)f(and)f(then)g(pass)g
+(this)h(string)f(to)i(an)e(in)m(terface)i(routine)f(in)f(the)h
+(external)g(library)f(that)0 4369 y(will)d(extract)h(the)f(necessary)f
+(W)m(CS)h(information)g(\(e.g.,)h(the)f('w)m(cspih')g(routine)f(in)g
+(the)h(W)m(CSLIB)f(library)h(and)0 4482 y(the)h('astFitsChan')g(and)f
+('astPutCards')g(functions)g(in)g(the)h(AST)e(library\).)0
+4763 y Fi(1)81 b Fj(Concatenate)38 b(the)f(header)f(k)m(eyw)m(ords)h
+(in)f(the)g(CHDU)h(in)m(to)h(a)f(single)g(long)g(string)f(of)h(c)m
+(haracters.)60 b(Eac)m(h)227 4876 y(80-c)m(haracter)28
+b(\014xed-length)c(k)m(eyw)m(ord)h(record)g(is)g(app)s(ended)d(to)k
+(the)f(output)f(c)m(haracter)i(string,)g(in)e(order,)227
+4989 y(with)h(no)f(in)m(terv)m(ening)i(separator)f(or)g(terminating)h
+(c)m(haracters.)40 b(The)24 b(last)i(header)e(record)h(is)f(terminated)
+227 5101 y(with)33 b(a)g(NULL)f(c)m(haracter.)49 b(This)32
+b(routine)h(allo)s(cates)i(memory)d(for)h(the)g(returned)e(c)m
+(haracter)j(arra)m(y)-8 b(,)35 b(so)227 5214 y(the)c(calling)h(program)
+e(m)m(ust)g(free)h(the)f(memory)g(when)g(\014nished.)227
+5375 y(There)c(are)h(2)f(related)h(routines:)39 b(\014ts)p
+1514 5375 V 32 w(hdr2str)25 b(simply)h(concatenates)j(all)e(the)f
+(existing)h(k)m(eyw)m(ords)g(in)f(the)227 5488 y(header;)40
+b(\014ts)p 682 5488 V 32 w(con)m(v)m(ert)p 1003 5488
+V 34 w(hdr2str)35 b(is)i(similar,)h(except)f(that)g(if)f(the)h(CHDU)f
+(is)h(a)f(tile)i(compressed)e(image)227 5601 y(\(stored)28
+b(in)g(a)f(binary)g(table\))i(then)e(it)h(will)g(\014rst)f(con)m(v)m
+(ert)i(that)f(header)g(bac)m(k)g(to)g(that)g(of)g(a)g(normal)g(FITS)227
+5714 y(image)k(b)s(efore)e(concatenating)j(the)d(k)m(eyw)m(ords.)1905
+5942 y(81)p eop end
+%%Page: 82 90
+TeXDict begin 82 89 bop 0 299 a Fj(82)1169 b Fh(CHAPTER)29
+b(7.)112 b(W)m(ORLD)31 b(COORDINA)-8 b(TE)30 b(SYSTEM)f(R)m(OUTINES)227
+555 y Fj(Selected)h(k)m(eyw)m(ords)e(ma)m(y)h(b)s(e)e(excluded)h(from)g
+(the)g(returned)f(c)m(haracter)j(string.)40 b(If)27 b(the)i(second)f
+(param-)227 668 y(eter)h(\(no)s(commen)m(ts\))g(is)f(TR)m(UE)g
+(\(nonzero\))h(then)e(an)m(y)i(COMMENT,)f(HISTOR)-8 b(Y,)27
+b(or)h(blank)g(k)m(eyw)m(ords)227 781 y(in)i(the)h(header)f(will)h(not)
+f(b)s(e)g(copied)h(to)g(the)g(output)f(string.)227 924
+y(The)25 b('exclist')j(parameter)e(ma)m(y)g(b)s(e)f(used)g(to)h(supply)
+e(a)i(list)h(of)e(k)m(eyw)m(ords)h(that)h(are)f(to)g(b)s(e)f(excluded)g
+(from)227 1037 y(the)k(output)g(c)m(haracter)h(string.)41
+b(Wild)29 b(card)g(c)m(haracters)h(\(*,)g(?,)f(and)g(#\))g(ma)m(y)g(b)s
+(e)f(used)g(in)h(the)g(excluded)227 1150 y(k)m(eyw)m(ord)h(names.)41
+b(If)29 b(no)g(additional)i(k)m(eyw)m(ords)f(are)g(to)g(b)s(e)f
+(excluded,)h(then)f(set)h(nexc)g(=)f(0)h(and)f(sp)s(ecify)227
+1263 y(NULL)i(for)f(the)g(the)h(**exclist)i(parameter.)95
+1478 y Fe(int)47 b(fits_hdr2str)286 1591 y(\(fitsfile)f(*fptr,)g(int)h
+(nocomments,)d(char)j(**exclist,)e(int)i(nexc,)286 1704
+y(>)h(char)e(**header,)g(int)h(*nkeys,)e(int)i(*status\))95
+1930 y(int)g(fits_convert_hdr2str)c(/)k(ffcnvthdr2str)286
+2043 y(\(fitsfile)f(*fptr,)g(int)h(nocomments,)d(char)j(**exclist,)e
+(int)i(nexc,)286 2155 y(>)h(char)e(**header,)g(int)h(*nkeys,)e(int)i
+(*status\))0 2371 y Fi(2)81 b Fj(The)24 b(follo)m(wing)j(CFITSIO)d
+(routine)i(is)f(sp)s(eci\014cally)h(designed)f(for)h(use)f(in)g
+(conjunction)g(with)g(the)h(W)m(CSLIB)227 2484 y(library)-8
+b(.)40 b(It)27 b(is)h(not)f(exp)s(ected)h(that)g(applications)g
+(programmers)f(will)h(call)g(this)f(routine)h(directly)-8
+b(,)29 b(but)d(it)227 2597 y(is)33 b(do)s(cumen)m(ted)g(here)g(for)g
+(completeness.)50 b(This)33 b(routine)g(extracts)h(arra)m(ys)g(from)e
+(a)i(binary)e(table)i(that)227 2710 y(con)m(tain)i(W)m(CS)e
+(information)h(using)f(the)g(-T)-8 b(AB)36 b(table)f(lo)s(okup)f(con)m
+(v)m(en)m(tion.)55 b(See)35 b(the)f(do)s(cumen)m(tation)227
+2822 y(pro)m(vided)c(with)g(the)h(W)m(CSLIB)f(library)g(for)g(more)h
+(information.)95 3038 y Fe(int)47 b(fits_read_wcstab)334
+3151 y(\(fitsfile)e(*fptr,)h(int)h(nwtb,)g(wtbarr)f(*wtb,)g(int)h
+(*status\);)0 3477 y Ff(7.1)180 b(Self-con)l(tained)46
+b(W)l(CS)f(Routines)0 3728 y Fj(The)21 b(follo)m(wing)i(routines)e(DO)g
+(NOT)g(supp)s(ort)f(the)h(more)h(recen)m(t)g(W)m(CS)f(con)m(v)m(en)m
+(tions)j(that)d(ha)m(v)m(e)i(b)s(een)e(appro)m(v)m(ed)0
+3841 y(as)34 b(part)g(of)g(the)g(FITS)f(standard.)50
+b(Consequen)m(tly)-8 b(,)35 b(the)f(follo)m(wing)i(routines)d(ARE)h(NO)
+m(W)h(DEPRECA)-8 b(TED.)0 3953 y(It)30 b(is)g(STR)m(ONGL)-8
+b(Y)30 b(RECOMMENDED)h(that)g(soft)m(w)m(are)g(dev)m(elop)s(ers)f(not)h
+(use)f(these)g(routines,)g(and)g(instead)0 4066 y(use)g(an)g(external)i
+(W)m(CS)e(library)-8 b(,)31 b(as)f(describ)s(ed)f(in)i(the)f(previous)g
+(section.)0 4227 y(These)21 b(routines)g(are)g(included)f(mainly)h(for)
+g(bac)m(kw)m(ard)g(compatibilit)m(y)j(with)c(existing)i(soft)m(w)m
+(are.)39 b(They)21 b(supp)s(ort)0 4339 y(the)30 b(follo)m(wing)i
+(standard)d(map)g(pro)5 b(jections:)41 b(-SIN,)30 b(-T)-8
+b(AN,)31 b(-AR)m(C,)g(-NCP)-8 b(,)30 b(-GLS,)g(-MER,)h(and)e(-AIT)h
+(\(these)0 4452 y(are)f(the)g(legal)h(v)-5 b(alues)29
+b(for)f(the)h(co)s(ordt)m(yp)s(e)f(parameter\).)41 b(These)28
+b(routines)h(are)g(based)f(on)g(similar)h(functions)f(in)0
+4565 y(Classic)j(AIPS.)f(All)h(the)g(angular)f(quan)m(tities)i(are)f
+(giv)m(en)g(in)f(units)g(of)g(degrees.)0 4781 y Fi(1)81
+b Fj(Get)41 b(the)f(v)-5 b(alues)41 b(of)g(the)f(basic)h(set)g(of)f
+(standard)g(FITS)f(celestial)k(co)s(ordinate)e(system)g(k)m(eyw)m(ords)
+f(from)227 4894 y(the)33 b(header)f(of)h(a)f(FITS)g(image)i(\(i.e.,)g
+(the)f(primary)f(arra)m(y)g(or)h(an)f(IMA)m(GE)i(extension\).)47
+b(These)33 b(v)-5 b(alues)227 5006 y(ma)m(y)35 b(then)f(b)s(e)g(passed)
+f(to)i(the)g(\014ts)p 1462 5006 28 4 v 32 w(pix)p 1618
+5006 V 32 w(to)p 1730 5006 V 34 w(w)m(orld)f(and)g(\014ts)p
+2321 5006 V 32 w(w)m(orld)p 2573 5006 V 33 w(to)p 2686
+5006 V 33 w(pix)g(routines)g(that)h(p)s(erform)e(the)227
+5119 y(co)s(ordinate)f(transformations.)42 b(If)30 b(an)m(y)h(or)f(all)
+i(of)f(the)g(W)m(CS)f(k)m(eyw)m(ords)h(are)g(not)g(presen)m(t,)g(then)g
+(default)227 5232 y(v)-5 b(alues)26 b(will)f(b)s(e)f(returned.)38
+b(If)24 b(the)i(\014rst)e(co)s(ordinate)i(axis)f(is)g(the)g
+(declination-lik)m(e)j(co)s(ordinate,)f(then)e(this)227
+5345 y(routine)31 b(will)f(sw)m(ap)h(them)f(so)h(that)g(the)f
+(longitudinal-lik)m(e)j(co)s(ordinate)e(is)f(returned)g(as)g(the)h
+(\014rst)e(axis.)227 5488 y(The)34 b(\014rst)g(routine)h(\(\013gics\))h
+(returns)e(the)h(primary)f(W)m(CS,)g(whereas)h(the)g(second)g(routine)f
+(returns)g(the)227 5601 y(particular)24 b(v)m(ersion)h(of)f(the)g(W)m
+(CS)f(sp)s(eci\014ed)g(b)m(y)h(the)g('v)m(ersion')h(parameter,)h(whic)m
+(h)d(m)m(uc)m(h)h(b)s(e)f(a)h(c)m(haracter)227 5714 y(ranging)31
+b(from)f('A')h(to)g('Z')f(\(or)h(a)g(blank)f(c)m(haracter,)i(whic)m(h)e
+(is)g(equiv)-5 b(alen)m(t)32 b(to)f(calling)h(\013gics\).)p
+eop end
+%%Page: 83 91
+TeXDict begin 83 90 bop 0 299 a Fh(7.1.)113 b(SELF-CONT)-8
+b(AINED)30 b(W)m(CS)g(R)m(OUTINES)1984 b Fj(83)227 555
+y(If)35 b(the)h(\014le)f(uses)g(the)g(new)m(er)h('CDj)p
+1454 555 28 4 v 32 w(i')g(W)m(CS)f(transformation)h(matrix)g(k)m(eyw)m
+(ords)f(instead)h(of)f(old)h(st)m(yle)227 668 y('CDEL)-8
+b(Tn')37 b(and)f('CR)m(OT)-8 b(A2')38 b(k)m(eyw)m(ords,)h(then)e(this)f
+(routine)h(will)g(calculate)j(and)c(return)g(the)h(v)-5
+b(alues)227 781 y(of)33 b(the)g(equiv)-5 b(alen)m(t)35
+b(old-st)m(yle)f(k)m(eyw)m(ords.)49 b(Note)34 b(that)g(the)f(con)m(v)m
+(ersion)h(from)e(the)i(new-st)m(yle)g(k)m(eyw)m(ords)227
+894 y(to)e(the)f(old-st)m(yle)h(v)-5 b(alues)31 b(is)g(sometimes)g
+(only)g(an)g(appro)m(ximation,)h(so)e(if)h(the)g(appro)m(ximation)h(is)
+e(larger)227 1007 y(than)37 b(an)h(in)m(ternally)g(de\014ned)e
+(threshold)h(lev)m(el,)k(then)c(CFITSIO)f(will)i(still)g(return)e(the)i
+(appro)m(ximate)227 1120 y(W)m(CS)32 b(k)m(eyw)m(ord)h(v)-5
+b(alues,)33 b(but)e(will)h(also)h(return)e(with)h(status)g(=)f(APPR)m
+(O)m(X)p 2908 1120 V 34 w(W)m(CS)p 3149 1120 V 33 w(KEY,)g(to)i(w)m
+(arn)f(the)227 1233 y(calling)k(program)e(that)h(appro)m(ximations)g
+(ha)m(v)m(e)g(b)s(een)f(made.)52 b(It)35 b(is)f(then)g(up)f(to)i(the)f
+(calling)i(program)227 1346 y(to)30 b(decide)g(whether)e(the)h(appro)m
+(ximations)h(are)g(su\016cien)m(tly)f(accurate)i(for)e(the)g
+(particular)g(application,)227 1458 y(or)46 b(whether)e(more)i(precise)
+g(W)m(CS)f(transformations)h(m)m(ust)f(b)s(e)g(p)s(erformed)f(using)g
+(new-st)m(yle)j(W)m(CS)227 1571 y(k)m(eyw)m(ords)31 b(directly)-8
+b(.)95 1824 y Fe(int)47 b(fits_read_img_coord)c(/)k(ffgics)286
+1937 y(\(fitsfile)f(*fptr,)g(>)h(double)f(*xrefval,)g(double)g
+(*yrefval,)334 2050 y(double)g(*xrefpix,)f(double)i(*yrefpix,)e(double)
+h(*xinc,)g(double)g(*yinc,)334 2163 y(double)g(*rot,)h(char)f
+(*coordtype,)f(int)i(*status\))95 2389 y(int)g
+(fits_read_img_coord_versio)o(n)42 b(/)47 b(ffgicsa)286
+2502 y(\(fitsfile)f(*fptr,)g(char)g(version,)g(>)h(double)f(*xrefval,)g
+(double)g(*yrefval,)334 2615 y(double)g(*xrefpix,)f(double)i(*yrefpix,)
+e(double)h(*xinc,)g(double)g(*yinc,)334 2728 y(double)g(*rot,)h(char)f
+(*coordtype,)f(int)i(*status\))0 2981 y Fi(2)81 b Fj(Get)30
+b(the)f(v)-5 b(alues)30 b(of)f(the)h(standard)e(FITS)h(celestial)j(co)s
+(ordinate)e(system)f(k)m(eyw)m(ords)h(from)f(the)g(header)g(of)h(a)227
+3094 y(FITS)23 b(table)i(where)e(the)h(X)g(and)g(Y)g(\(or)g(RA)g(and)f
+(DEC\))h(co)s(ordinates)h(are)f(stored)g(in)f(2)h(separate)h(columns)
+227 3207 y(of)30 b(the)f(table)h(\(as)g(in)f(the)h(Ev)m(en)m(t)g(List)g
+(table)g(format)f(that)h(is)g(often)f(used)g(b)m(y)g(high)g(energy)g
+(astroph)m(ysics)227 3320 y(missions\).)71 b(These)40
+b(v)-5 b(alues)40 b(ma)m(y)h(then)f(b)s(e)f(passed)h(to)h(the)f(\014ts)
+p 2511 3320 V 33 w(pix)p 2668 3320 V 32 w(to)p 2780 3320
+V 34 w(w)m(orld)g(and)g(\014ts)p 3383 3320 V 32 w(w)m(orld)p
+3635 3320 V 33 w(to)p 3748 3320 V 33 w(pix)227 3432 y(routines)31
+b(that)f(p)s(erform)f(the)i(co)s(ordinate)g(transformations.)95
+3685 y Fe(int)47 b(fits_read_tbl_coord)c(/)k(ffgtcs)286
+3798 y(\(fitsfile)f(*fptr,)g(int)h(xcol,)f(int)h(ycol,)f(>)i(double)e
+(*xrefval,)334 3911 y(double)g(*yrefval,)f(double)i(*xrefpix,)e(double)
+h(*yrefpix,)f(double)h(*xinc,)334 4024 y(double)g(*yinc,)g(double)g
+(*rot,)h(char)f(*coordtype,)f(int)i(*status\))0 4277
+y Fi(3)81 b Fj(Calculate)42 b(the)g(celestial)h(co)s(ordinate)f
+(corresp)s(onding)e(to)i(the)f(input)f(X)h(and)g(Y)g(pixel)g(lo)s
+(cation)i(in)e(the)227 4390 y(image.)95 4643 y Fe(int)47
+b(fits_pix_to_world)c(/)48 b(ffwldp)286 4756 y(\(double)e(xpix,)h
+(double)f(ypix,)g(double)g(xrefval,)g(double)g(yrefval,)334
+4869 y(double)g(xrefpix,)g(double)g(yrefpix,)f(double)h(xinc,)h(double)
+f(yinc,)334 4982 y(double)g(rot,)h(char)f(*coordtype,)f(>)j(double)e
+(*xpos,)g(double)g(*ypos,)334 5095 y(int)h(*status\))0
+5348 y Fi(4)81 b Fj(Calculate)42 b(the)g(X)f(and)f(Y)h(pixel)h(lo)s
+(cation)g(corresp)s(onding)e(to)i(the)f(input)f(celestial)k(co)s
+(ordinate)e(in)f(the)227 5461 y(image.)95 5714 y Fe(int)47
+b(fits_world_to_pix)c(/)48 b(ffxypx)p eop end
+%%Page: 84 92
+TeXDict begin 84 91 bop 0 299 a Fj(84)1169 b Fh(CHAPTER)29
+b(7.)112 b(W)m(ORLD)31 b(COORDINA)-8 b(TE)30 b(SYSTEM)f(R)m(OUTINES)286
+555 y Fe(\(double)46 b(xpos,)h(double)f(ypos,)g(double)g(xrefval,)g
+(double)g(yrefval,)334 668 y(double)g(xrefpix,)g(double)g(yrefpix,)f
+(double)h(xinc,)h(double)f(yinc,)334 781 y(double)g(rot,)h(char)f
+(*coordtype,)f(>)j(double)e(*xpix,)g(double)g(*ypix,)334
+894 y(int)h(*status\))p eop end
+%%Page: 85 93
+TeXDict begin 85 92 bop 0 1225 a Fg(Chapter)65 b(8)0
+1687 y Fm(Hierarc)-6 b(hical)76 b(Grouping)h(Routines)0
+2180 y Fj(These)34 b(functions)h(allo)m(w)h(for)e(the)h(creation)h(and)
+e(manipulation)h(of)g(FITS)f(HDU)h(Groups,)h(as)f(de\014ned)e(in)h("A)0
+2293 y(Hierarc)m(hical)f(Grouping)c(Con)m(v)m(en)m(tion)j(for)e(FITS")h
+(b)m(y)f(Jennings,)g(P)m(ence,)h(F)-8 b(olk)32 b(and)e(Sc)m(hlesinger:)
+0 2453 y(h)m(ttp://\014ts.gsfc.nasa.go)m(v/group.h)m(tml)0
+2613 y(A)38 b(group)g(is)g(a)g(collection)j(of)d(HDUs)h(whose)f(asso)s
+(ciation)h(is)g(de\014ned)d(b)m(y)i(a)h Fa(gr)-5 b(ouping)40
+b(table)p Fj(.)65 b(HDUs)38 b(whic)m(h)0 2726 y(are)46
+b(part)f(of)g(a)g(group)g(are)h(referred)e(to)i(as)f
+Fa(memb)-5 b(er)47 b(HDUs)d Fj(or)h(simply)g(as)g Fa(memb)-5
+b(ers)p Fj(.)86 b(Grouping)45 b(table)0 2839 y(mem)m(b)s(er)40
+b(HDUs)i(ma)m(y)f(themselv)m(es)h(b)s(e)f(grouping)f(tables,)45
+b(th)m(us)40 b(allo)m(wing)j(for)e(the)g(construction)g(of)g(op)s(en-)0
+2952 y(ended)30 b(hierarc)m(hies)h(of)f(HDUs.)0 3112
+y(Grouping)c(tables)i(con)m(tain)g(one)f(ro)m(w)g(for)f(eac)m(h)i(mem)m
+(b)s(er)e(HDU.)i(The)e(grouping)g(table)i(columns)e(pro)m(vide)h(iden-)
+0 3225 y(ti\014cation)i(information)f(that)g(allo)m(ws)h(applications)f
+(to)g(reference)g(or)g("p)s(oin)m(t)g(to")g(the)g(mem)m(b)s(er)f(HDUs.)
+40 b(Mem-)0 3338 y(b)s(er)27 b(HDUs)h(are)g(exp)s(ected,)h(but)e(not)h
+(required,)f(to)i(con)m(tain)g(a)f(set)g(of)g(GRPIDn/GRPLCn)f(k)m(eyw)m
+(ords)h(in)f(their)0 3451 y(headers)j(for)h(eac)m(h)g(grouping)g(table)
+g(that)g(they)g(are)g(referenced)g(b)m(y)-8 b(.)41 b(In)30
+b(this)h(sense,)g(the)g(GRPIDn/GRPLCn)0 3563 y(k)m(eyw)m(ords)d("link")
+g(the)g(mem)m(b)s(er)f(HDU)h(bac)m(k)g(to)g(its)g(Grouping)f(table.)41
+b(Note)29 b(that)f(a)f(mem)m(b)s(er)g(HDU)h(need)g(not)0
+3676 y(reside)i(in)g(the)g(same)g(FITS)f(\014le)i(as)f(its)g(grouping)g
+(table,)h(and)e(that)i(a)f(giv)m(en)h(HDU)g(ma)m(y)g(b)s(e)e
+(referenced)h(b)m(y)g(up)0 3789 y(to)h(999)h(grouping)e(tables)h(sim)m
+(ultaneously)-8 b(.)0 3949 y(Grouping)22 b(tables)i(are)f(implemen)m
+(ted)g(as)g(FITS)f(binary)g(tables)h(with)g(up)e(to)j(six)e
+(pre-de\014ned)g(column)g(TTYPEn)0 4062 y(v)-5 b(alues:)36
+b('MEMBER)p 752 4062 28 4 v 34 w(XTENSION',)20 b('MEMBER)p
+1789 4062 V 33 w(NAME',)h('MEMBER)p 2620 4062 V 34 w(VERSION',)f
+('MEMBER)p 3590 4062 V 34 w(POSITION',)0 4175 y('MEMBER)p
+451 4175 V 34 w(URI)p 653 4175 V 32 w(TYPE')g(and)g('MEMBER)p
+1601 4175 V 34 w(LOCA)-8 b(TION'.)20 b(The)f(\014rst)h(three)g(columns)
+g(allo)m(w)i(mem)m(b)s(er)e(HDUs)0 4288 y(to)28 b(b)s(e)f(iden)m
+(ti\014ed)g(b)m(y)g(reference)h(to)g(their)f(XTENSION,)g(EXTNAME)g(and)
+g(EXTVER)g(k)m(eyw)m(ord)g(v)-5 b(alues.)40 b(The)0 4401
+y(fourth)29 b(column)h(allo)m(ws)i(mem)m(b)s(er)d(HDUs)i(to)g(b)s(e)f
+(iden)m(ti\014ed)g(b)m(y)g(HDU)h(p)s(osition)f(within)g(their)g(FITS)g
+(\014le.)40 b(The)0 4514 y(last)f(t)m(w)m(o)g(columns)e(iden)m(tify)h
+(the)g(FITS)f(\014le)h(in)f(whic)m(h)h(the)g(mem)m(b)s(er)f(HDU)h
+(resides,)i(if)d(di\013eren)m(t)i(from)e(the)0 4627 y(grouping)30
+b(table)h(FITS)f(\014le.)0 4787 y(Additional)25 b(user)f(de\014ned)f
+("auxiliary")j(columns)e(ma)m(y)h(also)g(b)s(e)f(included)g(with)g(an)m
+(y)h(grouping)f(table.)39 b(When)25 b(a)0 4900 y(grouping)i(table)i(is)
+f(copied)g(or)f(mo)s(di\014ed)g(the)h(presence)g(of)f(auxiliary)i
+(columns)e(is)h(alw)m(a)m(ys)h(tak)m(en)g(in)m(to)f(accoun)m(t)0
+5013 y(b)m(y)j(the)g(grouping)g(supp)s(ort)f(functions;)h(ho)m(w)m(ev)m
+(er,)i(the)e(grouping)g(supp)s(ort)f(functions)g(cannot)i(directly)g
+(mak)m(e)0 5126 y(use)e(of)h(this)f(data.)0 5286 y(If)44
+b(a)h(grouping)f(table)h(column)f(is)h(de\014ned)e(but)h(the)g(corresp)
+s(onding)g(mem)m(b)s(er)f(HDU)j(information)e(is)h(un-)0
+5399 y(a)m(v)-5 b(ailable)41 b(then)c(a)i(n)m(ull)f(v)-5
+b(alue)39 b(of)f(the)g(appropriate)h(data)f(t)m(yp)s(e)h(is)f(inserted)
+g(in)g(the)g(column)g(\014eld.)64 b(In)m(teger)0 5512
+y(columns)26 b(\(MEMBER)p 811 5512 V 34 w(POSITION,)f(MEMBER)p
+1771 5512 V 34 w(VERSION\))h(are)h(de\014ned)f(with)g(a)h(TNULLn)f(v)-5
+b(alue)27 b(of)g(zero)0 5625 y(\(0\).)41 b(Character)27
+b(\014eld)f(columns)h(\(MEMBER)p 1607 5625 V 34 w(XTENSION,)f(MEMBER)p
+2600 5625 V 33 w(NAME,)i(MEMBER)p 3388 5625 V 34 w(URI)p
+3590 5625 V 32 w(TYPE,)1905 5942 y(85)p eop end
+%%Page: 86 94
+TeXDict begin 86 93 bop 0 299 a Fj(86)1338 b Fh(CHAPTER)29
+b(8.)112 b(HIERAR)m(CHICAL)30 b(GR)m(OUPING)h(R)m(OUTINES)0
+555 y Fj(MEMBER)p 426 555 28 4 v 33 w(LOCA)-8 b(TION\))30
+b(utilize)i(an)e(ASCI)s(I)f(n)m(ull)h(c)m(haracter)i(to)f(denote)g(a)g
+(n)m(ull)f(\014eld)g(v)-5 b(alue.)0 715 y(The)23 b(grouping)g(supp)s
+(ort)f(functions)h(b)s(elong)h(to)g(t)m(w)m(o)h(basic)f(categories:)40
+b(those)24 b(that)h(w)m(ork)e(with)h(grouping)f(table)0
+828 y(HDUs)j(\(\013gt**\))j(and)c(those)h(that)h(w)m(ork)f(with)f(mem)m
+(b)s(er)h(HDUs)g(\(\013gm**\).)41 b(Tw)m(o)26 b(functions,)h(\014ts)p
+3360 828 V 32 w(cop)m(y)p 3573 828 V 34 w(group\(\))0
+941 y(and)40 b(\014ts)p 314 941 V 33 w(remo)m(v)m(e)p
+626 941 V 34 w(group\(\),)k(ha)m(v)m(e)e(the)f(option)g(to)h(recursiv)m
+(ely)f(cop)m(y/delete)j(en)m(tire)e(groups.)71 b(Care)41
+b(should)0 1054 y(b)s(e)33 b(tak)m(en)h(when)f(emplo)m(ying)h(these)g
+(functions)f(in)g(recursiv)m(e)h(mo)s(de)f(as)g(p)s(o)s(orly)g
+(de\014ned)f(groups)h(could)g(cause)0 1167 y(unpredictable)25
+b(results.)39 b(The)25 b(problem)g(of)h(a)g(grouping)f(table)i
+(directly)f(or)g(indirectly)g(referencing)g(itself)g(\(th)m(us)0
+1280 y(creating)41 b(an)f(in\014nite)f(lo)s(op\))i(is)e(protected)i
+(against;)46 b(in)39 b(fact,)44 b(neither)39 b(function)h(will)g
+(attempt)h(to)f(cop)m(y)h(or)0 1393 y(delete)32 b(an)e(HDU)h(t)m(wice.)
+0 1745 y Ff(8.1)135 b(Grouping)45 b(T)-11 b(able)45 b(Routines)0
+1997 y Fi(1)81 b Fj(Create)34 b(\(app)s(end\))f(a)h(grouping)f(table)i
+(at)f(the)g(end)f(of)h(the)g(curren)m(t)f(FITS)g(\014le)h(p)s(oin)m
+(ted)g(to)g(b)m(y)g(fptr.)49 b(The)227 2110 y(grpname)28
+b(parameter)h(pro)m(vides)g(the)g(grouping)f(table)h(name)g(\(GRPNAME)g
+(k)m(eyw)m(ord)g(v)-5 b(alue\))29 b(and)f(ma)m(y)227
+2223 y(b)s(e)42 b(set)h(to)g(NULL)f(if)g(no)g(group)g(name)g(is)h(to)g
+(b)s(e)e(sp)s(eci\014ed.)76 b(The)42 b(groupt)m(yp)s(e)g(parameter)g
+(sp)s(eci\014es)227 2336 y(the)c(desired)g(structure)f(of)h(the)g
+(grouping)f(table)i(and)e(ma)m(y)i(tak)m(e)g(on)f(the)g(v)-5
+b(alues:)56 b(GT)p 3355 2336 V 33 w(ID)p 3490 2336 V
+33 w(ALL)p 3705 2336 V 32 w(URI)227 2449 y(\(all)35 b(columns)e
+(created\),)j(GT)p 1274 2449 V 33 w(ID)p 1409 2449 V
+33 w(REF)d(\(ID)h(b)m(y)g(reference)g(columns\),)g(GT)p
+2904 2449 V 33 w(ID)p 3039 2449 V 33 w(POS)e(\(ID)i(b)m(y)g(p)s
+(osition)227 2562 y(columns\),)48 b(GT)p 801 2562 V 32
+w(ID)p 935 2562 V 33 w(ALL)c(\(ID)g(b)m(y)f(reference)i(and)e(p)s
+(osition)g(columns\),)48 b(GT)p 3028 2562 V 32 w(ID)p
+3162 2562 V 33 w(REF)p 3383 2562 V 33 w(URI)c(\(ID)g(b)m(y)227
+2674 y(reference)35 b(and)e(FITS)g(\014le)i(URI)e(columns\),)j(and)d
+(GT)p 2129 2674 V 33 w(ID)p 2264 2674 V 33 w(POS)p 2481
+2674 V 32 w(URI)h(\(ID)g(b)m(y)g(p)s(osition)g(and)g(FITS)f(\014le)227
+2787 y(URI)e(columns\).)95 3063 y Fe(int)47 b(fits_create_group)c(/)48
+b(ffgtcr)286 3176 y(\(fitsfile)e(*fptr,)g(char)g(*grpname,)g(int)h
+(grouptype,)e(>)i(int)g(*status\))0 3451 y Fi(2)81 b
+Fj(Create)26 b(\(insert\))g(a)f(grouping)g(table)h(just)f(after)h(the)f
+(CHDU)h(of)g(the)f(curren)m(t)g(FITS)g(\014le)g(p)s(oin)m(ted)g(to)h(b)
+m(y)g(fptr.)227 3564 y(All)k(HDUs)f(b)s(elo)m(w)g(the)g(the)g
+(insertion)g(p)s(oin)m(t)f(will)i(b)s(e)e(shifted)g(do)m(wn)m(w)m(ards)
+g(to)i(mak)m(e)g(ro)s(om)e(for)g(the)h(new)227 3677 y(HDU.)23
+b(The)e(grpname)h(parameter)g(pro)m(vides)f(the)h(grouping)g(table)g
+(name)g(\(GRPNAME)h(k)m(eyw)m(ord)f(v)-5 b(alue\))227
+3790 y(and)25 b(ma)m(y)i(b)s(e)e(set)h(to)h(NULL)e(if)h(no)g(group)f
+(name)h(is)g(to)g(b)s(e)f(sp)s(eci\014ed.)39 b(The)25
+b(groupt)m(yp)s(e)h(parameter)g(sp)s(eci-)227 3903 y(\014es)g(the)h
+(desired)f(structure)g(of)h(the)f(grouping)g(table)i(and)e(ma)m(y)h
+(tak)m(e)h(on)e(the)h(v)-5 b(alues:)39 b(GT)p 3355 3903
+V 33 w(ID)p 3490 3903 V 33 w(ALL)p 3705 3903 V 32 w(URI)227
+4016 y(\(all)c(columns)e(created\),)j(GT)p 1274 4016
+V 33 w(ID)p 1409 4016 V 33 w(REF)d(\(ID)h(b)m(y)g(reference)g
+(columns\),)g(GT)p 2904 4016 V 33 w(ID)p 3039 4016 V
+33 w(POS)e(\(ID)i(b)m(y)g(p)s(osition)227 4129 y(columns\),)29
+b(GT)p 782 4129 V 33 w(ID)p 917 4129 V 33 w(ALL)f(\(ID)g(b)m(y)g
+(reference)h(and)e(p)s(osition)h(columns\),)h(GT)p 2897
+4129 V 33 w(ID)p 3032 4129 V 33 w(REF)p 3253 4129 V 32
+w(URI)f(\(ID)h(b)m(y)f(ref-)227 4242 y(erence)g(and)e(FITS)h(\014le)g
+(URI)g(columns\),)h(and)e(GT)p 1976 4242 V 33 w(ID)p
+2111 4242 V 33 w(POS)p 2328 4242 V 32 w(URI)h(\(ID)g(b)m(y)g(p)s
+(osition)g(and)g(FITS)f(\014le)h(URI)227 4355 y(columns\))k(.)95
+4630 y Fe(int)47 b(fits_insert_group)c(/)48 b(ffgtis)286
+4743 y(\(fitsfile)e(*fptr,)g(char)g(*grpname,)g(int)h(grouptype,)e(>)i
+(int)g(*status\))0 5019 y Fi(3)81 b Fj(Change)20 b(the)h(structure)f
+(of)h(an)g(existing)g(grouping)g(table)g(p)s(oin)m(ted)g(to)g(b)m(y)g
+(gfptr.)37 b(The)20 b(groupt)m(yp)s(e)g(parameter)227
+5132 y(\(see)27 b(\014ts)p 532 5132 V 32 w(create)p 800
+5132 V 35 w(group\(\))e(for)h(v)-5 b(alid)26 b(parameter)g(v)-5
+b(alues\))26 b(sp)s(eci\014es)g(the)f(new)g(structure)h(of)f(the)h
+(grouping)227 5245 y(table.)44 b(This)30 b(function)h(only)g(adds)g(or)
+g(remo)m(v)m(es)h(grouping)f(table)h(columns,)f(it)h(do)s(es)f(not)g
+(add)g(or)g(delete)227 5357 y(group)26 b(mem)m(b)s(ers)f(\(i.e.,)k
+(table)e(ro)m(ws\).)40 b(If)26 b(the)g(grouping)g(table)h(already)g
+(has)f(the)h(desired)e(structure)h(then)227 5470 y(no)35
+b(op)s(erations)f(are)h(p)s(erformed)e(and)h(function)g(simply)h
+(returns)e(with)h(a)h(\(0\))g(success)g(status)g(co)s(de.)53
+b(If)227 5583 y(the)32 b(requested)g(structure)g(c)m(hange)h(creates)g
+(new)f(grouping)g(table)h(columns,)f(then)g(the)g(column)g(v)-5
+b(alues)227 5696 y(for)30 b(all)i(existing)f(mem)m(b)s(ers)f(will)g(b)s
+(e)g(\014lled)g(with)g(the)h(n)m(ull)f(v)-5 b(alues)31
+b(appropriate)f(to)h(the)g(column)f(t)m(yp)s(e.)p eop
+end
+%%Page: 87 95
+TeXDict begin 87 94 bop 0 299 a Fh(8.1.)72 b(GR)m(OUPING)31
+b(T)-8 b(ABLE)31 b(R)m(OUTINES)2235 b Fj(87)95 555 y
+Fe(int)47 b(fits_change_group)c(/)48 b(ffgtch)286 668
+y(\(fitsfile)e(*gfptr,)f(int)i(grouptype,)e(>)j(int)f(*status\))0
+905 y Fi(4)81 b Fj(Remo)m(v)m(e)41 b(the)e(group)g(de\014ned)f(b)m(y)h
+(the)h(grouping)f(table)h(p)s(oin)m(ted)f(to)h(b)m(y)g(gfptr,)h(and)e
+(optionally)i(all)f(the)227 1018 y(group)29 b(mem)m(b)s(er)f(HDUs.)41
+b(The)28 b(rmopt)h(parameter)g(sp)s(eci\014es)g(the)g(action)h(to)g(b)s
+(e)e(tak)m(en)i(for)f(all)h(mem)m(b)s(ers)227 1131 y(of)d(the)g(group)g
+(de\014ned)e(b)m(y)i(the)g(grouping)g(table.)40 b(V)-8
+b(alid)28 b(v)-5 b(alues)27 b(are:)40 b(OPT)p 2848 1131
+28 4 v 32 w(RM)p 3030 1131 V 33 w(GPT)26 b(\(delete)j(only)e(the)227
+1244 y(grouping)33 b(table\))i(and)e(OPT)p 1259 1244
+V 32 w(RM)p 1441 1244 V 33 w(ALL)g(\(recursiv)m(ely)h(delete)h(all)f
+(HDUs)g(that)g(b)s(elong)f(to)h(the)g(group\).)227 1357
+y(An)m(y)d(groups)g(con)m(taining)i(the)e(grouping)g(table)h(gfptr)e
+(as)i(a)f(mem)m(b)s(er)g(are)g(up)s(dated,)f(and)h(if)g(rmopt)g(==)227
+1470 y(OPT)p 431 1470 V 32 w(RM)p 613 1470 V 33 w(GPT)21
+b(all)h(mem)m(b)s(ers)f(ha)m(v)m(e)h(their)f(GRPIDn)g(and)g(GRPLCn)f(k)
+m(eyw)m(ords)h(up)s(dated)f(accordingly)-8 b(.)227 1582
+y(If)36 b(rmopt)g(==)g(OPT)p 985 1582 V 32 w(RM)p 1167
+1582 V 33 w(ALL,)g(then)g(other)h(groups)e(that)i(con)m(tain)h(the)e
+(deleted)h(mem)m(b)s(ers)f(of)g(gfptr)227 1695 y(are)31
+b(up)s(dated)e(to)i(re\015ect)g(the)g(deletion)g(accordingly)-8
+b(.)95 1932 y Fe(int)47 b(fits_remove_group)c(/)48 b(ffgtrm)286
+2045 y(\(fitsfile)e(*gfptr,)f(int)i(rmopt,)f(>)i(int)f(*status\))0
+2282 y Fi(5)81 b Fj(Cop)m(y)28 b(\(app)s(end\))g(the)h(group)f
+(de\014ned)g(b)m(y)h(the)f(grouping)h(table)h(p)s(oin)m(ted)e(to)i(b)m
+(y)e(infptr,)h(and)f(optionally)i(all)227 2395 y(group)g(mem)m(b)s(er)h
+(HDUs,)g(to)h(the)f(FITS)f(\014le)g(p)s(oin)m(ted)h(to)h(b)m(y)e
+(outfptr.)41 b(The)31 b(cp)s(opt)f(parameter)h(sp)s(eci\014es)227
+2508 y(the)c(action)h(to)f(b)s(e)f(tak)m(en)h(for)g(all)g(mem)m(b)s
+(ers)f(of)g(the)h(group)f(infptr.)38 b(V)-8 b(alid)28
+b(v)-5 b(alues)26 b(are:)40 b(OPT)p 3443 2508 V 32 w(GCP)p
+3674 2508 V 32 w(GPT)227 2621 y(\(cop)m(y)d(only)g(the)f(grouping)g
+(table\))h(and)e(OPT)p 1887 2621 V 32 w(GCP)p 2118 2621
+V 33 w(ALL)h(\(recursiv)m(ely)h(cop)m(y)g(ALL)e(the)i(HDUs)f(that)227
+2734 y(b)s(elong)24 b(to)g(the)g(group)f(de\014ned)g(b)m(y)g(infptr\).)
+38 b(If)23 b(the)h(cp)s(opt)g(==)f(OPT)p 2618 2734 V
+32 w(GCP)p 2849 2734 V 32 w(GPT)h(then)f(the)h(mem)m(b)s(ers)f(of)227
+2847 y(infptr)i(ha)m(v)m(e)h(their)g(GRPIDn)f(and)g(GRPLCn)g(k)m(eyw)m
+(ords)h(up)s(dated)e(to)i(re\015ect)g(the)g(existence)h(of)f(the)f(new)
+227 2960 y(grouping)f(table)g(outfptr,)h(since)f(they)g(no)m(w)g(b)s
+(elong)g(to)g(the)g(new)g(group.)38 b(If)23 b(cp)s(opt)h(==)f(OPT)p
+3460 2960 V 32 w(GCP)p 3691 2960 V 32 w(ALL)227 3073
+y(then)29 b(the)g(new)g(grouping)g(table)h(outfptr)e(only)h(con)m
+(tains)i(p)s(oin)m(ters)e(to)h(the)f(copied)g(mem)m(b)s(er)g(HDUs)h
+(and)227 3185 y(not)38 b(the)g(original)g(mem)m(b)s(er)f(HDUs)h(of)g
+(infptr.)61 b(Note)39 b(that,)h(when)d(cp)s(opt)g(==)g(OPT)p
+3301 3185 V 32 w(GCP)p 3532 3185 V 33 w(ALL,)g(all)227
+3298 y(mem)m(b)s(ers)h(of)h(the)f(group)g(de\014ned)f(b)m(y)i(infptr)e
+(will)i(b)s(e)e(copied)i(to)g(a)g(single)g(FITS)f(\014le)h(p)s(oin)m
+(ted)f(to)h(b)m(y)227 3411 y(outfptr)30 b(regardless)h(of)f(their)h
+(\014le)f(distribution)g(in)g(the)h(original)g(group.)95
+3648 y Fe(int)47 b(fits_copy_group)d(/)j(ffgtcp)286 3761
+y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(int)i(cpopt,)f(>)h
+(int)g(*status\))0 3998 y Fi(6)81 b Fj(Merge)40 b(the)f(t)m(w)m(o)h
+(groups)e(de\014ned)g(b)m(y)h(the)g(grouping)g(table)g(HDUs)h(infptr)e
+(and)g(outfptr)h(b)m(y)f(com)m(bining)227 4111 y(their)30
+b(mem)m(b)s(ers)f(in)m(to)i(a)f(single)g(grouping)f(table.)42
+b(All)30 b(mem)m(b)s(er)f(HDUs)h(\(ro)m(ws\))h(are)f(copied)g(from)f
+(infptr)227 4224 y(to)f(outfptr.)39 b(If)26 b(mgopt)i(==)e(OPT)p
+1419 4224 V 32 w(MR)m(G)p 1669 4224 V 34 w(COPY)g(then)g(infptr)g(con)m
+(tin)m(ues)i(to)g(exist)g(unaltered)e(after)i(the)227
+4337 y(merge.)57 b(If)36 b(the)f(mgopt)i(==)e(OPT)p 1474
+4337 V 31 w(MR)m(G)p 1723 4337 V 34 w(MO)m(V)i(then)e(infptr)f(is)i
+(deleted)h(after)f(the)g(merge.)57 b(In)35 b(b)s(oth)227
+4450 y(cases,)d(the)e(GRPIDn)h(and)e(GRPLCn)h(k)m(eyw)m(ords)g(of)h
+(the)g(mem)m(b)s(er)e(HDUs)i(are)g(up)s(dated)e(accordingly)-8
+b(.)95 4687 y Fe(int)47 b(fits_merge_groups)c(/)48 b(ffgtmg)286
+4799 y(\(fitsfile)e(*infptr,)f(fitsfile)h(*outfptr,)f(int)i(mgopt,)f(>)
+h(int)g(*status\))0 5036 y Fi(7)81 b Fj("Compact")24
+b(the)f(group)g(de\014ned)f(b)m(y)h(grouping)f(table)i(p)s(oin)m(ted)f
+(to)h(b)m(y)f(gfptr.)38 b(The)22 b(compaction)j(is)e(ac)m(hiev)m(ed)227
+5149 y(b)m(y)37 b(merging)h(\(via)g(\014ts)p 1034 5149
+V 32 w(merge)p 1303 5149 V 34 w(groups\(\)\))f(all)h(direct)g(mem)m(b)s
+(er)f(HDUs)g(of)h(gfptr)e(that)i(are)g(themselv)m(es)227
+5262 y(grouping)i(tables.)70 b(The)40 b(cmopt)g(parameter)h(de\014nes)e
+(whether)g(the)i(merged)f(grouping)f(table)i(HDUs)227
+5375 y(remain)j(after)h(merging)f(\(cmopt)h(==)f(OPT)p
+1852 5375 V 32 w(CMT)p 2099 5375 V 32 w(MBR\))h(or)f(if)g(they)h(are)f
+(deleted)h(after)g(merging)227 5488 y(\(cmopt)31 b(==)f(OPT)p
+916 5488 V 32 w(CMT)p 1163 5488 V 32 w(MBR)p 1409 5488
+V 34 w(DEL\).)g(If)g(the)h(grouping)e(table)j(con)m(tains)f(no)f
+(direct)h(mem)m(b)s(er)e(HDUs)227 5601 y(that)i(are)f(themselv)m(es)h
+(grouping)e(tables)i(then)e(this)h(function)f(do)s(es)h(nothing.)40
+b(Note)31 b(that)g(this)e(function)227 5714 y(is)i(not)f(recursiv)m(e,)
+h(i.e.,)h(only)f(the)f(direct)h(mem)m(b)s(er)f(HDUs)h(of)f(gfptr)g(are)
+h(considered)f(for)g(merging.)p eop end
+%%Page: 88 96
+TeXDict begin 88 95 bop 0 299 a Fj(88)1338 b Fh(CHAPTER)29
+b(8.)112 b(HIERAR)m(CHICAL)30 b(GR)m(OUPING)h(R)m(OUTINES)95
+555 y Fe(int)47 b(fits_compact_group)c(/)48 b(ffgtcm)286
+668 y(\(fitsfile)e(*gfptr,)f(int)i(cmopt,)f(>)i(int)f(*status\))0
+945 y Fi(8)81 b Fj(V)-8 b(erify)21 b(the)h(in)m(tegrit)m(y)h(of)e(the)g
+(grouping)g(table)h(p)s(oin)m(ted)f(to)h(b)m(y)f(gfptr)g(to)h(mak)m(e)g
+(sure)e(that)i(all)g(group)f(mem)m(b)s(ers)227 1058 y(are)31
+b(accessible)i(and)d(that)h(all)g(links)g(to)g(other)g(grouping)f
+(tables)i(are)f(v)-5 b(alid.)42 b(The)30 b(\014rstfailed)g(parameter)
+227 1171 y(returns)c(the)i(mem)m(b)s(er)e(ID)h(\(ro)m(w)h(n)m(um)m(b)s
+(er\))e(of)i(the)f(\014rst)f(mem)m(b)s(er)h(HDU)h(to)g(fail)g(v)m
+(eri\014cation)g(\(if)g(p)s(ositiv)m(e)227 1284 y(v)-5
+b(alue\))36 b(or)e(the)h(\014rst)e(group)h(link)g(to)i(fail)f(\(if)f
+(negativ)m(e)j(v)-5 b(alue\).)54 b(If)34 b(gfptr)g(is)g(successfully)h
+(v)m(eri\014ed)f(then)227 1397 y(\014rstfailed)d(con)m(tains)g(a)g
+(return)e(v)-5 b(alue)31 b(of)g(0.)95 1673 y Fe(int)47
+b(fits_verify_group)c(/)48 b(ffgtvf)286 1786 y(\(fitsfile)e(*gfptr,)f
+(>)j(long)f(*firstfailed,)d(int)j(*status\))0 2063 y
+Fi(9)81 b Fj(Op)s(en)23 b(a)j(grouping)f(table)h(that)g(con)m(tains)g
+(the)g(mem)m(b)s(er)e(HDU)i(p)s(oin)m(ted)f(to)h(b)m(y)f(mfptr.)38
+b(The)25 b(grouping)g(table)227 2176 y(to)39 b(op)s(en)e(is)h
+(de\014ned)f(b)m(y)h(the)g(grpid)f(parameter,)j(whic)m(h)e(con)m(tains)
+h(the)f(k)m(eyw)m(ord)h(index)e(v)-5 b(alue)39 b(of)f(the)227
+2289 y(GRPIDn/GRPLCn)d(k)m(eyw)m(ord\(s\))g(that)h(link)f(the)g(mem)m
+(b)s(er)f(HDU)h(mfptr)f(to)i(the)f(grouping)f(table.)55
+b(If)227 2402 y(the)30 b(grouping)f(table)h(resides)f(in)h(a)f(\014le)h
+(other)f(than)h(the)f(mem)m(b)s(er)g(HDUs)h(\014le)f(then)g(an)h
+(attempt)g(is)g(\014rst)227 2515 y(made)f(to)h(op)s(en)e(the)h(\014le)g
+(readwrite,)h(and)e(failing)i(that)g(readonly)-8 b(.)40
+b(A)29 b(p)s(oin)m(ter)g(to)h(the)f(op)s(ened)f(grouping)227
+2628 y(table)k(HDU)f(is)f(returned)f(in)h(gfptr.)227
+2786 y(Note)35 b(that)g(it)f(is)g(p)s(ossible,)g(although)h(unlik)m
+(ely)f(and)f(undesirable,)h(for)g(the)g(GRPIDn/GRPLCn)f(k)m(ey-)227
+2899 y(w)m(ords)k(in)g(a)g(mem)m(b)s(er)g(HDU)h(header)f(to)h(b)s(e)e
+(non-con)m(tin)m(uous,)k(e.g.,)g(GRPID1,)g(GRPID2,)g(GRPID5,)227
+3012 y(GRPID6.)i(In)29 b(suc)m(h)g(cases,)i(the)f(grpid)f(index)g(v)-5
+b(alue)31 b(sp)s(eci\014ed)e(in)g(the)h(function)f(call)j(shall)e(iden)
+m(tify)g(the)227 3125 y(\(grpid\)th)36 b(GRPID)f(v)-5
+b(alue.)57 b(In)34 b(the)i(ab)s(o)m(v)m(e)h(example,)g(if)f(grpid)e(==)
+h(3,)j(then)d(the)g(group)g(sp)s(eci\014ed)g(b)m(y)227
+3238 y(GRPID5)c(w)m(ould)g(b)s(e)e(op)s(ened.)95 3515
+y Fe(int)47 b(fits_open_group)d(/)j(ffgtop)286 3628 y(\(fitsfile)f
+(*mfptr,)f(int)i(group,)f(>)i(fitsfile)d(**gfptr,)h(int)h(*status\))0
+3905 y Fi(10)f Fj(Add)38 b(a)h(mem)m(b)s(er)f(HDU)i(to)f(an)g(existing)
+g(grouping)g(table)h(p)s(oin)m(ted)e(to)i(b)m(y)e(gfptr.)66
+b(The)38 b(mem)m(b)s(er)g(HDU)227 4017 y(ma)m(y)30 b(either)g(b)s(e)f
+(p)s(oin)m(ted)g(to)h(mfptr)f(\(whic)m(h)g(m)m(ust)h(b)s(e)e(p)s
+(ositioned)i(to)g(the)f(mem)m(b)s(er)g(HDU\))i(or,)f(if)f(mfptr)227
+4130 y(==)36 b(NULL,)g(iden)m(ti\014ed)g(b)m(y)g(the)g(hdup)s(os)e
+(parameter)i(\(the)h(HDU)g(p)s(osition)f(n)m(um)m(b)s(er,)g(Primary)f
+(arra)m(y)227 4243 y(==)f(1\))i(if)f(b)s(oth)f(the)h(grouping)g(table)g
+(and)g(the)g(mem)m(b)s(er)f(HDU)h(reside)g(in)g(the)g(same)g(FITS)f
+(\014le.)54 b(The)227 4356 y(new)27 b(mem)m(b)s(er)f(HDU)h(shall)g(ha)m
+(v)m(e)h(the)f(appropriate)g(GRPIDn)f(and)g(GRPLCn)g(k)m(eyw)m(ords)h
+(created)h(in)f(its)227 4469 y(header.)44 b(Note)33 b(that)f(if)g(the)g
+(mem)m(b)s(er)e(HDU)j(is)e(already)h(a)g(mem)m(b)s(er)f(of)h(the)g
+(group)f(then)g(it)h(will)g(not)g(b)s(e)227 4582 y(added)e(a)h(second)f
+(time.)95 4859 y Fe(int)47 b(fits_add_group_member)42
+b(/)48 b(ffgtam)286 4972 y(\(fitsfile)e(*gfptr,)f(fitsfile)h(*mfptr,)g
+(int)h(hdupos,)f(>)h(int)g(*status\))0 5325 y Ff(8.2)135
+b(Group)45 b(Mem)l(b)t(er)f(Routines)0 5578 y Fi(1)81
+b Fj(Return)29 b(the)h(n)m(um)m(b)s(er)f(of)i(mem)m(b)s(er)e(HDUs)i(in)
+f(a)h(grouping)e(table)j(gfptr.)40 b(The)30 b(n)m(um)m(b)s(er)e(mem)m
+(b)s(er)i(HDUs)h(is)227 5691 y(just)f(the)h(NAXIS2)f(v)-5
+b(alue)31 b(\(n)m(um)m(b)s(er)f(of)g(ro)m(ws\))h(of)f(the)h(grouping)f
+(table.)p eop end
+%%Page: 89 97
+TeXDict begin 89 96 bop 0 299 a Fh(8.2.)72 b(GR)m(OUP)31
+b(MEMBER)g(R)m(OUTINES)2295 b Fj(89)95 555 y Fe(int)47
+b(fits_get_num_members)c(/)k(ffgtnm)286 668 y(\(fitsfile)f(*gfptr,)f(>)
+j(long)f(*nmembers,)e(int)h(*status\))0 945 y Fi(2)81
+b Fj(Return)34 b(the)h(n)m(um)m(b)s(er)f(of)i(groups)e(to)i(whic)m(h)f
+(the)g(HDU)h(p)s(oin)m(ted)f(to)h(b)m(y)f(mfptr)f(is)i(link)m(ed,)h(as)
+e(de\014ned)f(b)m(y)227 1058 y(the)27 b(n)m(um)m(b)s(er)f(of)h
+(GRPIDn/GRPLCn)f(k)m(eyw)m(ord)i(records)e(that)i(app)s(ear)e(in)g(its)
+i(header.)39 b(Note)28 b(that)g(eac)m(h)227 1171 y(time)37
+b(this)g(function)f(is)g(called,)k(the)c(indices)h(of)g(the)f
+(GRPIDn/GRPLCn)g(k)m(eyw)m(ords)h(are)g(c)m(hec)m(k)m(ed)h(to)227
+1284 y(mak)m(e)29 b(sure)e(they)g(are)h(con)m(tin)m(uous)g(\(ie)h(no)e
+(gaps\))h(and)f(are)h(re-en)m(umerated)g(to)h(eliminate)g(gaps)f(if)f
+(found.)95 1674 y Fe(int)47 b(fits_get_num_groups)c(/)k(ffgmng)286
+1787 y(\(fitsfile)f(*mfptr,)f(>)j(long)f(*nmembers,)e(int)h(*status\))0
+2063 y Fi(3)81 b Fj(Op)s(en)26 b(a)i(mem)m(b)s(er)f(of)h(the)f
+(grouping)h(table)g(p)s(oin)m(ted)g(to)g(b)m(y)g(gfptr.)39
+b(The)27 b(mem)m(b)s(er)g(to)i(op)s(en)e(is)g(iden)m(ti\014ed)h(b)m(y)
+227 2176 y(its)i(ro)m(w)g(n)m(um)m(b)s(er)e(within)h(the)g(grouping)h
+(table)g(as)g(giv)m(en)g(b)m(y)g(the)f(parameter)h('mem)m(b)s(er')f
+(\(\014rst)h(mem)m(b)s(er)227 2289 y(==)g(1\))g(.)41
+b(A)30 b(\014ts\014le)f(p)s(oin)m(ter)h(to)h(the)f(op)s(ened)f(mem)m(b)
+s(er)g(HDU)i(is)f(returned)f(as)h(mfptr.)39 b(Note)31
+b(that)g(if)f(the)227 2402 y(mem)m(b)s(er)e(HDU)h(resides)g(in)f(a)h
+(FITS)f(\014le)g(di\013eren)m(t)h(from)f(the)h(grouping)f(table)h(HDU)h
+(then)e(the)h(mem)m(b)s(er)227 2515 y(\014le)i(is)f(\014rst)g(op)s
+(ened)f(readwrite)i(and,)f(failing)h(this,)g(op)s(ened)e(readonly)-8
+b(.)95 2792 y Fe(int)47 b(fits_open_member)d(/)j(ffgmop)286
+2905 y(\(fitsfile)f(*gfptr,)f(long)i(member,)f(>)h(fitsfile)f(**mfptr,)
+f(int)i(*status\))0 3182 y Fi(4)81 b Fj(Cop)m(y)27 b(\(app)s(end\))f(a)
+i(mem)m(b)s(er)f(HDU)h(of)f(the)h(grouping)e(table)j(p)s(oin)m(ted)e
+(to)h(b)m(y)f(gfptr.)39 b(The)27 b(mem)m(b)s(er)g(HDU)h(is)227
+3295 y(iden)m(ti\014ed)33 b(b)m(y)g(its)h(ro)m(w)f(n)m(um)m(b)s(er)e
+(within)i(the)g(grouping)g(table)g(as)h(giv)m(en)g(b)m(y)e(the)i
+(parameter)f('mem)m(b)s(er')227 3408 y(\(\014rst)j(mem)m(b)s(er)f(==)g
+(1\).)58 b(The)35 b(cop)m(y)i(of)f(the)g(group)f(mem)m(b)s(er)g(HDU)i
+(will)f(b)s(e)f(app)s(ended)f(to)j(the)f(FITS)227 3521
+y(\014le)29 b(p)s(oin)m(ted)g(to)g(b)m(y)f(mfptr,)h(and)f(up)s(on)f
+(return)g(mfptr)h(shall)h(p)s(oin)m(t)f(to)i(the)f(copied)g(mem)m(b)s
+(er)f(HDU.)h(The)227 3633 y(cp)s(opt)e(parameter)h(ma)m(y)g(tak)m(e)h
+(on)e(the)g(follo)m(wing)i(v)-5 b(alues:)40 b(OPT)p 2465
+3633 28 4 v 32 w(MCP)p 2708 3633 V 32 w(ADD)29 b(whic)m(h)e(adds)f(a)i
+(new)f(en)m(try)227 3746 y(in)d(gfptr)g(for)f(the)i(copied)f(mem)m(b)s
+(er)g(HDU,)h(OPT)p 1907 3746 V 31 w(MCP)p 2149 3746 V
+33 w(NADD)g(whic)m(h)f(do)s(es)g(not)g(add)f(an)h(en)m(try)h(in)e
+(gfptr)227 3859 y(for)i(the)h(copied)f(mem)m(b)s(er,)h(and)f(OPT)p
+1536 3859 V 32 w(MCP)p 1779 3859 V 32 w(REPL)g(whic)m(h)g(replaces)h
+(the)f(original)h(mem)m(b)s(er)f(en)m(try)g(with)227
+3972 y(the)31 b(copied)g(mem)m(b)s(er)e(en)m(try)-8 b(.)95
+4249 y Fe(int)47 b(fits_copy_member)d(/)j(ffgmcp)286
+4362 y(\(fitsfile)f(*gfptr,)f(fitsfile)h(*mfptr,)g(long)g(member,)g
+(int)h(cpopt,)f(>)i(int)f(*status\))0 4639 y Fi(5)81
+b Fj(T)-8 b(ransfer)34 b(a)i(group)f(mem)m(b)s(er)f(HDU)i(from)f(the)h
+(grouping)f(table)h(p)s(oin)m(ted)f(to)h(b)m(y)f(infptr)g(to)h(the)f
+(grouping)227 4752 y(table)i(p)s(oin)m(ted)f(to)h(b)m(y)f(outfptr.)58
+b(The)35 b(mem)m(b)s(er)h(HDU)h(to)f(transfer)g(is)g(iden)m(ti\014ed)g
+(b)m(y)g(its)h(ro)m(w)f(n)m(um)m(b)s(er)227 4865 y(within)42
+b(infptr)f(as)i(sp)s(eci\014ed)f(b)m(y)g(the)h(parameter)g('mem)m(b)s
+(er')f(\(\014rst)g(mem)m(b)s(er)g(==)f(1\).)78 b(If)42
+b(tfopt)h(==)227 4978 y(OPT)p 431 4978 V 32 w(MCP)p 674
+4978 V 33 w(ADD)26 b(then)f(the)h(mem)m(b)s(er)e(HDU)i(is)g(made)f(a)h
+(mem)m(b)s(er)f(of)g(outfptr)g(and)g(remains)g(a)h(mem)m(b)s(er)227
+5091 y(of)34 b(infptr.)51 b(If)34 b(tfopt)g(==)g(OPT)p
+1339 5091 V 32 w(MCP)p 1582 5091 V 32 w(MO)m(V)h(then)f(the)g(mem)m(b)s
+(er)f(HDU)i(is)f(deleted)h(from)e(infptr)g(after)227
+5204 y(the)e(transfer)f(to)h(outfptr.)95 5480 y Fe(int)47
+b(fits_transfer_member)c(/)k(ffgmtf)286 5593 y(\(fitsfile)f(*infptr,)f
+(fitsfile)h(*outfptr,)f(long)i(member,)e(int)i(tfopt,)334
+5706 y(>)h(int)e(*status\))p eop end
+%%Page: 90 98
+TeXDict begin 90 97 bop 0 299 a Fj(90)1338 b Fh(CHAPTER)29
+b(8.)112 b(HIERAR)m(CHICAL)30 b(GR)m(OUPING)h(R)m(OUTINES)0
+555 y Fi(6)81 b Fj(Remo)m(v)m(e)31 b(a)e(mem)m(b)s(er)g(HDU)h(from)f
+(the)h(grouping)f(table)h(p)s(oin)m(ted)f(to)h(b)m(y)g(gfptr.)40
+b(The)29 b(mem)m(b)s(er)f(HDU)i(to)h(b)s(e)227 668 y(deleted)37
+b(is)e(iden)m(ti\014ed)h(b)m(y)f(its)h(ro)m(w)g(n)m(um)m(b)s(er)f(in)g
+(the)h(grouping)f(table)h(as)g(sp)s(eci\014ed)f(b)m(y)h(the)f
+(parameter)227 781 y('mem)m(b)s(er')41 b(\(\014rst)g(mem)m(b)s(er)g(==)
+f(1\).)74 b(The)41 b(rmopt)g(parameter)h(ma)m(y)f(tak)m(e)i(on)e(the)h
+(follo)m(wing)g(v)-5 b(alues:)227 894 y(OPT)p 431 894
+28 4 v 32 w(RM)p 613 894 V 33 w(ENTR)d(Y)34 b(whic)m(h)e(remo)m(v)m(es)
+j(the)e(mem)m(b)s(er)g(HDU)h(en)m(try)f(from)g(the)g(grouping)g(table)h
+(and)f(up-)227 1007 y(dates)40 b(the)f(mem)m(b)s(er's)f(GRPIDn/GRPLCn)g
+(k)m(eyw)m(ords,)k(and)c(OPT)p 2687 1007 V 32 w(RM)p
+2869 1007 V 33 w(MBR)h(whic)m(h)g(remo)m(v)m(es)h(the)227
+1120 y(mem)m(b)s(er)30 b(HDU)h(en)m(try)g(from)f(the)g(grouping)g
+(table)i(and)d(deletes)j(the)e(mem)m(b)s(er)g(HDU)h(itself.)95
+1380 y Fe(int)47 b(fits_remove_member)c(/)48 b(ffgmrm)286
+1492 y(\(fitsfile)e(*fptr,)g(long)g(member,)g(int)h(rmopt,)f(>)i(int)f
+(*status\))p eop end
+%%Page: 91 99
+TeXDict begin 91 98 bop 0 1225 a Fg(Chapter)65 b(9)0
+1687 y Fm(Sp)6 b(ecialized)77 b(CFITSIO)f(In)-6 b(terface)0
+1937 y(Routines)0 2429 y Fj(The)28 b(basic)h(in)m(terface)i(routines)e
+(describ)s(ed)e(previously)i(are)g(recommended)f(for)h(most)g(uses,)g
+(but)f(the)h(routines)0 2542 y(describ)s(ed)h(in)g(this)h(c)m(hapter)g
+(are)h(also)f(a)m(v)-5 b(ailable)34 b(if)c(necessary)-8
+b(.)43 b(Some)31 b(of)g(these)g(routines)g(p)s(erform)e(more)i(sp)s(e-)
+0 2655 y(cialized)e(function)d(that)i(cannot)f(easily)h(b)s(e)e(done)h
+(with)f(the)h(basic)h(in)m(terface)g(routines)f(while)f(others)h
+(duplicate)0 2767 y(the)j(functionalit)m(y)i(of)e(the)g(basic)h
+(routines)f(but)f(ha)m(v)m(e)i(a)g(sligh)m(tly)g(di\013eren)m(t)g
+(calling)g(sequence.)41 b(See)31 b(App)s(endix)0 2880
+y(B)g(for)f(the)g(de\014nition)g(of)h(eac)m(h)h(function)e(parameter.)0
+3210 y Ff(9.1)135 b(FITS)44 b(File)i(Access)e(Routines)0
+3446 y Fi(1)81 b Fj(Op)s(en)37 b(an)i(existing)i(FITS)d(\014le)h
+(residing)g(in)g(core)h(computer)f(memory)-8 b(.)68 b(This)38
+b(routine)h(is)h(analogous)g(to)227 3559 y(\014ts)p 354
+3559 28 4 v 33 w(op)s(en)p 577 3559 V 32 w(\014le.)55
+b(The)35 b('\014lename')g(is)g(curren)m(tly)h(ignored)f(b)m(y)g(this)g
+(routine)g(and)g(ma)m(y)g(b)s(e)g(an)m(y)g(arbitrary)227
+3672 y(string.)78 b(In)42 b(general,)47 b(the)c(application)h(m)m(ust)f
+(ha)m(v)m(e)h(preallo)s(cated)g(an)e(initial)i(blo)s(c)m(k)g(of)f
+(memory)f(to)227 3785 y(hold)i(the)h(FITS)f(\014le)h(prior)f(to)h
+(calling)h(this)e(routine:)70 b('memptr')44 b(p)s(oin)m(ts)g(to)i(the)e
+(starting)i(address)227 3898 y(and)39 b('memsize')i(giv)m(es)g(the)f
+(initial)h(size)f(of)g(the)g(blo)s(c)m(k)g(of)g(memory)-8
+b(.)69 b('mem)p 2958 3898 V 33 w(reallo)s(c')41 b(is)f(a)g(p)s(oin)m
+(ter)f(to)227 4011 y(an)c(optional)i(function)d(that)i(CFITSIO)e(can)h
+(call)h(to)g(allo)s(cate)i(additional)e(memory)-8 b(,)37
+b(if)e(needed)f(\(only)227 4124 y(if)41 b(mo)s(de)e(=)h(READ)m
+(WRITE\),)i(and)e(is)g(mo)s(deled)g(after)h(the)f(standard)g(C)g
+('reallo)s(c')i(function;)j(a)c(n)m(ull)227 4237 y(p)s(oin)m(ter)g(ma)m
+(y)g(b)s(e)f(giv)m(en)i(if)e(the)h(initial)h(allo)s(cation)h(of)e
+(memory)f(is)h(all)g(that)g(will)g(b)s(e)f(required)g(\(e.g.,)227
+4350 y(if)35 b(the)g(\014le)g(is)g(op)s(ened)f(with)h(mo)s(de)f(=)h
+(READONL)-8 b(Y\).)36 b(The)e('deltasize')j(parameter)e(ma)m(y)h(b)s(e)
+e(used)g(to)227 4463 y(suggest)g(a)f(minim)m(um)f(amoun)m(t)h(of)g
+(additional)h(memory)f(that)g(should)f(b)s(e)g(allo)s(cated)j(during)d
+(eac)m(h)i(call)227 4575 y(to)d(the)f(memory)f(reallo)s(cation)j
+(function.)40 b(By)30 b(default,)g(CFITSIO)e(will)i(reallo)s(cate)j
+(enough)c(additional)227 4688 y(space)44 b(to)g(hold)f(the)h(en)m(tire)
+g(curren)m(tly)f(de\014ned)g(FITS)f(\014le)i(\(as)f(giv)m(en)i(b)m(y)e
+(the)h(NAXISn)e(k)m(eyw)m(ords\))227 4801 y(or)g(1)f(FITS)g(blo)s(c)m
+(k)h(\(=)f(2880)i(b)m(ytes\),)i(whic)m(h)d(ev)m(er)g(is)f(larger.)74
+b(V)-8 b(alues)43 b(of)e(deltasize)i(less)f(than)f(2880)227
+4914 y(will)31 b(b)s(e)f(ignored.)42 b(Since)31 b(the)g(memory)g
+(reallo)s(cation)i(op)s(eration)e(can)g(b)s(e)f(computationally)i(exp)s
+(ensiv)m(e,)227 5027 y(allo)s(cating)27 b(a)e(larger)g(initial)h(blo)s
+(c)m(k)f(of)g(memory)-8 b(,)26 b(and/or)f(sp)s(ecifying)f(a)h(larger)h
+(deltasize)g(v)-5 b(alue)25 b(ma)m(y)g(help)227 5140
+y(to)i(reduce)f(the)g(n)m(um)m(b)s(er)e(of)i(reallo)s(cation)i(calls)f
+(and)f(mak)m(e)h(the)f(application)h(program)f(run)e(faster.)40
+b(Note)227 5253 y(that)29 b(v)-5 b(alues)29 b(of)f(the)h(memptr)f(and)f
+(memsize)j(p)s(oin)m(ters)e(will)h(b)s(e)e(up)s(dated)g(b)m(y)i
+(CFITSIO)d(if)j(the)f(lo)s(cation)227 5366 y(or)j(size)g(of)f(the)h
+(FITS)f(\014le)g(in)g(memory)g(should)g(c)m(hange)h(as)g(a)g(result)f
+(of)g(allo)s(cating)j(more)e(memory)-8 b(.)95 5601 y
+Fe(int)47 b(fits_open_memfile)c(/)48 b(ffomem)286 5714
+y(\(fitsfile)e(**fptr,)f(const)i(char)f(*filename,)f(int)i(mode,)g
+(void)f(**memptr,)1905 5942 y Fj(91)p eop end
+%%Page: 92 100
+TeXDict begin 92 99 bop 0 299 a Fj(92)1003 b Fh(CHAPTER)30
+b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)334 555 y Fe(size_t)46 b(*memsize,)f(size_t)i(deltasize,)
+334 668 y(void)g(*\(*mem_realloc\)\(void)42 b(*p,)47
+b(size_t)f(newsize\),)f(int)i(*status\))0 927 y Fi(2)81
+b Fj(Create)49 b(a)g(new)f(FITS)g(\014le)h(residing)f(in)h(core)g
+(computer)g(memory)-8 b(.)96 b(This)48 b(routine)g(is)h(analogous)h(to)
+227 1040 y(\014ts)p 354 1040 28 4 v 33 w(create)p 623
+1040 V 34 w(\014le.)40 b(In)29 b(general,)i(the)e(application)h(m)m
+(ust)f(ha)m(v)m(e)i(preallo)s(cated)g(an)e(initial)h(blo)s(c)m(k)g(of)f
+(memory)227 1152 y(to)38 b(hold)e(the)h(FITS)f(\014le)h(prior)f(to)h
+(calling)i(this)d(routine:)54 b('memptr')36 b(p)s(oin)m(ts)h(to)g(the)g
+(starting)h(address)227 1265 y(and)h('memsize')i(giv)m(es)g(the)f
+(initial)h(size)f(of)g(the)g(blo)s(c)m(k)g(of)g(memory)-8
+b(.)69 b('mem)p 2958 1265 V 33 w(reallo)s(c')41 b(is)f(a)g(p)s(oin)m
+(ter)f(to)227 1378 y(an)f(optional)g(function)f(that)h(CFITSIO)e(can)i
+(call)h(to)f(allo)s(cate)i(additional)e(memory)-8 b(,)40
+b(if)d(needed,)j(and)227 1491 y(is)34 b(mo)s(deled)f(after)h(the)g
+(standard)f(C)g('reallo)s(c')i(function;)g(a)f(n)m(ull)f(p)s(oin)m(ter)
+h(ma)m(y)g(b)s(e)f(giv)m(en)h(if)g(the)g(initial)227
+1604 y(allo)s(cation)i(of)d(memory)g(is)h(all)g(that)g(will)f(b)s(e)g
+(required.)48 b(The)33 b('deltasize')j(parameter)d(ma)m(y)h(b)s(e)f
+(used)f(to)227 1717 y(suggest)i(a)f(minim)m(um)f(amoun)m(t)h(of)g
+(additional)h(memory)f(that)g(should)f(b)s(e)g(allo)s(cated)j(during)d
+(eac)m(h)i(call)227 1830 y(to)d(the)f(memory)f(reallo)s(cation)j
+(function.)40 b(By)30 b(default,)g(CFITSIO)e(will)i(reallo)s(cate)j
+(enough)c(additional)227 1943 y(space)41 b(to)g(hold)e(1)i(FITS)e(blo)s
+(c)m(k)h(\(=)g(2880)i(b)m(ytes\))f(and)e(v)-5 b(alues)41
+b(of)f(deltasize)h(less)g(than)f(2880)h(will)g(b)s(e)227
+2056 y(ignored.)f(Since)28 b(the)f(memory)h(reallo)s(cation)i(op)s
+(eration)e(can)g(b)s(e)f(computationally)i(exp)s(ensiv)m(e,)g(allo)s
+(cat-)227 2169 y(ing)36 b(a)f(larger)h(initial)h(blo)s(c)m(k)e(of)h
+(memory)-8 b(,)37 b(and/or)e(sp)s(ecifying)g(a)h(larger)g(deltasize)h
+(v)-5 b(alue)36 b(ma)m(y)f(help)g(to)227 2282 y(reduce)f(the)g(n)m(um)m
+(b)s(er)e(of)i(reallo)s(cation)i(calls)f(and)e(mak)m(e)i(the)f
+(application)h(program)f(run)e(faster.)52 b(Note)227
+2395 y(that)29 b(v)-5 b(alues)29 b(of)f(the)h(memptr)f(and)f(memsize)j
+(p)s(oin)m(ters)e(will)h(b)s(e)e(up)s(dated)g(b)m(y)i(CFITSIO)d(if)j
+(the)f(lo)s(cation)227 2507 y(or)j(size)g(of)f(the)h(FITS)f(\014le)g
+(in)g(memory)g(should)g(c)m(hange)h(as)g(a)g(result)f(of)g(allo)s
+(cating)j(more)e(memory)-8 b(.)95 2766 y Fe(int)47 b
+(fits_create_memfile)c(/)k(ffimem)286 2879 y(\(fitsfile)f(**fptr,)f
+(void)i(**memptr,)334 2992 y(size_t)f(*memsize,)f(size_t)i(deltasize,)
+334 3105 y(void)g(*\(*mem_realloc\)\(void)42 b(*p,)47
+b(size_t)f(newsize\),)f(int)i(*status\))0 3363 y Fi(3)81
+b Fj(Reop)s(en)34 b(a)i(FITS)e(\014le)h(that)h(w)m(as)f(previously)g
+(op)s(ened)g(with)f(\014ts)p 2414 3363 V 33 w(op)s(en)p
+2637 3363 V 32 w(\014le)h(or)g(\014ts)p 3058 3363 V 33
+w(create)p 3327 3363 V 34 w(\014le.)55 b(The)34 b(new)227
+3476 y(\014ts\014le)i(p)s(oin)m(ter)h(ma)m(y)g(then)f(b)s(e)f(treated)j
+(as)e(a)h(separate)g(\014le,)h(and)e(one)h(ma)m(y)g(sim)m(ultaneously)g
+(read)f(or)227 3589 y(write)e(to)h(2)f(\(or)g(more\))g(di\013eren)m(t)g
+(extensions)g(in)g(the)g(same)g(\014le.)51 b(The)33 b(\014ts)p
+2886 3589 V 32 w(op)s(en)p 3108 3589 V 32 w(\014le)h(routine)g(\(ab)s
+(o)m(v)m(e\))227 3702 y(automatically)k(detects)f(cases)f(where)e(a)i
+(previously)f(op)s(ened)f(\014le)i(is)f(b)s(eing)g(op)s(ened)f(again,)k
+(and)c(then)227 3815 y(in)m(ternally)e(call)f(\014ts)p
+930 3815 V 33 w(reop)s(en)p 1229 3815 V 32 w(\014le,)g(so)f(programs)g
+(should)g(rarely)g(need)g(to)h(explicitly)h(call)g(this)e(routine.)95
+4073 y Fe(int)47 b(fits_reopen_file)d(/)j(ffreopen)286
+4186 y(\(fitsfile)f(*openfptr,)f(fitsfile)g(**newfptr,)g(>)j(int)f
+(*status\))0 4445 y Fi(4)81 b Fj(Create)24 b(a)g(new)f(FITS)g(\014le,)i
+(using)e(a)h(template)h(\014le)e(to)i(de\014ne)d(its)i(initial)h(size)g
+(and)e(structure.)37 b(The)24 b(template)227 4558 y(ma)m(y)i(b)s(e)f
+(another)g(FITS)g(HDU)h(or)f(an)g(ASCI)s(I)f(template)j(\014le.)39
+b(If)25 b(the)g(input)g(template)h(\014le)g(name)f(p)s(oin)m(ter)227
+4671 y(is)j(n)m(ull,)h(then)e(this)h(routine)f(b)s(eha)m(v)m(es)i(the)f
+(same)g(as)g(\014ts)p 2160 4671 V 32 w(create)p 2428
+4671 V 35 w(\014le.)40 b(The)27 b(curren)m(tly)h(supp)s(orted)e(format)
+227 4784 y(of)33 b(the)g(ASCI)s(I)e(template)j(\014le)e(is)h(describ)s
+(ed)e(under)g(the)i(\014ts)p 2350 4784 V 33 w(parse)p
+2591 4784 V 32 w(template)h(routine)f(\(in)f(the)h(general)227
+4897 y(Utilities)g(section\))95 5155 y Fe(int)47 b
+(fits_create_template)c(/)k(fftplt)286 5268 y(\(fitsfile)f(**fptr,)f
+(char)i(*filename,)e(char)i(*tpltfile)e(>)i(int)g(*status\))0
+5527 y Fi(5)81 b Fj(P)m(arse)31 b(the)f(input)g(\014lename)g(or)g(URL)h
+(in)m(to)g(its)g(comp)s(onen)m(t)f(parts,)h(namely:)336
+5714 y Fc(\017)46 b Fj(the)31 b(\014le)f(t)m(yp)s(e)h(\(\014le://,)h
+(ftp://,)f(h)m(ttp://,)h(etc\),)p eop end
+%%Page: 93 101
+TeXDict begin 93 100 bop 0 299 a Fh(9.1.)72 b(FITS)30
+b(FILE)g(A)m(CCESS)f(R)m(OUTINES)2244 b Fj(93)336 555
+y Fc(\017)46 b Fj(the)31 b(base)f(input)g(\014le)g(name,)336
+702 y Fc(\017)46 b Fj(the)31 b(name)f(of)h(the)f(output)g(\014le)h
+(that)g(the)f(input)g(\014le)g(is)h(to)g(b)s(e)e(copied)i(to)g(prior)f
+(to)h(op)s(ening,)336 848 y Fc(\017)46 b Fj(the)31 b(HDU)g(or)f
+(extension)h(sp)s(eci\014cation,)336 995 y Fc(\017)46
+b Fj(the)31 b(\014ltering)f(sp)s(eci\014er,)336 1141
+y Fc(\017)46 b Fj(the)31 b(binning)e(sp)s(eci\014er,)336
+1288 y Fc(\017)46 b Fj(the)31 b(column)f(sp)s(eci\014er,)336
+1434 y Fc(\017)46 b Fj(and)30 b(the)h(image)g(pixel)g(\014ltering)g(sp)
+s(eci\014er.)227 1623 y(A)k(n)m(ull)g(p)s(oin)m(ter)f(\(0\))i(ma)m(y)g
+(b)s(e)e(b)s(e)g(sp)s(eci\014ed)g(for)g(an)m(y)h(of)g(the)g(output)g
+(string)f(argumen)m(ts)h(that)h(are)f(not)227 1736 y(needed.)52
+b(Null)34 b(strings)g(will)g(b)s(e)g(returned)f(for)h(an)m(y)g(comp)s
+(onen)m(ts)g(that)h(are)f(not)h(presen)m(t)f(in)g(the)g(input)227
+1849 y(\014le)28 b(name.)39 b(The)27 b(calling)i(routine)e(m)m(ust)g
+(allo)s(cate)j(su\016cien)m(t)d(memory)g(to)h(hold)f(the)g(returned)f
+(c)m(haracter)227 1962 y(strings.)52 b(Allo)s(cating)37
+b(the)d(string)g(lengths)h(equal)g(to)g(FLEN)p 2362 1962
+28 4 v 33 w(FILENAME)f(is)g(guaran)m(teed)i(to)f(b)s(e)e(safe.)227
+2075 y(These)d(routines)h(are)f(mainly)h(for)f(in)m(ternal)h(use)f(b)m
+(y)h(other)f(CFITSIO)f(routines.)95 2335 y Fe(int)47
+b(fits_parse_input_url)c(/)k(ffiurl)286 2448 y(\(char)g(*filename,)e(>)
+i(char)g(*filetype,)e(char)h(*infile,)g(char)h(*outfile,)e(char)334
+2561 y(*extspec,)g(char)i(*filter,)f(char)g(*binspec,)f(char)i
+(*colspec,)e(int)i(*status\))95 2787 y(int)g(fits_parse_input_filename)
+41 b(/)48 b(ffifile)286 2900 y(\(char)f(*filename,)e(>)i(char)g
+(*filetype,)e(char)h(*infile,)g(char)h(*outfile,)e(char)334
+3013 y(*extspec,)g(char)i(*filter,)f(char)g(*binspec,)f(char)i
+(*colspec,)e(char)i(*pixspec,)334 3125 y(int)g(*status\))0
+3386 y Fi(6)81 b Fj(P)m(arse)33 b(the)f(input)g(\014lename)h(and)e
+(return)h(the)h(HDU)g(n)m(um)m(b)s(er)e(that)i(w)m(ould)f(b)s(e)g(mo)m
+(v)m(ed)i(to)f(if)f(the)h(\014le)f(w)m(ere)227 3499 y(op)s(ened)h(with)
+g(\014ts)p 878 3499 V 32 w(op)s(en)p 1100 3499 V 32 w(\014le.)49
+b(The)33 b(returned)f(HDU)i(n)m(um)m(b)s(er)e(b)s(egins)h(with)g(1)g
+(for)g(the)g(primary)g(arra)m(y)-8 b(,)227 3612 y(so)40
+b(for)f(example,)k(if)c(the)h(input)e(\014lename)i(=)f(`m)m
+(y\014le.\014ts[2]')i(then)e(hdun)m(um)e(=)i(3)h(will)g(b)s(e)f
+(returned.)227 3725 y(CFITSIO)j(do)s(es)i(not)g(op)s(en)f(the)g(\014le)
+h(to)h(c)m(hec)m(k)g(if)e(the)h(extension)h(actually)g(exists)f(if)g
+(an)f(extension)227 3838 y(n)m(um)m(b)s(er)e(is)i(sp)s(eci\014ed.)75
+b(If)42 b(an)g(extension)h(name)f(is)h(included)e(in)h(the)h(\014le)f
+(name)g(sp)s(eci\014cation)h(\(e.g.)227 3951 y(`m)m
+(y\014le.\014ts[EVENTS]')i(then)e(this)h(routine)g(will)h(ha)m(v)m(e)g
+(to)f(op)s(en)g(the)g(FITS)f(\014le)h(and)f(lo)s(ok)i(for)f(the)227
+4064 y(p)s(osition)31 b(of)f(the)h(named)f(extension,)i(then)e(close)i
+(\014le)e(again.)42 b(This)30 b(is)g(not)h(p)s(ossible)f(if)h(the)f
+(\014le)h(is)f(b)s(eing)227 4176 y(read)k(from)f(the)h(stdin)f(stream,)
+i(and)f(an)f(error)g(will)i(b)s(e)e(returned)f(in)i(this)f(case.)52
+b(If)33 b(the)h(\014lename)g(do)s(es)227 4289 y(not)42
+b(sp)s(ecify)g(an)g(explicit)h(extension)g(\(e.g.)76
+b('m)m(y\014le.\014ts'\))43 b(then)f(hdun)m(um)e(=)h(-99)i(will)g(b)s
+(e)e(returned,)227 4402 y(whic)m(h)35 b(is)g(functionally)h(equiv)-5
+b(alen)m(t)36 b(to)g(hdun)m(um)d(=)h(1.)55 b(This)34
+b(routine)h(is)g(mainly)h(used)e(for)g(bac)m(kw)m(ard)227
+4515 y(compatibilit)m(y)39 b(in)e(the)f(fto)s(ols)i(soft)m(w)m(are)g
+(pac)m(k)-5 b(age)39 b(and)d(is)g(not)h(recommended)g(for)f(general)i
+(use.)59 b(It)37 b(is)227 4628 y(generally)k(b)s(etter)e(and)g(more)g
+(e\016cien)m(t)i(to)f(\014rst)e(op)s(en)h(the)g(FITS)g(\014le)g(with)g
+(\014ts)p 3125 4628 V 32 w(op)s(en)p 3347 4628 V 33 w(\014le,)i(then)e
+(use)227 4741 y(\014ts)p 354 4741 V 33 w(get)p 507 4741
+V 34 w(hdu)p 694 4741 V 31 w(n)m(um)c(to)i(determine)g(whic)m(h)f(HDU)h
+(in)f(the)h(\014le)f(has)g(b)s(een)g(op)s(ened,)h(rather)f(than)g
+(calling)227 4854 y(\014ts)p 354 4854 V 33 w(parse)p
+595 4854 V 32 w(input)p 840 4854 V 32 w(url)30 b(follo)m(w)m(ed)i(b)m
+(y)e(a)h(call)g(to)h(\014ts)p 1967 4854 V 32 w(op)s(en)p
+2189 4854 V 32 w(\014le.)143 5115 y Fe(int)47 b(fits_parse_extnum)c(/)
+48 b(ffextn)334 5227 y(\(char)e(*filename,)f(>)j(int)f(*hdunum,)e(int)i
+(*status\))0 5488 y Fi(7)81 b Fj(P)m(arse)45 b(the)g(input)e(\014le)i
+(name)g(and)f(return)f(the)i(ro)s(ot)g(\014le)g(name.)83
+b(The)44 b(ro)s(ot)h(name)g(includes)f(the)h(\014le)227
+5601 y(t)m(yp)s(e)35 b(if)g(sp)s(eci\014ed,)h(\(e.g.)56
+b('ftp://')37 b(or)e('h)m(ttp://'\))i(and)d(the)h(full)g(path)g(name,)h
+(to)g(the)f(exten)m(t)i(that)e(it)h(is)227 5714 y(sp)s(eci\014ed)26
+b(in)f(the)i(input)e(\014lename.)39 b(It)26 b(do)s(es)g(not)g(include)g
+(the)g(HDU)h(name)f(or)g(n)m(um)m(b)s(er,)g(or)g(an)m(y)h(\014ltering)p
+eop end
+%%Page: 94 102
+TeXDict begin 94 101 bop 0 299 a Fj(94)1003 b Fh(CHAPTER)30
+b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)227 555 y Fj(sp)s(eci\014cations.)86 b(The)45
+b(calling)h(routine)g(m)m(ust)f(allo)s(cate)i(su\016cien)m(t)f(memory)f
+(to)h(hold)f(the)g(returned)227 668 y(ro)s(otname)33
+b(c)m(haracter)g(string.)46 b(Allo)s(cating)34 b(the)f(length)f(equal)h
+(to)f(FLEN)p 2817 668 28 4 v 33 w(FILENAME)h(is)f(guaran)m(teed)227
+781 y(to)f(b)s(e)f(safe.)143 1019 y Fe(int)47 b(fits_parse_rootname)c
+(/)k(ffrtnm)334 1132 y(\(char)f(*filename,)f(>)j(char)f(*rootname,)e
+(int)h(*status\);)0 1370 y Fi(8)81 b Fj(T)-8 b(est)37
+b(if)f(the)h(input)f(\014le)h(or)f(a)h(compressed)g(v)m(ersion)g(of)g
+(the)g(\014le)f(\(with)h(a)g(.gz,)j(.Z,)c(.z,)j(or)e(.zip)g
+(extension\))227 1483 y(exists)i(on)f(disk.)63 b(The)37
+b(returned)g(v)-5 b(alue)38 b(of)g(the)h('exists')g(parameter)f(will)g
+(ha)m(v)m(e)i(1)e(of)g(the)g(4)g(follo)m(wing)227 1596
+y(v)-5 b(alues:)370 1820 y Fe(2:)95 b(the)47 b(file)g(does)g(not)f
+(exist,)h(but)f(a)i(compressed)d(version)h(does)g(exist)370
+1933 y(1:)95 b(the)47 b(disk)g(file)g(does)f(exist)370
+2046 y(0:)95 b(neither)46 b(the)h(file)g(nor)g(a)g(compressed)e
+(version)h(of)h(the)g(file)g(exist)323 2159 y(-1:)94
+b(the)47 b(input)g(file)f(name)h(is)g(not)g(a)g(disk)g(file)g(\(could)f
+(be)h(a)g(ftp,)g(http,)561 2272 y(smem,)g(or)g(mem)g(file,)f(or)h(a)h
+(file)e(piped)h(in)g(on)g(the)g(STDIN)f(stream\))143
+2587 y(int)h(fits_file_exists)c(/)48 b(ffexist)334 2700
+y(\(char)e(*filename,)f(>)j(int)f(*exists,)e(int)i(*status\);)0
+2938 y Fi(9)81 b Fj(Flush)36 b(an)m(y)i(in)m(ternal)g(bu\013ers)e(of)i
+(data)g(to)g(the)f(output)g(FITS)g(\014le.)62 b(These)37
+b(routines)g(rarely)g(need)g(to)i(b)s(e)227 3051 y(called,)i(but)36
+b(can)i(b)s(e)f(useful)f(in)h(cases)i(where)d(other)i(pro)s(cesses)f
+(need)g(to)h(access)h(the)f(same)f(FITS)g(\014le)227
+3164 y(in)j(real)i(time,)h(either)e(on)g(disk)f(or)g(in)g(memory)-8
+b(.)71 b(These)41 b(routines)f(also)h(help)f(to)i(ensure)d(that)i(if)g
+(the)227 3277 y(application)c(program)d(subsequen)m(tly)h(ab)s(orts)f
+(then)h(the)g(FITS)f(\014le)h(will)g(ha)m(v)m(e)i(b)s(een)d(closed)h
+(prop)s(erly)-8 b(.)227 3390 y(The)43 b(\014rst)g(routine,)k(\014ts)p
+1110 3390 V 33 w(\015ush)p 1332 3390 V 31 w(\014le)c(is)h(more)f
+(rigorous)h(and)f(completely)i(closes,)j(then)c(reop)s(ens,)i(the)227
+3503 y(curren)m(t)31 b(HDU,)h(b)s(efore)e(\015ushing)g(the)h(in)m
+(ternal)g(bu\013ers,)f(th)m(us)h(ensuring)f(that)h(the)g(output)g(FITS)
+f(\014le)h(is)227 3615 y(iden)m(tical)38 b(to)e(what)f(w)m(ould)h(b)s
+(e)f(pro)s(duced)f(if)h(the)h(FITS)f(w)m(as)h(closed)g(at)g(that)g(p)s
+(oin)m(t)g(\(i.e.,)i(with)e(a)g(call)227 3728 y(to)g(\014ts)p
+470 3728 V 33 w(close)p 689 3728 V 34 w(\014le\).)56
+b(The)35 b(second)g(routine,)i(\014ts)p 1912 3728 V 33
+w(\015ush)p 2134 3728 V 31 w(bu\013er)d(simply)h(\015ushes)f(the)h(in)m
+(ternal)h(CFITSIO)227 3841 y(bu\013ers)28 b(of)h(data)h(to)f(the)h
+(output)e(FITS)g(\014le,)i(without)f(up)s(dating)f(and)g(closing)i(the)
+f(curren)m(t)g(HDU.)h(This)227 3954 y(is)37 b(m)m(uc)m(h)g(faster,)i
+(but)e(there)g(ma)m(y)g(b)s(e)f(circumstances)i(where)e(the)h
+(\015ushed)f(\014le)h(do)s(es)f(not)h(completely)227
+4067 y(re\015ect)31 b(the)g(\014nal)f(state)i(of)e(the)h(\014le)f(as)h
+(it)g(will)f(exist)i(when)d(the)h(\014le)h(is)f(actually)i(closed.)227
+4214 y(A)f(t)m(ypical)h(use)e(of)h(these)g(routines)f(w)m(ould)g(b)s(e)
+g(to)h(\015ush)e(the)h(state)i(of)f(a)g(FITS)e(table)j(to)f(disk)f
+(after)h(eac)m(h)227 4327 y(ro)m(w)36 b(of)f(the)h(table)g(is)f
+(written.)55 b(It)36 b(is)f(recommend)g(that)h(\014ts)p
+2392 4327 V 32 w(\015ush)p 2613 4327 V 32 w(\014le)f(b)s(e)g(called)h
+(after)g(the)f(\014rst)g(ro)m(w)227 4440 y(is)k(written,)i(then)d
+(\014ts)p 1023 4440 V 32 w(\015ush)p 1244 4440 V 31 w(bu\013er)g(ma)m
+(y)h(b)s(e)f(called)h(after)g(eac)m(h)h(subsequen)m(t)e(ro)m(w)g(is)h
+(written.)65 b(Note)227 4552 y(that)40 b(this)f(latter)h(routine)f
+(will)g(not)g(automatically)j(up)s(date)c(the)h(NAXIS2)g(k)m(eyw)m(ord)
+h(whic)m(h)e(records)227 4665 y(the)c(n)m(um)m(b)s(er)d(of)i(ro)m(ws)h
+(of)f(data)g(in)g(the)g(table,)i(so)f(this)f(k)m(eyw)m(ord)g(m)m(ust)g
+(b)s(e)f(explicitly)j(up)s(dated)d(b)m(y)h(the)227 4778
+y(application)f(program)e(after)h(eac)m(h)h(ro)m(w)e(is)g(written.)95
+5016 y Fe(int)47 b(fits_flush_file)d(/)j(ffflus)286 5129
+y(\(fitsfile)f(*fptr,)g(>)h(int)g(*status\))95 5355 y(int)g
+(fits_flush_buffer)c(/)48 b(ffflsh)286 5468 y(\(fitsfile)e(*fptr,)g(0,)
+h(>)g(int)g(*status\))286 5694 y(\(Note:)94 b(The)47
+b(second)f(argument)g(must)g(be)i(0\).)p eop end
+%%Page: 95 103
+TeXDict begin 95 102 bop 0 299 a Fh(9.2.)72 b(HDU)31
+b(A)m(CCESS)e(R)m(OUTINES)2488 b Fj(95)0 555 y Ff(9.2)135
+b(HDU)46 b(Access)e(Routines)0 795 y Fi(1)81 b Fj(Get)28
+b(the)f(b)m(yte)h(o\013sets)g(in)f(the)g(FITS)f(\014le)i(to)f(the)h
+(start)g(of)f(the)g(header)g(and)g(the)g(start)h(and)e(end)h(of)g(the)g
+(data)227 908 y(in)34 b(the)g(CHDU.)g(The)f(di\013erence)h(b)s(et)m(w)m
+(een)h(headstart)f(and)f(dataend)h(equals)g(the)g(size)g(of)g(the)g
+(CHDU.)227 1021 y(If)e(the)h(CHDU)f(is)h(the)f(last)h(HDU)g(in)f(the)h
+(\014le,)g(then)f(dataend)g(is)g(also)i(equal)e(to)h(the)g(size)g(of)g
+(the)f(en)m(tire)227 1133 y(FITS)i(\014le.)55 b(Null)35
+b(p)s(oin)m(ters)g(ma)m(y)g(b)s(e)f(input)g(for)h(an)m(y)g(of)g(the)g
+(address)f(parameters)i(if)e(their)h(v)-5 b(alues)36
+b(are)227 1246 y(not)31 b(needed.)95 1502 y Fe(int)47
+b(fits_get_hduaddr)d(/)j(ffghad)94 b(\(only)46 b(supports)g(files)g(up)
+h(to)h(2.1)f(GB)g(in)g(size\))334 1615 y(\(fitsfile)e(*fptr,)h(>)i
+(long)f(*headstart,)d(long)j(*datastart,)e(long)h(*dataend,)382
+1728 y(int)h(*status\))95 1953 y(int)g(fits_get_hduaddrll)c(/)48
+b(ffghadll)93 b(\(supports)45 b(large)i(files\))334 2066
+y(\(fitsfile)e(*fptr,)h(>)i(LONGLONG)d(*headstart,)g(LONGLONG)h
+(*datastart,)382 2179 y(LONGLONG)f(*dataend,)h(int)h(*status\))0
+2434 y Fi(2)81 b Fj(Create)31 b(\(app)s(end\))f(a)i(new)e(empt)m(y)i
+(HDU)f(at)h(the)f(end)f(of)i(the)f(FITS)f(\014le.)42
+b(This)31 b(is)g(no)m(w)g(the)g(CHDU)g(but)f(it)227 2547
+y(is)i(completely)g(empt)m(y)g(and)f(has)g(no)g(header)g(k)m(eyw)m
+(ords.)43 b(It)32 b(is)f(recommended)g(that)h(\014ts)p
+3344 2547 28 4 v 32 w(create)p 3612 2547 V 34 w(img)g(or)227
+2660 y(\014ts)p 354 2660 V 33 w(create)p 623 2660 V 34
+w(tbl)e(b)s(e)g(used)g(instead)g(of)h(this)f(routine.)95
+2916 y Fe(int)47 b(fits_create_hdu)d(/)j(ffcrhd)286 3028
+y(\(fitsfile)f(*fptr,)g(>)h(int)g(*status\))0 3284 y
+Fi(3)81 b Fj(Insert)22 b(a)h(new)g(IMA)m(GE)h(extension)f(immediately)i
+(follo)m(wing)f(the)f(CHDU,)h(or)f(insert)g(a)g(new)f(Primary)h(Arra)m
+(y)227 3397 y(at)30 b(the)e(b)s(eginning)g(of)h(the)g(\014le.)40
+b(An)m(y)29 b(follo)m(wing)h(extensions)f(in)g(the)f(\014le)h(will)g(b)
+s(e)f(shifted)g(do)m(wn)h(to)g(mak)m(e)227 3510 y(ro)s(om)36
+b(for)h(the)f(new)g(extension.)59 b(If)36 b(the)h(CHDU)g(is)f(the)h
+(last)g(HDU)g(in)f(the)h(\014le)f(then)g(the)h(new)f(image)227
+3623 y(extension)31 b(will)g(simply)e(b)s(e)h(app)s(ended)e(to)j(the)f
+(end)g(of)g(the)g(\014le.)41 b(One)30 b(can)g(force)h(a)g(new)e
+(primary)g(arra)m(y)227 3735 y(to)35 b(b)s(e)d(inserted)i(at)g(the)g(b)
+s(eginning)f(of)g(the)h(FITS)f(\014le)g(b)m(y)h(setting)h(status)e(=)h
+(PREPEND)p 3432 3735 V 32 w(PRIMAR)-8 b(Y)227 3848 y(prior)25
+b(to)g(calling)i(the)e(routine.)38 b(In)25 b(this)f(case)i(the)f(old)g
+(primary)f(arra)m(y)i(will)f(b)s(e)f(con)m(v)m(erted)j(to)e(an)g(IMA)m
+(GE)227 3961 y(extension.)49 b(The)32 b(new)g(extension)i(\(or)f
+(primary)f(arra)m(y\))h(will)h(b)s(ecome)f(the)g(CHDU.)g(Refer)g(to)h
+(Chapter)227 4074 y(9)d(for)f(a)h(list)g(of)f(pre-de\014ned)f(bitpix)i
+(v)-5 b(alues.)95 4329 y Fe(int)47 b(fits_insert_img)d(/)j(ffiimg)286
+4442 y(\(fitsfile)f(*fptr,)g(int)h(bitpix,)e(int)i(naxis,)f(long)h
+(*naxes,)f(>)h(int)g(*status\))95 4668 y(int)g(fits_insert_imgll)c(/)48
+b(ffiimgll)286 4781 y(\(fitsfile)e(*fptr,)g(int)h(bitpix,)e(int)i
+(naxis,)f(LONGLONG)g(*naxes,)g(>)h(int)g(*status\))0
+5036 y Fi(4)81 b Fj(Insert)30 b(a)g(new)g(ASCI)s(I)f(or)i(binary)f
+(table)h(extension)g(immediately)h(follo)m(wing)g(the)f(CHDU.)g(An)m(y)
+f(follo)m(wing)227 5149 y(extensions)36 b(will)g(b)s(e)f(shifted)g(do)m
+(wn)g(to)h(mak)m(e)g(ro)s(om)g(for)f(the)g(new)g(extension.)57
+b(If)35 b(there)h(are)f(no)h(other)227 5262 y(follo)m(wing)c
+(extensions)g(then)e(the)h(new)f(table)h(extension)h(will)f(simply)f(b)
+s(e)g(app)s(ended)f(to)i(the)g(end)f(of)h(the)227 5375
+y(\014le.)42 b(If)30 b(the)h(FITS)f(\014le)g(is)h(curren)m(tly)g(empt)m
+(y)g(then)f(this)g(routine)h(will)g(create)h(a)f(dumm)m(y)f(primary)f
+(arra)m(y)227 5488 y(b)s(efore)i(app)s(ending)f(the)i(table)h(to)f(it.)
+44 b(The)31 b(new)g(extension)i(will)e(b)s(ecome)h(the)g(CHDU.)g(The)f
+(tunit)h(and)227 5601 y(extname)39 b(parameters)g(are)f(optional)i(and)
+e(a)g(n)m(ull)g(p)s(oin)m(ter)h(ma)m(y)f(b)s(e)g(giv)m(en)h(if)f(they)h
+(are)f(not)h(de\014ned.)227 5714 y(When)32 b(inserting)g(an)g(ASCI)s(I)
+f(table)i(with)e(\014ts)p 1847 5714 V 33 w(insert)p 2103
+5714 V 33 w(atbl,)i(a)f(n)m(ull)g(p)s(oin)m(ter)g(ma)m(y)h(giv)m(en)g
+(for)f(the)g(*tb)s(col)p eop end
+%%Page: 96 104
+TeXDict begin 96 103 bop 0 299 a Fj(96)1003 b Fh(CHAPTER)30
+b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)227 555 y Fj(parameter)23 b(in)f(whic)m(h)h(case)g(eac)m
+(h)h(column)e(of)h(the)g(table)g(will)g(b)s(e)f(separated)h(b)m(y)f(a)h
+(single)g(space)g(c)m(haracter.)227 668 y(Similarly)-8
+b(,)29 b(if)d(the)h(input)f(v)-5 b(alue)27 b(of)g(ro)m(wlen)g(is)f(0,)i
+(then)f(CFITSIO)e(will)i(calculate)i(the)e(default)f(ro)m(wlength)227
+781 y(based)39 b(on)g(the)g(tb)s(col)h(and)e(tt)m(yp)s(e)h(v)-5
+b(alues.)67 b(Under)39 b(normal)g(circumstances,)j(the)d(nro)m(ws)f
+(paramen)m(ter)227 894 y(should)31 b(ha)m(v)m(e)i(a)f(v)-5
+b(alue)32 b(of)f(0;)i(CFITSIO)d(will)i(automatically)j(up)s(date)30
+b(the)i(n)m(um)m(b)s(er)e(of)i(ro)m(ws)g(as)g(data)g(is)227
+1007 y(written)26 b(to)h(the)f(table.)40 b(When)25 b(inserting)h(a)h
+(binary)e(table)h(with)g(\014ts)p 2596 1007 28 4 v 32
+w(insert)p 2851 1007 V 33 w(btbl,)g(if)g(there)g(are)g(follo)m(wing)227
+1120 y(extensions)f(in)f(the)h(\014le)f(and)g(if)g(the)h(table)g(con)m
+(tains)g(v)-5 b(ariable)25 b(length)g(arra)m(y)g(columns)f(then)g(p)s
+(coun)m(t)g(m)m(ust)227 1233 y(sp)s(ecify)30 b(the)h(exp)s(ected)g
+(\014nal)f(size)h(of)f(the)h(data)g(heap,)f(otherwise)h(p)s(coun)m(t)f
+(m)m(ust)h(=)f(0.)95 1490 y Fe(int)47 b(fits_insert_atbl)d(/)j(ffitab)
+286 1603 y(\(fitsfile)f(*fptr,)g(LONGLONG)f(rowlen,)h(LONGLONG)g
+(nrows,)g(int)h(tfields,)e(char)i(*ttype[],)334 1716
+y(long)g(*tbcol,)f(char)g(*tform[],)f(char)i(*tunit[],)e(char)i
+(*extname,)e(>)j(int)f(*status\))95 1942 y(int)g(fits_insert_btbl)d(/)j
+(ffibin)286 2055 y(\(fitsfile)f(*fptr,)g(LONGLONG)f(nrows,)h(int)h
+(tfields,)f(char)g(**ttype,)286 2168 y(char)h(**tform,)f(char)g
+(**tunit,)g(char)g(*extname,)g(long)g(pcount,)g(>)i(int)e(*status\))0
+2425 y Fi(5)81 b Fj(Mo)s(dify)27 b(the)h(size,)h(dimensions,)f(and/or)f
+(data)i(t)m(yp)s(e)f(of)f(the)h(curren)m(t)g(primary)e(arra)m(y)i(or)g
+(image)h(extension.)227 2538 y(If)39 b(the)h(new)e(image,)44
+b(as)39 b(sp)s(eci\014ed)g(b)m(y)g(the)g(input)g(argumen)m(ts,)j(is)d
+(larger)h(than)f(the)h(curren)m(t)f(existing)227 2651
+y(image)30 b(in)e(the)g(FITS)g(\014le)g(then)g(zero)h(\014ll)f(data)h
+(will)g(b)s(e)f(inserted)g(at)h(the)f(end)g(of)g(the)h(curren)m(t)f
+(image)i(and)227 2764 y(an)m(y)35 b(follo)m(wing)h(extensions)f(will)g
+(b)s(e)f(mo)m(v)m(ed)i(further)d(bac)m(k)i(in)g(the)f(\014le.)54
+b(Similarly)-8 b(,)36 b(if)f(the)g(new)f(image)227 2877
+y(is)j(smaller)g(than)g(the)f(curren)m(t)h(image)h(then)e(an)m(y)h
+(follo)m(wing)h(extensions)f(will)g(b)s(e)f(shifted)h(up)e(to)m(w)m
+(ards)227 2990 y(the)h(b)s(eginning)f(of)h(the)g(FITS)f(\014le)h(and)f
+(the)h(image)h(data)f(will)h(b)s(e)e(truncated)g(to)i(the)f(new)f
+(size.)58 b(This)227 3103 y(routine)27 b(rewrites)g(the)h(BITPIX,)f
+(NAXIS,)g(and)f(NAXISn)g(k)m(eyw)m(ords)i(with)f(the)g(appropriate)g(v)
+-5 b(alues)27 b(for)227 3216 y(the)k(new)f(image.)95
+3473 y Fe(int)47 b(fits_resize_img)d(/)j(ffrsim)286 3586
+y(\(fitsfile)f(*fptr,)g(int)h(bitpix,)e(int)i(naxis,)f(long)h(*naxes,)f
+(>)h(int)g(*status\))95 3812 y(int)g(fits_resize_imgll)c(/)48
+b(ffrsimll)286 3925 y(\(fitsfile)e(*fptr,)g(int)h(bitpix,)e(int)i
+(naxis,)f(LONGLONG)g(*naxes,)g(>)h(int)g(*status\))0
+4183 y Fi(6)81 b Fj(Cop)m(y)43 b(the)h(data)h(\(and)e(not)h(the)g
+(header\))g(from)f(the)h(CHDU)g(asso)s(ciated)h(with)f(infptr)e(to)j
+(the)f(CHDU)227 4295 y(asso)s(ciated)34 b(with)e(outfptr.)47
+b(This)32 b(will)g(o)m(v)m(erwrite)i(an)m(y)f(data)g(previously)g(in)f
+(the)h(output)f(CHDU.)h(This)227 4408 y(lo)m(w)39 b(lev)m(el)h(routine)
+e(is)g(used)f(b)m(y)h(\014ts)p 1510 4408 V 33 w(cop)m(y)p
+1724 4408 V 33 w(hdu,)h(but)e(it)i(ma)m(y)f(also)h(b)s(e)f(useful)f(in)
+h(certain)h(application)227 4521 y(programs)30 b(that)h(w)m(an)m(t)g
+(to)g(cop)m(y)g(the)f(data)h(from)f(one)h(FITS)e(\014le)i(to)g(another)
+f(but)f(also)j(w)m(an)m(t)f(to)g(mo)s(dify)227 4634 y(the)h(header)g(k)
+m(eyw)m(ords.)46 b(The)32 b(required)f(FITS)g(header)h(k)m(eyw)m(ords)g
+(whic)m(h)g(de\014ne)f(the)h(structure)g(of)g(the)227
+4747 y(HDU)f(m)m(ust)g(b)s(e)e(written)i(to)g(the)f(output)g(CHDU)h(b)s
+(efore)f(calling)i(this)e(routine.)95 5005 y Fe(int)47
+b(fits_copy_data)d(/)k(ffcpdt)286 5118 y(\(fitsfile)e(*infptr,)f
+(fitsfile)h(*outfptr,)f(>)i(int)g(*status\))0 5375 y
+Fi(7)81 b Fj(Read)30 b(or)g(write)g(a)h(sp)s(eci\014ed)e(n)m(um)m(b)s
+(er)g(of)i(b)m(ytes)f(starting)h(at)g(the)g(sp)s(eci\014ed)e(b)m(yte)i
+(o\013set)g(from)f(the)g(start)h(of)227 5488 y(the)c(extension)g(data)f
+(unit.)39 b(These)26 b(lo)m(w)h(lev)m(el)h(routine)e(are)h(in)m(tended)
+f(mainly)g(for)g(accessing)i(the)e(data)h(in)227 5601
+y(non-standard,)h(conforming)g(extensions,)h(and)e(should)g(not)h(b)s
+(e)g(used)f(for)g(standard)g(IMA)m(GE,)i(T)-8 b(ABLE,)227
+5714 y(or)31 b(BINT)-8 b(ABLE)31 b(extensions.)p eop
+end
+%%Page: 97 105
+TeXDict begin 97 104 bop 0 299 a Fh(9.3.)72 b(SPECIALIZED)29
+b(HEADER)i(KEYW)m(ORD)g(R)m(OUTINES)1510 b Fj(97)95 555
+y Fe(int)47 b(fits_read_ext)e(/)i(ffgextn)286 668 y(\(fitsfile)f
+(*fptr,)g(LONGLONG)f(offset,)h(LONGLONG)g(nbytes,)f(void)i(*buffer\))95
+781 y(int)g(fits_write_ext)d(/)k(ffpextn)286 894 y(\(fitsfile)e(*fptr,)
+g(LONGLONG)f(offset,)h(LONGLONG)g(nbytes,)f(void)i(*buffer\))0
+1158 y Fi(8)81 b Fj(This)34 b(routine)g(forces)h(CFITSIO)f(to)h(rescan)
+g(the)g(curren)m(t)g(header)f(k)m(eyw)m(ords)h(that)g(de\014ne)f(the)h
+(structure)227 1271 y(of)f(the)f(HDU)h(\(suc)m(h)g(as)f(the)h(NAXIS)f
+(and)g(BITPIX)g(k)m(eyw)m(ords\))h(so)f(that)h(it)g(reinitializes)i
+(the)d(in)m(ternal)227 1384 y(bu\013ers)26 b(that)h(describ)s(e)g(the)g
+(HDU)g(structure.)39 b(This)26 b(routine)h(is)g(useful)f(for)g
+(reinitializing)j(the)e(structure)227 1497 y(of)34 b(an)f(HDU)h(if)f
+(an)m(y)h(of)g(the)f(required)g(k)m(eyw)m(ords)g(\(e.g.,)j(NAXISn\))d
+(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)48 b(In)33 b(practice)227
+1610 y(it)e(should)e(rarely)h(b)s(e)f(necessary)h(to)h(call)g(this)f
+(routine)g(b)s(ecause)f(CFITSIO)g(in)m(ternally)i(calls)g(it)f(in)g
+(most)227 1723 y(situations.)95 1987 y Fe(int)47 b(fits_set_hdustruc)c
+(/)48 b(ffrdef)286 2100 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*status\))141
+b(\(DEPRECATED\))0 2439 y Ff(9.3)135 b(Sp)t(ecialized)46
+b(Header)g(Keyw)l(ord)f(Routines)0 2693 y Fd(9.3.1)112
+b(Header)38 b(Information)h(Routines)0 2906 y Fi(1)81
+b Fj(Reserv)m(e)29 b(space)g(in)e(the)i(CHU)f(for)g(MOREKEYS)f(more)h
+(header)g(k)m(eyw)m(ords.)41 b(This)27 b(routine)h(ma)m(y)h(b)s(e)f
+(called)227 3018 y(to)34 b(allo)s(cate)h(space)e(for)f(additional)i(k)m
+(eyw)m(ords)f(at)g(the)g(time)g(the)g(header)f(is)h(created)g(\(prior)g
+(to)g(writing)227 3131 y(an)m(y)h(data\).)51 b(CFITSIO)32
+b(can)i(dynamically)g(add)f(more)g(space)h(to)g(the)g(header)f(when)f
+(needed,)j(ho)m(w)m(ev)m(er)227 3244 y(it)c(is)g(more)f(e\016cien)m(t)i
+(to)f(preallo)s(cate)h(the)f(required)f(space)h(if)f(the)g(size)i(is)e
+(kno)m(wn)g(in)g(adv)-5 b(ance.)95 3509 y Fe(int)47 b(fits_set_hdrsize)
+d(/)j(ffhdef)286 3621 y(\(fitsfile)f(*fptr,)g(int)h(morekeys,)e(>)i
+(int)g(*status\))0 3886 y Fi(2)81 b Fj(Return)26 b(the)h(n)m(um)m(b)s
+(er)e(of)j(k)m(eyw)m(ords)f(in)f(the)h(header)g(\(not)h(coun)m(ting)g
+(the)f(END)g(k)m(eyw)m(ord\))h(and)e(the)h(curren)m(t)227
+3999 y(p)s(osition)34 b(in)g(the)g(header.)50 b(The)34
+b(p)s(osition)f(is)h(the)g(n)m(um)m(b)s(er)f(of)h(the)g(k)m(eyw)m(ord)g
+(record)f(that)i(will)f(b)s(e)f(read)227 4112 y(next)k(\(or)g(one)f
+(greater)i(than)e(the)h(p)s(osition)f(of)h(the)g(last)g(k)m(eyw)m(ord)g
+(that)g(w)m(as)g(read\).)59 b(A)37 b(v)-5 b(alue)36 b(of)h(1)g(is)227
+4224 y(returned)29 b(if)i(the)f(p)s(oin)m(ter)h(is)f(p)s(ositioned)h
+(at)g(the)f(b)s(eginning)g(of)g(the)h(header.)95 4489
+y Fe(int)47 b(fits_get_hdrpos)d(/)j(ffghps)286 4602 y(\(fitsfile)f
+(*fptr,)g(>)h(int)g(*keysexist,)e(int)i(*keynum,)e(int)i(*status\))0
+4897 y Fd(9.3.2)112 b(Read)38 b(and)h(W)-9 b(rite)36
+b(the)h(Required)h(Keyw)m(ords)0 5110 y Fi(1)81 b Fj(W)-8
+b(rite)34 b(the)f(required)g(extension)h(header)e(k)m(eyw)m(ords)i(in)m
+(to)g(the)f(CHU.)h(These)f(routines)g(are)g(not)g(required,)227
+5223 y(and)g(instead)g(the)g(appropriate)g(header)g(ma)m(y)g(b)s(e)g
+(constructed)g(b)m(y)g(writing)g(eac)m(h)h(individual)e(k)m(eyw)m(ord)
+227 5336 y(in)e(the)h(prop)s(er)e(sequence.)227 5488
+y(The)21 b(simpler)g(\014ts)p 842 5488 28 4 v 33 w(write)p
+1077 5488 V 33 w(imghdr)f(routine)i(is)f(equiv)-5 b(alen)m(t)23
+b(to)f(calling)h(\014ts)p 2727 5488 V 32 w(write)p 2961
+5488 V 33 w(grphdr)d(with)h(the)h(default)227 5601 y(v)-5
+b(alues)37 b(of)f(simple)g(=)g(TR)m(UE,)g(p)s(coun)m(t)g(=)g(0,)i
+(gcoun)m(t)f(=)f(1,)i(and)e(extend)g(=)f(TR)m(UE.)i(The)e(PCOUNT,)227
+5714 y(GCOUNT)43 b(and)g(EXTEND)g(k)m(eyw)m(ords)g(are)h(not)f
+(required)f(in)h(the)h(primary)e(header)h(and)f(are)i(only)p
+eop end
+%%Page: 98 106
+TeXDict begin 98 105 bop 0 299 a Fj(98)1003 b Fh(CHAPTER)30
+b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)227 555 y Fj(written)38 b(if)f(p)s(coun)m(t)g(is)g(not)h
+(equal)f(to)i(zero,)h(gcoun)m(t)e(is)f(not)h(equal)g(to)g(zero)g(or)f
+(one,)j(and)c(if)i(extend)f(is)227 668 y(TR)m(UE,)k(resp)s(ectiv)m(ely)
+-8 b(.)74 b(When)41 b(writing)g(to)h(an)e(IMA)m(GE)i(extension,)i(the)e
+(SIMPLE)e(and)g(EXTEND)227 781 y(parameters)c(are)f(ignored.)56
+b(It)35 b(is)g(recommended)g(that)h(\014ts)p 2342 781
+28 4 v 32 w(create)p 2610 781 V 35 w(image)g(or)f(\014ts)p
+3150 781 V 33 w(create)p 3419 781 V 34 w(tbl)g(b)s(e)g(used)227
+894 y(instead)26 b(of)f(these)h(routines)g(to)g(write)f(the)h(required)
+e(header)i(k)m(eyw)m(ords.)39 b(The)25 b(general)h(\014ts)p
+3377 894 V 33 w(write)p 3612 894 V 33 w(exthdr)227 1007
+y(routine)31 b(ma)m(y)g(b)s(e)e(used)h(to)h(write)g(the)f(header)g(of)h
+(an)m(y)g(conforming)f(FITS)g(extension.)95 1252 y Fe(int)47
+b(fits_write_imghdr)c(/)48 b(ffphps)286 1365 y(\(fitsfile)e(*fptr,)g
+(int)h(bitpix,)e(int)i(naxis,)f(long)h(*naxes,)f(>)h(int)g(*status\))95
+1591 y(int)g(fits_write_imghdrll)c(/)k(ffphpsll)286 1704
+y(\(fitsfile)f(*fptr,)g(int)h(bitpix,)e(int)i(naxis,)f(LONGLONG)g
+(*naxes,)g(>)h(int)g(*status\))95 1930 y(int)g(fits_write_grphdr)c(/)48
+b(ffphpr)286 2042 y(\(fitsfile)e(*fptr,)g(int)h(simple,)e(int)i
+(bitpix,)f(int)h(naxis,)f(long)h(*naxes,)334 2155 y(LONGLONG)f(pcount,)
+f(LONGLONG)h(gcount,)g(int)h(extend,)f(>)h(int)g(*status\))95
+2381 y(int)g(fits_write_grphdrll)c(/)k(ffphprll)286 2494
+y(\(fitsfile)f(*fptr,)g(int)h(simple,)e(int)i(bitpix,)f(int)h(naxis,)f
+(LONGLONG)g(*naxes,)334 2607 y(LONGLONG)g(pcount,)f(LONGLONG)h(gcount,)
+g(int)h(extend,)f(>)h(int)g(*status\))95 2833 y(int)g
+(fits_write_exthdr)c(/ffphext)286 2946 y(\(fitsfile)j(*fptr,)g(char)g
+(*xtension,)f(int)i(bitpix,)f(int)h(naxis,)f(long)h(*naxes,)334
+3059 y(LONGLONG)f(pcount,)f(LONGLONG)h(gcount,)g(>)h(int)g(*status\))0
+3417 y Fi(2)81 b Fj(W)-8 b(rite)30 b(the)g(ASCI)s(I)d(table)k(header)e
+(k)m(eyw)m(ords)g(in)m(to)i(the)e(CHU.)h(The)e(optional)j(TUNITn)d(and)
+h(EXTNAME)227 3530 y(k)m(eyw)m(ords)f(are)h(written)e(only)h(if)g(the)g
+(input)f(p)s(oin)m(ters)h(are)g(not)g(n)m(ull.)40 b(A)27
+b(n)m(ull)h(p)s(oin)m(ter)g(ma)m(y)g(giv)m(en)h(for)f(the)227
+3643 y(*tb)s(col)37 b(parameter)g(in)f(whic)m(h)g(case)i(a)e(single)h
+(space)g(will)g(b)s(e)f(inserted)g(b)s(et)m(w)m(een)h(eac)m(h)g(column)
+f(of)h(the)227 3756 y(table.)57 b(Similarly)-8 b(,)37
+b(if)f(ro)m(wlen)f(is)h(giv)m(en)g(=)f(0,)i(then)e(CFITSIO)f(will)i
+(calculate)h(the)f(default)f(ro)m(wlength)227 3868 y(based)30
+b(on)h(the)f(tb)s(col)h(and)f(tt)m(yp)s(e)h(v)-5 b(alues.)95
+4114 y Fe(int)47 b(fits_write_atblhdr)c(/)48 b(ffphtb)286
+4227 y(\(fitsfile)e(*fptr,)g(LONGLONG)f(rowlen,)h(LONGLONG)g(nrows,)g
+(int)h(tfields,)e(char)i(**ttype,)334 4340 y(long)g(*tbcol,)f(char)g
+(**tform,)g(char)g(**tunit,)g(char)h(*extname,)e(>)i(int)g(*status\))0
+4585 y Fi(3)81 b Fj(W)-8 b(rite)30 b(the)f(binary)g(table)h(header)e(k)
+m(eyw)m(ords)i(in)m(to)g(the)f(CHU.)g(The)g(optional)h(TUNITn)e(and)h
+(EXTNAME)227 4698 y(k)m(eyw)m(ords)35 b(are)g(written)g(only)g(if)f
+(the)h(input)f(p)s(oin)m(ters)g(are)h(not)g(n)m(ull.)53
+b(The)35 b(p)s(coun)m(t)f(parameter,)i(whic)m(h)227 4811
+y(sp)s(eci\014es)h(the)g(size)g(of)g(the)g(v)-5 b(ariable)38
+b(length)f(arra)m(y)g(heap,)h(should)e(initially)i(=)f(0;)j(CFITSIO)c
+(will)h(au-)227 4924 y(tomatically)d(up)s(date)d(the)g(PCOUNT)f(k)m
+(eyw)m(ord)i(v)-5 b(alue)32 b(if)f(an)m(y)g(v)-5 b(ariable)32
+b(length)g(arra)m(y)g(data)g(is)f(written)227 5036 y(to)g(the)e(heap.)
+41 b(The)29 b(TF)m(ORM)g(k)m(eyw)m(ord)h(v)-5 b(alue)30
+b(for)g(v)-5 b(ariable)30 b(length)g(v)m(ector)h(columns)e(should)g(ha)
+m(v)m(e)i(the)227 5149 y(form)c('Pt\(len\)')j(or)d('1Pt\(len\)')j
+(where)d(`t')h(is)g(the)g(data)g(t)m(yp)s(e)g(co)s(de)f(letter)i
+(\(A,I,J,E,D,)g(etc.\))42 b(and)27 b(`len')h(is)227 5262
+y(an)g(in)m(teger)i(sp)s(ecifying)e(the)g(maxim)m(um)g(length)g(of)h
+(the)f(v)m(ectors)h(in)f(that)h(column)f(\(len)g(m)m(ust)g(b)s(e)g
+(greater)227 5375 y(than)36 b(or)g(equal)h(to)g(the)f(longest)i(v)m
+(ector)f(in)f(the)h(column\).)58 b(If)36 b(`len')g(is)h(not)f(sp)s
+(eci\014ed)g(when)f(the)h(table)227 5488 y(is)c(created)g(\(e.g.,)h
+(the)f(input)e(TF)m(ORMn)h(v)-5 b(alue)32 b(is)f(just)g('1Pt'\))i(then)
+e(CFITSIO)f(will)h(scan)h(the)f(column)227 5601 y(when)f(the)h(table)h
+(is)f(\014rst)f(closed)h(and)g(will)g(app)s(end)e(the)i(maxim)m(um)g
+(length)g(to)g(the)g(TF)m(ORM)g(k)m(eyw)m(ord)227 5714
+y(v)-5 b(alue.)41 b(Note)30 b(that)f(if)f(the)h(table)g(is)g(subsequen)
+m(tly)f(mo)s(di\014ed)f(to)j(increase)f(the)g(maxim)m(um)f(length)h(of)
+g(the)p eop end
+%%Page: 99 107
+TeXDict begin 99 106 bop 0 299 a Fh(9.3.)72 b(SPECIALIZED)29
+b(HEADER)i(KEYW)m(ORD)g(R)m(OUTINES)1510 b Fj(99)227
+555 y(v)m(ectors)39 b(then)e(the)g(mo)s(difying)g(program)g(is)g(resp)s
+(onsible)g(for)g(also)h(up)s(dating)e(the)i(TF)m(ORM)f(k)m(eyw)m(ord)
+227 668 y(v)-5 b(alue.)95 935 y Fe(int)47 b(fits_write_btblhdr)c(/)48
+b(ffphbn)286 1048 y(\(fitsfile)e(*fptr,)g(LONGLONG)f(nrows,)h(int)h
+(tfields,)f(char)g(**ttype,)334 1161 y(char)h(**tform,)e(char)i
+(**tunit,)e(char)i(*extname,)e(LONGLONG)h(pcount,)g(>)h(int)g
+(*status\))0 1427 y Fi(4)81 b Fj(Read)30 b(the)h(required)e(k)m(eyw)m
+(ords)i(from)f(the)h(CHDU)f(\(image)j(or)d(table\).)42
+b(When)30 b(reading)h(from)f(an)g(IMA)m(GE)227 1540 y(extension)24
+b(the)g(SIMPLE)e(and)h(EXTEND)g(parameters)h(are)f(ignored.)39
+b(A)23 b(n)m(ull)g(p)s(oin)m(ter)h(ma)m(y)g(b)s(e)e(supplied)227
+1653 y(for)30 b(an)m(y)h(of)g(the)f(returned)f(parameters)i(that)g(are)
+g(not)f(needed.)95 1920 y Fe(int)47 b(fits_read_imghdr)d(/)j(ffghpr)286
+2033 y(\(fitsfile)f(*fptr,)g(int)h(maxdim,)e(>)j(int)f(*simple,)e(int)i
+(*bitpix,)f(int)h(*naxis,)334 2146 y(long)g(*naxes,)f(long)g(*pcount,)g
+(long)g(*gcount,)g(int)h(*extend,)e(int)i(*status\))95
+2372 y(int)g(fits_read_imghdrll)c(/)48 b(ffghprll)286
+2485 y(\(fitsfile)e(*fptr,)g(int)h(maxdim,)e(>)j(int)f(*simple,)e(int)i
+(*bitpix,)f(int)h(*naxis,)334 2598 y(LONGLONG)f(*naxes,)f(long)i
+(*pcount,)f(long)g(*gcount,)g(int)h(*extend,)e(int)i(*status\))95
+2823 y(int)g(fits_read_atblhdr)c(/)48 b(ffghtb)286 2936
+y(\(fitsfile)e(*fptr,int)f(maxdim,)h(>)h(long)g(*rowlen,)e(long)i
+(*nrows,)334 3049 y(int)g(*tfields,)e(char)i(**ttype,)e(LONGLONG)h
+(*tbcol,)g(char)g(**tform,)g(char)h(**tunit,)334 3162
+y(char)g(*extname,)93 b(int)47 b(*status\))95 3388 y(int)g
+(fits_read_atblhdrll)c(/)k(ffghtbll)286 3501 y(\(fitsfile)f(*fptr,int)f
+(maxdim,)h(>)h(LONGLONG)f(*rowlen,)f(LONGLONG)h(*nrows,)334
+3614 y(int)h(*tfields,)e(char)i(**ttype,)e(long)i(*tbcol,)f(char)h
+(**tform,)e(char)i(**tunit,)334 3727 y(char)g(*extname,)93
+b(int)47 b(*status\))95 3952 y(int)g(fits_read_btblhdr)c(/)48
+b(ffghbn)286 4065 y(\(fitsfile)e(*fptr,)g(int)h(maxdim,)e(>)j(long)f
+(*nrows,)e(int)i(*tfields,)334 4178 y(char)g(**ttype,)e(char)i
+(**tform,)e(char)i(**tunit,)f(char)g(*extname,)334 4291
+y(long)h(*pcount,)e(int)i(*status\))95 4517 y(int)g
+(fits_read_btblhdrll)c(/)k(ffghbnll)286 4630 y(\(fitsfile)f(*fptr,)g
+(int)h(maxdim,)e(>)j(LONGLONG)d(*nrows,)h(int)h(*tfields,)334
+4743 y(char)g(**ttype,)e(char)i(**tform,)e(char)i(**tunit,)f(char)g
+(*extname,)334 4856 y(long)h(*pcount,)e(int)i(*status\))0
+5155 y Fd(9.3.3)112 b(W)-9 b(rite)37 b(Keyw)m(ord)g(Routines)0
+5375 y Fj(These)32 b(routines)h(simply)f(app)s(end)f(a)h(new)g(k)m(eyw)
+m(ord)h(to)h(the)e(header)h(and)f(do)g(not)h(c)m(hec)m(k)h(to)f(see)g
+(if)g(a)f(k)m(eyw)m(ord)0 5488 y(with)d(the)g(same)h(name)f(already)h
+(exists.)41 b(In)28 b(general)i(it)g(is)f(preferable)g(to)h(use)f(the)h
+(\014ts)p 3009 5488 28 4 v 32 w(up)s(date)p 3317 5488
+V 32 w(k)m(ey)g(routine)f(to)0 5601 y(ensure)34 b(that)h(the)g(same)g
+(k)m(eyw)m(ord)g(is)f(not)h(written)g(more)g(than)f(once)h(to)h(the)e
+(header.)54 b(See)34 b(App)s(endix)f(B)i(for)0 5714 y(the)c
+(de\014nition)f(of)g(the)h(parameters)f(used)g(in)g(these)h(routines.)p
+eop end
+%%Page: 100 108
+TeXDict begin 100 107 bop 0 299 a Fj(100)958 b Fh(CHAPTER)30
+b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Fi(1)81 b Fj(W)-8 b(rite)30 b(\(app)s(end\))f(a)g
+(new)g(k)m(eyw)m(ord)h(of)g(the)f(appropriate)g(data)h(t)m(yp)s(e)g(in)
+m(to)g(the)g(CHU.)f(A)h(n)m(ull)f(p)s(oin)m(ter)g(ma)m(y)227
+668 y(b)s(e)35 b(en)m(tered)h(for)f(the)h(commen)m(t)h(parameter,)g
+(whic)m(h)e(will)h(cause)g(the)g(commen)m(t)g(\014eld)f(of)h(the)f(k)m
+(eyw)m(ord)227 781 y(to)43 b(b)s(e)e(left)i(blank.)76
+b(The)41 b(\015t,)k(dbl,)f(cmp,)h(and)d(dblcmp)f(v)m(ersions)h(of)g
+(this)g(routine)g(ha)m(v)m(e)h(the)g(added)227 894 y(feature)33
+b(that)g(if)g(the)f('decimals')i(parameter)f(is)g(negativ)m(e,)i(then)d
+(the)h('G')g(displa)m(y)g(format)g(rather)f(then)227
+1007 y(the)i('E')f(format)h(will)f(b)s(e)g(used)f(when)g(constructing)i
+(the)g(k)m(eyw)m(ord)f(v)-5 b(alue,)35 b(taking)f(the)g(absolute)f(v)-5
+b(alue)227 1120 y(of)34 b('decimals')h(for)e(the)h(precision.)51
+b(This)33 b(will)h(suppress)d(trailing)k(zeros,)g(and)e(will)h(use)g(a)
+g(\014xed)f(format)227 1233 y(rather)e(than)f(an)g(exp)s(onen)m(tial)h
+(format,)g(dep)s(ending)e(on)h(the)h(magnitude)f(of)h(the)g(v)-5
+b(alue.)95 1478 y Fe(int)47 b(fits_write_key_str)c(/)48
+b(ffpkys)286 1591 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(char)g
+(*value,)g(char)h(*comment,)334 1704 y(>)h(int)e(*status\))95
+1930 y(int)h(fits_write_key_[log,)c(lng])j(/)95 b(ffpky[lj])286
+2042 y(\(fitsfile)46 b(*fptr,)g(char)g(*keyname,)g(DTYPE)g(numval,)g
+(char)g(*comment,)334 2155 y(>)i(int)e(*status\))95 2381
+y(int)h(fits_write_key_[flt,)c(dbl,)j(fixflg,)g(fixdbl])g(/)h
+(ffpky[edfg])286 2494 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)
+g(numval,)g(int)h(decimals,)286 2607 y(char)g(*comment,)e(>)j(int)f
+(*status\))95 2833 y(int)g(fits_write_key_[cmp,)c(dblcmp,)i(fixcmp,)h
+(fixdblcmp])f(/)j(ffpk[yc,ym,fc,fm])286 2946 y(\(fitsfile)e(*fptr,)g
+(char)g(*keyname,)g(DTYPE)g(*numval,)g(int)g(decimals,)286
+3059 y(char)h(*comment,)e(>)j(int)f(*status\))0 3304
+y Fi(2)81 b Fj(W)-8 b(rite)30 b(\(app)s(end\))e(a)i(string)f(v)-5
+b(alued)29 b(k)m(eyw)m(ord)h(in)m(to)g(the)f(CHU)h(whic)m(h)e(ma)m(y)i
+(b)s(e)f(longer)h(than)e(68)i(c)m(haracters)227 3417
+y(in)43 b(length.)80 b(This)42 b(uses)h(the)g(Long)h(String)e(Keyw)m
+(ord)h(con)m(v)m(en)m(tion)j(that)d(is)h(describ)s(ed)e(in)h(the`Lo)s
+(cal)227 3530 y(FITS)38 b(Con)m(v)m(en)m(tions')i(section)g(in)f
+(Chapter)f(4.)66 b(Since)38 b(this)h(uses)f(a)h(non-standard)f(FITS)g
+(con)m(v)m(en)m(tion)227 3643 y(to)45 b(enco)s(de)f(the)g(long)h(k)m
+(eyw)m(ord)f(string,)k(programs)43 b(whic)m(h)h(use)g(this)g(routine)g
+(should)f(also)h(call)i(the)227 3756 y(\014ts)p 354 3756
+28 4 v 33 w(write)p 589 3756 V 33 w(k)m(ey)p 755 3756
+V 33 w(longw)m(arn)26 b(routine)f(to)h(add)f(some)h(COMMENT)f(k)m(eyw)m
+(ords)g(to)h(w)m(arn)f(users)g(of)g(the)h(FITS)227 3868
+y(\014le)43 b(that)h(this)e(con)m(v)m(en)m(tion)j(is)e(b)s(eing)f
+(used.)78 b(The)42 b(\014ts)p 2220 3868 V 32 w(write)p
+2454 3868 V 33 w(k)m(ey)p 2620 3868 V 34 w(longw)m(arn)h(routine)g
+(also)h(writes)f(a)227 3981 y(k)m(eyw)m(ord)29 b(called)g(LONGSTRN)e
+(to)i(record)f(the)g(v)m(ersion)h(of)f(the)g(longstring)h(con)m(v)m(en)
+m(tion)h(that)f(has)f(b)s(een)227 4094 y(used,)35 b(in)f(case)i(a)f
+(new)e(con)m(v)m(en)m(tion)k(is)e(adopted)f(at)h(some)g(p)s(oin)m(t)f
+(in)h(the)f(future.)52 b(If)34 b(the)h(LONGSTRN)227 4207
+y(k)m(eyw)m(ord)43 b(is)g(already)g(presen)m(t)g(in)g(the)f(header,)k
+(then)d(\014ts)p 2332 4207 V 32 w(write)p 2566 4207 V
+33 w(k)m(ey)p 2732 4207 V 34 w(longw)m(arn)g(will)g(simply)f(return)227
+4320 y(without)31 b(doing)f(an)m(ything.)95 4565 y Fe(int)47
+b(fits_write_key_longstr)42 b(/)48 b(ffpkls)286 4678
+y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(char)g(*longstr,)g(char)g
+(*comment,)334 4791 y(>)i(int)e(*status\))95 5017 y(int)h
+(fits_write_key_longwarn)42 b(/)47 b(ffplsw)286 5130
+y(\(fitsfile)f(*fptr,)g(>)h(int)g(*status\))0 5375 y
+Fi(3)81 b Fj(W)-8 b(rite)38 b(\(app)s(end\))d(a)i(n)m(um)m(b)s(ered)e
+(sequence)i(of)g(k)m(eyw)m(ords)g(in)m(to)g(the)g(CHU.)g(The)f
+(starting)h(index)f(n)m(um)m(b)s(er)227 5488 y(\(nstart\))30
+b(m)m(ust)e(b)s(e)g(greater)i(than)f(0.)40 b(One)28 b(ma)m(y)i(app)s
+(end)d(the)h(same)i(commen)m(t)f(to)h(ev)m(ery)f(k)m(eyw)m(ord)g(\(and)
+227 5601 y(eliminate)35 b(the)f(need)f(to)h(ha)m(v)m(e)g(an)f(arra)m(y)
+h(of)f(iden)m(tical)j(commen)m(t)e(strings,)g(one)f(for)h(eac)m(h)g(k)m
+(eyw)m(ord\))g(b)m(y)227 5714 y(including)24 b(the)h(amp)s(ersand)e(c)m
+(haracter)j(as)e(the)h(last)g(non-blank)f(c)m(haracter)i(in)e(the)g
+(\(\014rst\))h(COMMENTS)p eop end
+%%Page: 101 109
+TeXDict begin 101 108 bop 0 299 a Fh(9.3.)72 b(SPECIALIZED)29
+b(HEADER)i(KEYW)m(ORD)g(R)m(OUTINES)1465 b Fj(101)227
+555 y(string)23 b(parameter.)38 b(This)22 b(same)h(string)f(will)h
+(then)f(b)s(e)g(used)f(for)h(the)h(commen)m(t)g(\014eld)f(in)g(all)i
+(the)e(k)m(eyw)m(ords.)227 668 y(One)32 b(ma)m(y)h(also)g(en)m(ter)f(a)
+h(n)m(ull)f(p)s(oin)m(ter)g(for)g(the)g(commen)m(t)h(parameter)g(to)f
+(lea)m(v)m(e)j(the)d(commen)m(t)h(\014eld)f(of)227 781
+y(the)f(k)m(eyw)m(ord)g(blank.)95 995 y Fe(int)47 b
+(fits_write_keys_str)c(/)k(ffpkns)286 1107 y(\(fitsfile)f(*fptr,)g
+(char)g(*keyroot,)g(int)h(nstart,)e(int)i(nkeys,)334
+1220 y(char)g(**value,)e(char)i(**comment,)e(>)i(int)g(*status\))95
+1446 y(int)g(fits_write_keys_[log,)42 b(lng])47 b(/)g(ffpkn[lj])286
+1559 y(\(fitsfile)f(*fptr,)g(char)g(*keyroot,)g(int)h(nstart,)e(int)i
+(nkeys,)334 1672 y(DTYPE)f(*numval,)g(char)h(**comment,)e(int)i
+(*status\))95 1898 y(int)g(fits_write_keys_[flt,)42 b(dbl,)47
+b(fixflg,)f(fixdbl])g(/)h(ffpkne[edfg])286 2011 y(\(fitsfile)f(*fptr,)g
+(char)g(*keyroot,)g(int)h(nstart,)e(int)i(nkey,)334 2124
+y(DTYPE)f(*numval,)g(int)h(decimals,)e(char)i(**comment,)e(>)i(int)g
+(*status\))0 2337 y Fi(4)81 b Fj(Cop)m(y)21 b(an)h(indexed)f(k)m(eyw)m
+(ord)i(from)e(one)h(HDU)h(to)f(another,)i(mo)s(difying)e(the)g(index)f
+(n)m(um)m(b)s(er)f(of)i(the)g(k)m(eyw)m(ord)227 2450
+y(name)37 b(in)f(the)g(pro)s(cess.)58 b(F)-8 b(or)37
+b(example,)i(this)d(routine)h(could)f(read)g(the)h(TLMIN3)f(k)m(eyw)m
+(ord)h(from)f(the)227 2563 y(input)30 b(HDU)h(\(b)m(y)g(giving)h(k)m
+(eyro)s(ot)f(=)g(`TLMIN')g(and)f(inn)m(um)f(=)h(3\))i(and)e(write)h(it)
+g(to)g(the)g(output)f(HDU)227 2676 y(with)36 b(the)g(k)m(eyw)m(ord)h
+(name)f(TLMIN4)g(\(b)m(y)g(setting)i(outn)m(um)d(=)h(4\).)58
+b(If)36 b(the)g(input)f(k)m(eyw)m(ord)i(do)s(es)f(not)227
+2789 y(exist,)c(then)e(this)g(routine)g(simply)g(returns)f(without)i
+(indicating)g(an)f(error.)95 3002 y Fe(int)47 b(fits_copy_key)e(/)i
+(ffcpky)286 3115 y(\(fitsfile)f(*infptr,)f(fitsfile)h(*outfptr,)f(int)i
+(innum,)f(int)h(outnum,)334 3228 y(char)g(*keyroot,)e(>)i(int)g
+(*status\))0 3442 y Fi(5)81 b Fj(W)-8 b(rite)30 b(\(app)s(end\))f(a)h
+(`triple)f(precision')h(k)m(eyw)m(ord)g(in)m(to)g(the)g(CHU)f(in)g
+(F28.16)j(format.)41 b(The)29 b(\015oating)h(p)s(oin)m(t)227
+3555 y(k)m(eyw)m(ord)g(v)-5 b(alue)30 b(is)f(constructed)h(b)m(y)f
+(concatenating)j(the)d(input)g(in)m(teger)i(v)-5 b(alue)29
+b(with)g(the)h(input)e(double)227 3668 y(precision)35
+b(fraction)f(v)-5 b(alue)35 b(\(whic)m(h)f(m)m(ust)g(ha)m(v)m(e)i(a)e
+(v)-5 b(alue)35 b(b)s(et)m(w)m(een)f(0.0)i(and)d(1.0\).)53
+b(The)34 b(\013gkyt)h(routine)227 3781 y(should)d(b)s(e)h(used)f(to)i
+(read)f(this)g(k)m(eyw)m(ord)h(v)-5 b(alue,)35 b(b)s(ecause)e(the)g
+(other)h(k)m(eyw)m(ord)f(reading)h(routines)f(will)227
+3893 y(not)e(preserv)m(e)f(the)h(full)f(precision)h(of)f(the)h(v)-5
+b(alue.)95 4107 y Fe(int)47 b(fits_write_key_triple)42
+b(/)48 b(ffpkyt)286 4220 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g
+(long)g(intval,)g(double)g(frac,)334 4333 y(char)h(*comment,)e(>)i(int)
+g(*status\))0 4546 y Fi(6)81 b Fj(W)-8 b(rite)37 b(k)m(eyw)m(ords)f(to)
+h(the)f(CHDU)g(that)h(are)f(de\014ned)f(in)h(an)g(ASCI)s(I)e(template)j
+(\014le.)58 b(The)35 b(format)i(of)f(the)227 4659 y(template)c(\014le)f
+(is)f(describ)s(ed)f(under)g(the)i(\014ts)p 1788 4659
+28 4 v 32 w(parse)p 2028 4659 V 33 w(template)g(routine.)95
+4873 y Fe(int)47 b(fits_write_key_template)42 b(/)47
+b(ffpktp)286 4986 y(\(fitsfile)f(*fptr,)g(const)g(char)h(*filename,)e
+(>)i(int)g(*status\))0 5269 y Fd(9.3.4)112 b(Insert)38
+b(Keyw)m(ord)f(Routines)0 5488 y Fj(These)42 b(insert)h(routines)f(are)
+h(somewhat)g(less)f(e\016cien)m(t)i(than)f(the)f(`up)s(date')g(or)h
+(`write')g(k)m(eyw)m(ord)g(routines)0 5601 y(b)s(ecause)30
+b(the)g(follo)m(wing)i(k)m(eyw)m(ords)e(in)g(the)g(header)g(m)m(ust)g
+(b)s(e)f(shifted)h(do)m(wn)f(to)i(mak)m(e)g(ro)s(om)f(for)g(the)g
+(inserted)0 5714 y(k)m(eyw)m(ord.)41 b(See)31 b(App)s(endix)d(B)j(for)f
+(the)h(de\014nition)f(of)g(the)h(parameters)g(used)e(in)h(these)h
+(routines.)p eop end
+%%Page: 102 110
+TeXDict begin 102 109 bop 0 299 a Fj(102)958 b Fh(CHAPTER)30
+b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Fi(1)81 b Fj(Insert)26 b(a)h(new)f(k)m(eyw)m(ord)
+h(record)g(in)m(to)g(the)g(CHU)g(at)g(the)g(sp)s(eci\014ed)f(p)s
+(osition)h(\(i.e.,)i(immediately)f(preceding)227 668
+y(the)j(\(k)m(eyn)m(um\)th)g(k)m(eyw)m(ord)g(in)f(the)g(header.\))95
+921 y Fe(int)47 b(fits_insert_record)c(/)48 b(ffirec)286
+1034 y(\(fitsfile)e(*fptr,)g(int)h(keynum,)e(char)i(*card,)f(>)i(int)f
+(*status\))0 1286 y Fi(2)81 b Fj(Insert)24 b(a)h(new)g(k)m(eyw)m(ord)g
+(in)m(to)h(the)f(CHU.)g(The)g(new)f(k)m(eyw)m(ord)i(is)f(inserted)f
+(immediately)j(follo)m(wing)f(the)f(last)227 1399 y(k)m(eyw)m(ord)i
+(that)f(has)f(b)s(een)h(read)f(from)h(the)g(header.)39
+b(The)25 b(`longstr')i(v)m(ersion)f(has)f(the)h(same)g(functionalit)m
+(y)227 1512 y(as)33 b(the)g(`str')f(v)m(ersion)h(except)h(that)f(it)g
+(also)g(supp)s(orts)e(the)h(lo)s(cal)i(long)f(string)g(k)m(eyw)m(ord)g
+(con)m(v)m(en)m(tion)h(for)227 1625 y(strings)29 b(longer)g(than)g(68)h
+(c)m(haracters.)41 b(A)29 b(n)m(ull)g(p)s(oin)m(ter)g(ma)m(y)g(b)s(e)g
+(en)m(tered)g(for)g(the)g(commen)m(t)g(parameter)227
+1738 y(whic)m(h)d(will)f(cause)h(the)g(commen)m(t)h(\014eld)e(to)h(b)s
+(e)f(left)h(blank.)39 b(The)25 b(\015t,)h(dbl,)g(cmp,)h(and)e(dblcmp)f
+(v)m(ersions)i(of)227 1851 y(this)k(routine)g(ha)m(v)m(e)h(the)e(added)
+g(feature)i(that)f(if)g(the)g('decimals')h(parameter)f(is)g(negativ)m
+(e,)i(then)d(the)h('G')227 1964 y(displa)m(y)g(format)g(rather)f(then)g
+(the)h('E')f(format)h(will)g(b)s(e)f(used)f(when)h(constructing)h(the)f
+(k)m(eyw)m(ord)h(v)-5 b(alue,)227 2077 y(taking)27 b(the)g(absolute)g
+(v)-5 b(alue)26 b(of)h('decimals')g(for)f(the)h(precision.)39
+b(This)26 b(will)g(suppress)e(trailing)k(zeros,)g(and)227
+2189 y(will)37 b(use)g(a)g(\014xed)f(format)h(rather)g(than)f(an)h(exp)
+s(onen)m(tial)g(format,)i(dep)s(ending)c(on)i(the)g(magnitude)g(of)227
+2302 y(the)31 b(v)-5 b(alue.)95 2555 y Fe(int)47 b(fits_insert_card)d
+(/)j(ffikey)286 2668 y(\(fitsfile)f(*fptr,)g(char)g(*card,)g(>)i(int)f
+(*status\))95 2894 y(int)g(fits_insert_key_[str,)42 b(longstr])k(/)h
+(ffi[kys,)f(kls])286 3007 y(\(fitsfile)g(*fptr,)g(char)g(*keyname,)g
+(char)g(*value,)g(char)h(*comment,)334 3120 y(>)h(int)e(*status\))95
+3345 y(int)h(fits_insert_key_[log,)42 b(lng])47 b(/)g(ffiky[lj])286
+3458 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)g(numval,)g(char)
+g(*comment,)334 3571 y(>)i(int)e(*status\))95 3797 y(int)h
+(fits_insert_key_[flt,)42 b(fixflt,)k(dbl,)h(fixdbl])f(/)h(ffiky[edfg])
+286 3910 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)g(numval,)g
+(int)h(decimals,)334 4023 y(char)g(*comment,)e(>)i(int)g(*status\))95
+4249 y(int)g(fits_insert_key_[cmp,)42 b(dblcmp,)k(fixcmp,)g(fixdblcmp])
+f(/)i(ffik[yc,ym,fc,fm])286 4362 y(\(fitsfile)f(*fptr,)g(char)g
+(*keyname,)g(DTYPE)g(*numval,)g(int)g(decimals,)334 4474
+y(char)h(*comment,)e(>)i(int)g(*status\))0 4727 y Fi(3)81
+b Fj(Insert)32 b(a)i(new)f(k)m(eyw)m(ord)h(with)f(an)h(unde\014ned,)e
+(or)h(n)m(ull,)h(v)-5 b(alue)34 b(in)m(to)h(the)e(CHU.)h(The)f(v)-5
+b(alue)34 b(string)f(of)h(the)227 4840 y(k)m(eyw)m(ord)d(is)g(left)g
+(blank)f(in)g(this)g(case.)95 5093 y Fe(int)47 b(fits_insert_key_null)c
+(/)k(ffikyu)286 5205 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g
+(*comment,)g(>)h(int)g(*status\))0 5495 y Fd(9.3.5)112
+b(Read)38 b(Keyw)m(ord)g(Routines)0 5714 y Fj(Wild)31
+b(card)f(c)m(haracters)i(ma)m(y)f(b)s(e)f(used)f(when)h(sp)s(ecifying)g
+(the)g(name)h(of)f(the)h(k)m(eyw)m(ord)g(to)g(b)s(e)f(read.)p
+eop end
+%%Page: 103 111
+TeXDict begin 103 110 bop 0 299 a Fh(9.3.)72 b(SPECIALIZED)29
+b(HEADER)i(KEYW)m(ORD)g(R)m(OUTINES)1465 b Fj(103)0 555
+y Fi(1)81 b Fj(Read)43 b(a)h(k)m(eyw)m(ord)g(v)-5 b(alue)43
+b(\(with)h(the)f(appropriate)h(data)g(t)m(yp)s(e\))g(and)e(commen)m(t)j
+(from)e(the)g(CHU.)h(If)f(a)227 668 y(NULL)32 b(commen)m(t)h(p)s(oin)m
+(ter)f(is)h(giv)m(en)g(on)f(input,)f(then)h(the)g(commen)m(t)i(string)e
+(will)g(not)g(b)s(e)g(returned.)44 b(If)227 781 y(the)32
+b(v)-5 b(alue)33 b(of)f(the)g(k)m(eyw)m(ord)g(is)g(not)h(de\014ned)d
+(\(i.e.,)k(the)e(v)-5 b(alue)33 b(\014eld)e(is)h(blank\))g(then)g(an)g
+(error)f(status)h(=)227 894 y(V)-10 b(ALUE)p 545 894
+28 4 v 33 w(UNDEFINED)29 b(will)f(b)s(e)g(returned)e(and)h(the)h(input)
+f(v)-5 b(alue)28 b(will)h(not)f(b)s(e)f(c)m(hanged)h(\(except)h(that)
+227 1007 y(\013gkys)i(will)g(reset)g(the)f(v)-5 b(alue)31
+b(to)g(a)g(n)m(ull)f(string\).)95 1252 y Fe(int)47 b(fits_read_key_str)
+c(/)48 b(ffgkys)286 1365 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h
+(char)g(*value,)f(char)g(*comment,)334 1478 y(int)h(*status\);)95
+1704 y(NOTE:)g(after)f(calling)g(the)h(following)e(routine,)h(programs)
+f(must)i(explicitly)e(free)382 1817 y(the)i(memory)f(allocated)f(for)i
+('longstr')e(after)i(it)g(is)g(no)g(longer)f(needed)g(or)382
+1930 y(call)g(fits_free_memory.)95 2155 y(int)h(fits_read_key_longstr)
+42 b(/)48 b(ffgkls)286 2268 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g
+(>)h(char)g(**longstr,)e(char)h(*comment,)620 2381 y(int)h(*status\))95
+2607 y(int)g(fits_free_memory)d(/)j(fffree)286 2720 y(\(char)g
+(*longstr,)e(int)i(*status\);)95 2946 y(int)g(fits_read_key_[log,)c
+(lng,)k(flt,)f(dbl,)h(cmp,)f(dblcmp])g(/)i(ffgky[ljedcm])286
+3059 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(>)h(DTYPE)f(*numval,)g
+(char)h(*comment,)334 3172 y(int)g(*status\))95 3397
+y(int)g(fits_read_key_lnglng)c(/)k(ffgkyjj)286 3510 y(\(fitsfile)f
+(*fptr,)g(char)g(*keyname,)g(>)h(LONGLONG)f(*numval,)f(char)i
+(*comment,)334 3623 y(int)g(*status\))0 3868 y Fi(2)81
+b Fj(Read)36 b(a)h(sequence)f(of)h(indexed)e(k)m(eyw)m(ord)i(v)-5
+b(alues)37 b(\(e.g.,)i(NAXIS1,)g(NAXIS2,)f(...\).)59
+b(The)36 b(input)f(starting)227 3981 y(index)j(n)m(um)m(b)s(er)e
+(\(nstart\))j(m)m(ust)f(b)s(e)f(greater)i(than)e(0.)64
+b(If)37 b(the)h(v)-5 b(alue)38 b(of)g(an)m(y)h(of)f(the)g(k)m(eyw)m
+(ords)g(is)g(not)227 4094 y(de\014ned)c(\(i.e.,)j(the)e(v)-5
+b(alue)35 b(\014eld)f(is)h(blank\))g(then)f(an)g(error)h(status)g(=)f
+(V)-10 b(ALUE)p 3009 4094 V 33 w(UNDEFINED)36 b(will)f(b)s(e)227
+4207 y(returned)21 b(and)h(the)h(input)e(v)-5 b(alue)23
+b(for)f(the)g(unde\014ned)e(k)m(eyw)m(ord\(s\))k(will)e(not)h(b)s(e)e
+(c)m(hanged.)39 b(These)22 b(routines)227 4320 y(do)j(not)h(supp)s(ort)
+d(wild)i(card)h(c)m(haracters)g(in)f(the)h(ro)s(ot)f(name.)39
+b(If)25 b(there)h(are)f(no)g(indexed)g(k)m(eyw)m(ords)h(in)f(the)227
+4433 y(header)35 b(with)f(the)h(input)e(ro)s(ot)i(name)g(then)f(these)h
+(routines)g(do)f(not)h(return)e(a)i(non-zero)h(status)e(v)-5
+b(alue)227 4546 y(and)30 b(instead)h(simply)f(return)f(nfound)f(=)i(0.)
+95 4791 y Fe(int)47 b(fits_read_keys_str)c(/)48 b(ffgkns)286
+4904 y(\(fitsfile)e(*fptr,)g(char)g(*keyname,)g(int)h(nstart,)e(int)i
+(nkeys,)334 5017 y(>)h(char)e(**value,)g(int)h(*nfound,)93
+b(int)47 b(*status\))95 5243 y(int)g(fits_read_keys_[log,)c(lng,)j
+(flt,)h(dbl])g(/)g(ffgkn[ljed])286 5356 y(\(fitsfile)f(*fptr,)g(char)g
+(*keyname,)g(int)h(nstart,)e(int)i(nkeys,)334 5469 y(>)h(DTYPE)e
+(*numval,)f(int)i(*nfound,)f(int)h(*status\))0 5714 y
+Fi(3)81 b Fj(Read)37 b(the)h(v)-5 b(alue)38 b(of)g(a)g(\015oating)g(p)s
+(oin)m(t)g(k)m(eyw)m(ord,)i(returning)d(the)h(in)m(teger)h(and)e
+(fractional)i(parts)e(of)h(the)p eop end
+%%Page: 104 112
+TeXDict begin 104 111 bop 0 299 a Fj(104)958 b Fh(CHAPTER)30
+b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)227 555 y Fj(v)-5 b(alue)35 b(in)e(separate)i(routine)f
+(argumen)m(ts.)52 b(This)33 b(routine)h(ma)m(y)g(b)s(e)f(used)h(to)g
+(read)g(an)m(y)g(k)m(eyw)m(ord)h(but)e(is)227 668 y(esp)s(ecially)f
+(useful)d(for)i(reading)f(the)h('triple)g(precision')f(k)m(eyw)m(ords)h
+(written)g(b)m(y)f(\013pkyt.)95 929 y Fe(int)47 b(fits_read_key_triple)
+c(/)k(ffgkyt)286 1042 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(>)h
+(long)g(*intval,)e(double)h(*frac,)334 1155 y(char)h(*comment,)e(int)i
+(*status\))0 1446 y Fd(9.3.6)112 b(Mo)s(dify)39 b(Keyw)m(ord)e
+(Routines)0 1666 y Fj(These)31 b(routines)h(mo)s(dify)f(the)h(v)-5
+b(alue)32 b(of)g(an)g(existing)g(k)m(eyw)m(ord.)46 b(An)31
+b(error)g(is)h(returned)e(if)i(the)g(k)m(eyw)m(ord)g(do)s(es)0
+1778 y(not)43 b(exist.)77 b(Wild)43 b(card)g(c)m(haracters)h(ma)m(y)f
+(b)s(e)f(used)f(when)h(sp)s(ecifying)g(the)h(name)f(of)h(the)f(k)m(eyw)
+m(ord)h(to)h(b)s(e)0 1891 y(mo)s(di\014ed.)c(See)30 b(App)s(endix)f(B)i
+(for)f(the)g(de\014nition)g(of)h(the)f(parameters)h(used)f(in)g(these)h
+(routines.)0 2152 y Fi(1)81 b Fj(Mo)s(dify)30 b(\(o)m(v)m(erwrite\))i
+(the)f(n)m(th)f(80-c)m(haracter)j(header)d(record)h(in)f(the)g(CHU.)95
+2413 y Fe(int)47 b(fits_modify_record)c(/)48 b(ffmrec)286
+2526 y(\(fitsfile)e(*fptr,)g(int)h(keynum,)e(char)i(*card,)f(>)i(int)f
+(*status\))0 2786 y Fi(2)81 b Fj(Mo)s(dify)37 b(\(o)m(v)m(erwrite\))j
+(the)e(80-c)m(haracter)j(header)c(record)h(for)f(the)h(named)f(k)m(eyw)
+m(ord)h(in)g(the)g(CHU.)g(This)227 2899 y(can)31 b(b)s(e)f(used)f(to)i
+(o)m(v)m(erwrite)h(the)f(name)f(of)h(the)f(k)m(eyw)m(ord)h(as)g(w)m
+(ell)g(as)g(its)g(v)-5 b(alue)30 b(and)g(commen)m(t)i(\014elds.)95
+3160 y Fe(int)47 b(fits_modify_card)d(/)j(ffmcrd)286
+3273 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*card,)g(>)i
+(int)f(*status\))0 3534 y Fi(5)81 b Fj(Mo)s(dify)30 b(the)g(v)-5
+b(alue)31 b(and)e(commen)m(t)i(\014elds)f(of)g(an)g(existing)h(k)m(eyw)
+m(ord)g(in)f(the)g(CHU.)h(The)e(`longstr')i(v)m(ersion)227
+3647 y(has)41 b(the)h(same)f(functionalit)m(y)i(as)e(the)h(`str')f(v)m
+(ersion)h(except)g(that)g(it)g(also)g(supp)s(orts)d(the)j(lo)s(cal)g
+(long)227 3760 y(string)29 b(k)m(eyw)m(ord)h(con)m(v)m(en)m(tion)h(for)
+e(strings)f(longer)i(than)f(68)h(c)m(haracters.)41 b(Optionally)-8
+b(,)31 b(one)e(ma)m(y)h(mo)s(dify)227 3872 y(only)e(the)g(v)-5
+b(alue)28 b(\014eld)g(and)f(lea)m(v)m(e)j(the)e(commen)m(t)h(\014eld)e
+(unc)m(hanged)h(b)m(y)g(setting)g(the)g(input)f(COMMENT)227
+3985 y(parameter)c(equal)h(to)f(the)g(amp)s(ersand)e(c)m(haracter)j
+(\(&\))f(or)g(b)m(y)g(en)m(tering)g(a)g(n)m(ull)g(p)s(oin)m(ter)g(for)f
+(the)h(commen)m(t)227 4098 y(parameter.)40 b(The)24 b(\015t,)i(dbl,)g
+(cmp,)f(and)g(dblcmp)e(v)m(ersions)j(of)f(this)g(routine)g(ha)m(v)m(e)h
+(the)f(added)f(feature)h(that)227 4211 y(if)h(the)h('decimals')g
+(parameter)g(is)f(negativ)m(e,)k(then)c(the)g('G')h(displa)m(y)f
+(format)h(rather)f(then)g(the)g('E')h(format)227 4324
+y(will)i(b)s(e)f(used)f(when)h(constructing)h(the)f(k)m(eyw)m(ord)h(v)
+-5 b(alue,)30 b(taking)f(the)g(absolute)g(v)-5 b(alue)29
+b(of)f('decimals')i(for)227 4437 y(the)37 b(precision.)60
+b(This)35 b(will)i(suppress)e(trailing)i(zeros,)i(and)d(will)h(use)g(a)
+g(\014xed)e(format)i(rather)g(than)f(an)227 4550 y(exp)s(onen)m(tial)c
+(format,)f(dep)s(ending)d(on)j(the)f(magnitude)h(of)f(the)h(v)-5
+b(alue.)95 4811 y Fe(int)47 b(fits_modify_key_[str,)42
+b(longstr])k(/)h(ffm[kys,)f(kls])286 4924 y(\(fitsfile)g(*fptr,)g(char)
+g(*keyname,)g(char)g(*value,)g(char)h(*comment,)334 5036
+y(>)h(int)e(*status\);)95 5262 y(int)h(fits_modify_key_[log,)42
+b(lng])47 b(/)g(ffmky[lj])286 5375 y(\(fitsfile)f(*fptr,)g(char)g
+(*keyname,)g(DTYPE)g(numval,)g(char)g(*comment,)334 5488
+y(>)i(int)e(*status\))95 5714 y(int)h(fits_modify_key_[flt,)42
+b(dbl,)47 b(fixflt,)f(fixdbl])g(/)h(ffmky[edfg])p eop
+end
+%%Page: 105 113
+TeXDict begin 105 112 bop 0 299 a Fh(9.3.)72 b(SPECIALIZED)29
+b(HEADER)i(KEYW)m(ORD)g(R)m(OUTINES)1465 b Fj(105)286
+555 y Fe(\(fitsfile)46 b(*fptr,)g(char)g(*keyname,)g(DTYPE)g(numval,)g
+(int)h(decimals,)334 668 y(char)g(*comment,)e(>)i(int)g(*status\))95
+894 y(int)g(fits_modify_key_[cmp,)42 b(dblcmp,)k(fixcmp,)g(fixdblcmp])f
+(/)i(ffmk[yc,ym,fc,fm])286 1007 y(\(fitsfile)f(*fptr,)g(char)g
+(*keyname,)g(DTYPE)g(*numval,)g(int)g(decimals,)334 1120
+y(char)h(*comment,)e(>)i(int)g(*status\))0 1431 y Fi(6)81
+b Fj(Mo)s(dify)22 b(the)g(v)-5 b(alue)23 b(of)f(an)g(existing)i(k)m
+(eyw)m(ord)e(to)h(b)s(e)f(unde\014ned,)g(or)g(n)m(ull.)38
+b(The)22 b(v)-5 b(alue)22 b(string)h(of)f(the)g(k)m(eyw)m(ord)227
+1544 y(is)30 b(set)h(to)g(blank.)40 b(Optionally)-8 b(,)31
+b(one)f(ma)m(y)h(lea)m(v)m(e)h(the)f(commen)m(t)g(\014eld)e(unc)m
+(hanged)h(b)m(y)g(setting)h(the)f(input)227 1657 y(COMMENT)f(parameter)
+g(equal)g(to)g(the)g(amp)s(ersand)e(c)m(haracter)k(\(&\))e(or)f(b)m(y)h
+(en)m(tering)g(a)g(n)m(ull)g(p)s(oin)m(ter.)95 1968 y
+Fe(int)47 b(fits_modify_key_null)c(/)k(ffmkyu)286 2081
+y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(char)g(*comment,)g(>)h(int)g
+(*status\))0 2433 y Fd(9.3.7)112 b(Up)s(date)39 b(Keyw)m(ord)e
+(Routines)0 2680 y Fi(1)81 b Fj(These)29 b(up)s(date)g(routines)h(mo)s
+(dify)f(the)g(v)-5 b(alue,)31 b(and)e(optionally)i(the)f(commen)m(t)h
+(\014eld,)f(of)g(the)g(k)m(eyw)m(ord)g(if)f(it)227 2793
+y(already)34 b(exists,)g(otherwise)f(the)g(new)f(k)m(eyw)m(ord)h(is)f
+(app)s(ended)f(to)j(the)f(header.)47 b(A)33 b(separate)g(routine)g(is)
+227 2906 y(pro)m(vided)c(for)g(eac)m(h)h(k)m(eyw)m(ord)f(data)h(t)m(yp)
+s(e.)41 b(The)28 b(`longstr')i(v)m(ersion)g(has)e(the)i(same)f
+(functionalit)m(y)h(as)g(the)227 3019 y(`str')h(v)m(ersion)g(except)h
+(that)g(it)f(also)h(supp)s(orts)c(the)j(lo)s(cal)h(long)g(string)e(k)m
+(eyw)m(ord)i(con)m(v)m(en)m(tion)h(for)d(strings)227
+3132 y(longer)i(than)f(68)h(c)m(haracters.)45 b(A)31
+b(n)m(ull)g(p)s(oin)m(ter)h(ma)m(y)f(b)s(e)g(en)m(tered)h(for)f(the)g
+(commen)m(t)i(parameter)e(whic)m(h)227 3245 y(will)i(lea)m(v)m(e)h(the)
+f(commen)m(t)g(\014eld)f(unc)m(hanged)g(or)g(blank.)46
+b(The)31 b(\015t,)i(dbl,)f(cmp,)h(and)e(dblcmp)g(v)m(ersions)i(of)227
+3357 y(this)d(routine)g(ha)m(v)m(e)h(the)e(added)g(feature)i(that)f(if)
+g(the)g('decimals')h(parameter)f(is)g(negativ)m(e,)i(then)d(the)h('G')
+227 3470 y(displa)m(y)g(format)g(rather)f(then)g(the)h('E')f(format)h
+(will)g(b)s(e)f(used)f(when)h(constructing)h(the)f(k)m(eyw)m(ord)h(v)-5
+b(alue,)227 3583 y(taking)27 b(the)g(absolute)g(v)-5
+b(alue)26 b(of)h('decimals')g(for)f(the)h(precision.)39
+b(This)26 b(will)g(suppress)e(trailing)k(zeros,)g(and)227
+3696 y(will)37 b(use)g(a)g(\014xed)f(format)h(rather)g(than)f(an)h(exp)
+s(onen)m(tial)g(format,)i(dep)s(ending)c(on)i(the)g(magnitude)g(of)227
+3809 y(the)31 b(v)-5 b(alue.)95 4121 y Fe(int)47 b
+(fits_update_key_[str,)42 b(longstr])k(/)h(ffu[kys,)f(kls])286
+4233 y(\(fitsfile)g(*fptr,)g(char)g(*keyname,)g(char)g(*value,)g(char)h
+(*comment,)334 4346 y(>)h(int)e(*status\))95 4572 y(int)h
+(fits_update_key_[log,)42 b(lng])47 b(/)g(ffuky[lj])286
+4685 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)g(numval,)g(char)
+g(*comment,)334 4798 y(>)i(int)e(*status\))95 5024 y(int)h
+(fits_update_key_[flt,)42 b(dbl,)47 b(fixflt,)f(fixdbl])g(/)h
+(ffuky[edfg])286 5137 y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)
+g(numval,)g(int)h(decimals,)334 5250 y(char)g(*comment,)e(>)i(int)g
+(*status\))95 5475 y(int)g(fits_update_key_[cmp,)42 b(dblcmp,)k
+(fixcmp,)g(fixdblcmp])f(/)i(ffuk[yc,ym,fc,fm])286 5588
+y(\(fitsfile)f(*fptr,)g(char)g(*keyname,)g(DTYPE)g(*numval,)g(int)g
+(decimals,)334 5701 y(char)h(*comment,)e(>)i(int)g(*status\))p
+eop end
+%%Page: 106 114
+TeXDict begin 106 113 bop 0 299 a Fj(106)958 b Fh(CHAPTER)30
+b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Ff(9.4)135 b(De\014ne)45 b(Data)h(Scaling)g(and)e
+(Unde\014ned)h(Pixel)h(P)l(arameters)0 805 y Fj(These)37
+b(routines)g(set)h(or)f(mo)s(dify)g(the)g(in)m(ternal)h(parameters)g
+(used)e(b)m(y)i(CFITSIO)d(to)j(either)g(scale)h(the)e(data)0
+918 y(or)f(to)h(represen)m(t)f(unde\014ned)d(pixels.)58
+b(Generally)37 b(CFITSIO)d(will)j(scale)g(the)f(data)h(according)g(to)f
+(the)h(v)-5 b(alues)0 1031 y(of)35 b(the)f(BSCALE)g(and)g(BZER)m(O)h
+(\(or)g(TSCALn)d(and)i(TZER)m(On\))g(k)m(eyw)m(ords,)i(ho)m(w)m(ev)m
+(er)g(these)f(routines)f(ma)m(y)0 1144 y(b)s(e)e(used)h(to)h(o)m(v)m
+(erride)g(the)f(k)m(eyw)m(ord)h(v)-5 b(alues.)49 b(This)32
+b(ma)m(y)i(b)s(e)f(useful)f(when)g(one)i(w)m(an)m(ts)f(to)h(read)f(or)g
+(write)h(the)0 1257 y(ra)m(w)e(unscaled)g(v)-5 b(alues)33
+b(in)f(the)g(FITS)f(\014le.)47 b(Similarly)-8 b(,)33
+b(CFITSIO)e(generally)i(uses)f(the)g(v)-5 b(alue)33 b(of)f(the)h(BLANK)
+0 1370 y(or)40 b(TNULLn)f(k)m(eyw)m(ord)h(to)h(signify)e(an)h
+(unde\014ned)e(pixel,)43 b(but)c(these)h(routines)g(ma)m(y)g(b)s(e)f
+(used)g(to)i(o)m(v)m(erride)0 1483 y(this)32 b(v)-5 b(alue.)48
+b(These)32 b(routines)g(do)h(not)f(create)i(or)f(mo)s(dify)e(the)i
+(corresp)s(onding)e(header)i(k)m(eyw)m(ord)f(v)-5 b(alues.)48
+b(See)0 1596 y(App)s(endix)29 b(B)h(for)h(the)f(de\014nition)g(of)h
+(the)f(parameters)h(used)e(in)i(these)f(routines.)0 1827
+y Fi(1)81 b Fj(Reset)26 b(the)g(scaling)g(factors)g(in)f(the)h(primary)
+f(arra)m(y)h(or)f(image)i(extension;)h(do)s(es)d(not)g(c)m(hange)i(the)
+f(BSCALE)227 1940 y(and)i(BZER)m(O)g(k)m(eyw)m(ord)h(v)-5
+b(alues)28 b(and)g(only)g(a\013ects)i(the)e(automatic)j(scaling)e(p)s
+(erformed)e(when)g(the)h(data)227 2053 y(elemen)m(ts)f(are)f
+(written/read)g(to/from)g(the)g(FITS)f(\014le.)39 b(When)25
+b(reading)h(from)f(a)h(FITS)f(\014le)g(the)h(returned)227
+2166 y(data)i(v)-5 b(alue)28 b(=)f(\(the)h(v)-5 b(alue)28
+b(giv)m(en)h(in)e(the)g(FITS)g(arra)m(y\))h(*)g(BSCALE)f(+)g(BZER)m(O.)
+g(The)g(in)m(v)m(erse)i(form)m(ula)227 2279 y(is)i(used)e(when)h
+(writing)g(data)h(v)-5 b(alues)31 b(to)g(the)f(FITS)g(\014le.)95
+2511 y Fe(int)47 b(fits_set_bscale)d(/)j(ffpscl)286 2624
+y(\(fitsfile)f(*fptr,)g(double)g(scale,)g(double)g(zero,)g(>)i(int)f
+(*status\))0 2856 y Fi(2)81 b Fj(Reset)39 b(the)f(scaling)i(parameters)
+e(for)h(a)f(table)h(column;)k(do)s(es)38 b(not)g(c)m(hange)i(the)e
+(TSCALn)f(or)h(TZER)m(On)227 2968 y(k)m(eyw)m(ord)29
+b(v)-5 b(alues)29 b(and)e(only)i(a\013ects)g(the)g(automatic)h(scaling)
+f(p)s(erformed)e(when)g(the)i(data)g(elemen)m(ts)h(are)227
+3081 y(written/read)i(to/from)g(the)g(FITS)f(\014le.)44
+b(When)31 b(reading)g(from)g(a)h(FITS)f(\014le)g(the)h(returned)e(data)
+i(v)-5 b(alue)227 3194 y(=)25 b(\(the)i(v)-5 b(alue)26
+b(giv)m(en)g(in)f(the)h(FITS)f(arra)m(y\))h(*)g(TSCAL)e(+)i(TZER)m(O.)e
+(The)h(in)m(v)m(erse)i(form)m(ula)f(is)f(used)g(when)227
+3307 y(writing)31 b(data)g(v)-5 b(alues)30 b(to)i(the)e(FITS)g(\014le.)
+95 3539 y Fe(int)47 b(fits_set_tscale)d(/)j(fftscl)286
+3652 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(double)i(scale,)f(double)g
+(zero,)334 3765 y(>)i(int)e(*status\))0 3997 y Fi(3)81
+b Fj(De\014ne)36 b(the)g(in)m(teger)i(v)-5 b(alue)36
+b(to)h(b)s(e)e(used)h(to)h(signify)f(unde\014ned)e(pixels)i(in)g(the)g
+(primary)f(arra)m(y)i(or)f(image)227 4109 y(extension.)54
+b(This)34 b(is)g(only)h(used)f(if)g(BITPIX)g(=)h(8,)h(16,)g(or)f(32.)54
+b(This)34 b(do)s(es)g(not)h(create)h(or)e(c)m(hange)i(the)227
+4222 y(v)-5 b(alue)31 b(of)g(the)f(BLANK)h(k)m(eyw)m(ord)g(in)f(the)g
+(header.)95 4454 y Fe(int)47 b(fits_set_imgnull)d(/)j(ffpnul)286
+4567 y(\(fitsfile)f(*fptr,)g(LONGLONG)f(nulval,)h(>)i(int)e(*status\))0
+4799 y Fi(4)81 b Fj(De\014ne)36 b(the)g(string)g(to)g(b)s(e)f(used)g
+(to)i(signify)f(unde\014ned)e(pixels)i(in)f(a)h(column)g(in)g(an)f
+(ASCI)s(I)g(table.)58 b(This)227 4912 y(do)s(es)30 b(not)h(create)h(or)
+e(c)m(hange)i(the)e(v)-5 b(alue)31 b(of)g(the)f(TNULLn)g(k)m(eyw)m
+(ord.)95 5143 y Fe(int)47 b(fits_set_atblnull)c(/)48
+b(ffsnul)286 5256 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(char)i
+(*nulstr,)f(>)h(int)g(*status\))0 5488 y Fi(5)81 b Fj(De\014ne)34
+b(the)h(v)-5 b(alue)34 b(to)h(b)s(e)f(used)g(to)h(signify)f
+(unde\014ned)e(pixels)j(in)f(an)g(in)m(teger)i(column)e(in)g(a)g
+(binary)g(table)227 5601 y(\(where)29 b(TF)m(ORMn)f(=)g('B',)i('I',)f
+(or)f('J'\).)i(This)d(do)s(es)i(not)f(create)j(or)d(c)m(hange)i(the)e
+(v)-5 b(alue)29 b(of)g(the)g(TNULLn)227 5714 y(k)m(eyw)m(ord.)p
+eop end
+%%Page: 107 115
+TeXDict begin 107 114 bop 0 299 a Fh(9.5.)72 b(SPECIALIZED)29
+b(FITS)g(PRIMAR)-8 b(Y)31 b(ARRA)-8 b(Y)32 b(OR)d(IMA)m(GE)j(EXTENSION)
+d(I/O)h(R)m(OUTINES)80 b Fj(107)95 555 y Fe(int)47 b(fits_set_btblnull)
+c(/)48 b(fftnul)286 668 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e
+(LONGLONG)h(nulval,)g(>)h(int)g(*status\))0 995 y Ff(9.5)135
+b(Sp)t(ecialized)61 b(FITS)e(Primary)i(Arra)l(y)f(or)h(IMA)l(GE)e
+(Extension)j(I/O)306 1144 y(Routines)0 1394 y Fj(These)27
+b(routines)h(read)f(or)h(write)g(data)g(v)-5 b(alues)28
+b(in)g(the)f(primary)g(data)h(arra)m(y)h(\(i.e.,)g(the)f(\014rst)f(HDU)
+i(in)e(the)h(FITS)0 1507 y(\014le\))37 b(or)g(an)f(IMA)m(GE)h
+(extension.)60 b(Automatic)39 b(data)e(t)m(yp)s(e)g(con)m(v)m(ersion)g
+(is)g(p)s(erformed)e(for)h(if)h(the)g(data)g(t)m(yp)s(e)0
+1620 y(of)c(the)g(FITS)f(arra)m(y)h(\(as)g(de\014ned)f(b)m(y)g(the)h
+(BITPIX)g(k)m(eyw)m(ord\))g(di\013ers)g(from)f(the)h(data)g(t)m(yp)s(e)
+g(of)g(the)g(arra)m(y)g(in)0 1733 y(the)c(calling)i(routine.)40
+b(The)28 b(data)i(v)-5 b(alues)29 b(are)h(automatically)i(scaled)d(b)m
+(y)g(the)h(BSCALE)e(and)g(BZER)m(O)h(header)0 1846 y(v)-5
+b(alues)25 b(as)h(they)f(are)g(b)s(eing)g(written)g(or)g(read)f(from)h
+(the)g(FITS)f(arra)m(y)-8 b(.)40 b(Unlik)m(e)26 b(the)f(basic)h
+(routines)e(describ)s(ed)g(in)0 1959 y(the)31 b(previous)g(c)m(hapter,)
+i(most)e(of)h(these)g(routines)f(sp)s(eci\014cally)h(supp)s(ort)d(the)j
+(FITS)e(random)h(groups)f(format.)0 2072 y(See)h(App)s(endix)d(B)j(for)
+f(the)h(de\014nition)f(of)g(the)h(parameters)g(used)e(in)h(these)h
+(routines.)0 2232 y(The)24 b(more)h(primitiv)m(e)h(reading)f(and)f
+(writing)h(routines)f(\(i.)40 b(e.,)26 b(\013ppr)p 2364
+2232 28 4 v 32 w(,)g(\013ppn)p 2653 2232 V 31 w(,)g(\013ppn,)f(\013gp)m
+(v)p 3185 2232 V 33 w(,)h(or)f(\013gpf)p 3552 2232 V
+32 w(\))g(simply)0 2345 y(treat)g(the)g(primary)e(arra)m(y)i(as)f(a)h
+(long)g(1-dimensional)g(arra)m(y)g(of)f(pixels,)i(ignoring)f(the)f(in)m
+(trinsic)h(dimensionalit)m(y)0 2458 y(of)30 b(the)g(arra)m(y)-8
+b(.)42 b(When)30 b(dealing)h(with)e(a)i(2D)g(image,)g(for)f(example,)h
+(the)f(application)i(program)e(m)m(ust)g(calculate)0
+2571 y(the)i(pixel)g(o\013set)g(in)f(the)h(1-D)h(arra)m(y)f(that)g
+(corresp)s(onds)e(to)i(an)m(y)g(particular)g(X,)g(Y)f(co)s(ordinate)i
+(in)e(the)g(image.)0 2684 y(C)25 b(programmers)h(should)f(note)h(that)g
+(the)h(ordering)e(of)h(arra)m(ys)g(in)g(FITS)f(\014les,)i(and)e(hence)h
+(in)g(all)g(the)g(CFITSIO)0 2797 y(calls,)40 b(is)d(more)g(similar)h
+(to)f(the)h(dimensionalit)m(y)g(of)f(arra)m(ys)g(in)g(F)-8
+b(ortran)38 b(rather)f(than)f(C.)h(F)-8 b(or)38 b(instance)g(if)f(a)0
+2910 y(FITS)28 b(image)i(has)e(NAXIS1)h(=)f(100)i(and)e(NAXIS2)h(=)f
+(50,)i(then)e(a)h(2-D)h(arra)m(y)f(just)f(large)i(enough)e(to)i(hold)e
+(the)0 3022 y(image)k(should)d(b)s(e)h(declared)h(as)f(arra)m
+(y[50][100])k(and)c(not)h(as)f(arra)m(y[100][50].)0 3183
+y(F)-8 b(or)30 b(con)m(v)m(enience,)i(higher-lev)m(el)g(routines)d(are)
+h(also)h(pro)m(vided)e(to)h(sp)s(eci\014cally)h(deal)f(with)f(2D)i
+(images)f(\(\013p2d)p 3872 3183 V 0 3296 a(and)c(\013g2d)p
+372 3296 V 33 w(\))h(and)f(3D)i(data)f(cub)s(es)f(\(\013p3d)p
+1467 3296 V 59 w(and)g(\013g3d)p 1893 3296 V 33 w(\).)40
+b(The)26 b(dimensionalit)m(y)i(of)f(the)g(FITS)f(image)i(is)e(passed)0
+3408 y(b)m(y)36 b(the)h(naxis1,)h(naxis2,)h(and)d(naxis3)h(parameters)f
+(and)g(the)h(declared)f(dimensions)g(of)h(the)f(program)g(arra)m(y)0
+3521 y(are)30 b(passed)g(in)f(the)h(dim1)g(and)f(dim2)h(parameters.)41
+b(Note)31 b(that)f(the)g(dimensions)f(of)h(the)g(program)g(arra)m(y)g
+(ma)m(y)0 3634 y(b)s(e)35 b(larger)h(than)f(the)h(dimensions)f(of)h
+(the)g(FITS)e(arra)m(y)-8 b(.)58 b(F)-8 b(or)36 b(example)g(if)g(a)g
+(FITS)e(image)j(with)e(NAXIS1)h(=)0 3747 y(NAXIS2)g(=)g(400)h(is)f
+(read)g(in)m(to)h(a)g(program)f(arra)m(y)g(whic)m(h)g(is)g(dimensioned)
+f(as)i(512)g(x)f(512)h(pixels,)h(then)e(the)0 3860 y(image)g(will)f
+(just)f(\014ll)g(the)h(lo)m(w)m(er)h(left)f(corner)f(of)h(the)g(arra)m
+(y)g(with)f(pixels)h(in)f(the)h(range)g(1)g(-)g(400)g(in)g(the)f(X)h
+(an)0 3973 y(Y)g(directions.)54 b(This)34 b(has)h(the)g(e\013ect)h(of)f
+(taking)g(a)h(con)m(tiguous)f(set)h(of)f(pixel)g(v)-5
+b(alue)35 b(in)f(the)h(FITS)f(arra)m(y)i(and)0 4086 y(writing)30
+b(them)g(to)h(a)f(non-con)m(tiguous)h(arra)m(y)g(in)e(program)h(memory)
+g(\(i.e.,)i(there)e(are)h(no)m(w)f(some)g(blank)g(pixels)0
+4199 y(around)f(the)i(edge)g(of)g(the)f(image)i(in)e(the)g(program)g
+(arra)m(y\).)0 4359 y(The)k(most)i(general)f(set)h(of)f(routines)f
+(\(\013pss)p 1560 4359 V 33 w(,)i(\013gsv)p 1836 4359
+V 33 w(,)g(and)e(\013gsf)p 2273 4359 V 33 w(\))h(ma)m(y)h(b)s(e)e(used)
+g(to)h(transfer)g(a)g(rectangular)0 4472 y(subset)27
+b(of)h(the)g(pixels)f(in)h(a)g(FITS)f(N-dimensional)h(image)h(to)f(or)g
+(from)f(an)g(arra)m(y)i(whic)m(h)e(has)g(b)s(een)g(declared)h(in)0
+4585 y(the)h(calling)h(program.)40 b(The)28 b(fpixel)h(and)f(lpixel)h
+(parameters)g(are)g(in)m(teger)h(arra)m(ys)f(whic)m(h)f(sp)s(ecify)g
+(the)h(starting)0 4698 y(and)k(ending)f(pixel)i(co)s(ordinate)g(in)f
+(eac)m(h)h(dimension)f(\(starting)h(with)f(1,)h(not)g(0\))g(of)f(the)g
+(FITS)g(image)h(that)g(is)0 4811 y(to)f(b)s(e)e(read)g(or)h(written.)45
+b(It)32 b(is)g(imp)s(ortan)m(t)g(to)h(note)f(that)h(these)f(are)g(the)g
+(starting)h(and)e(ending)g(pixels)h(in)g(the)0 4924 y(FITS)i(image,)k
+(not)d(in)f(the)h(declared)h(arra)m(y)f(in)f(the)h(program.)54
+b(The)35 b(arra)m(y)g(parameter)g(in)g(these)g(routines)g(is)0
+5036 y(treated)f(simply)e(as)h(a)f(large)i(one-dimensional)g(arra)m(y)f
+(of)f(the)h(appropriate)g(data)g(t)m(yp)s(e)g(con)m(taining)h(the)f
+(pixel)0 5149 y(v)-5 b(alues;)37 b(The)d(pixel)h(v)-5
+b(alues)35 b(in)g(the)f(FITS)g(arra)m(y)h(are)g(read/written)g(from/to)
+h(this)e(program)h(arra)m(y)g(in)f(strict)0 5262 y(sequence)d(without)f
+(an)m(y)h(gaps;)g(it)g(is)f(up)f(to)j(the)e(calling)i(routine)e(to)i
+(correctly)f(in)m(terpret)g(the)g(dimensionalit)m(y)0
+5375 y(of)d(this)f(arra)m(y)-8 b(.)41 b(The)27 b(t)m(w)m(o)i(FITS)e
+(reading)h(routines)f(\(\013gsv)p 2018 5375 V 61 w(and)g(\013gsf)p
+2415 5375 V 61 w(\))h(also)g(ha)m(v)m(e)h(an)f(`inc')g(parameter)g
+(whic)m(h)0 5488 y(de\014nes)33 b(the)h(data)h(sampling)f(in)m(terv)-5
+b(al)36 b(in)d(eac)m(h)j(dimension)d(of)h(the)h(FITS)e(arra)m(y)-8
+b(.)53 b(F)-8 b(or)35 b(example,)h(if)e(inc[0]=2)0 5601
+y(and)i(inc[1]=3)j(when)d(reading)h(a)g(2-dimensional)h(FITS)e(image,)
+41 b(then)36 b(only)h(ev)m(ery)h(other)f(pixel)h(in)e(the)i(\014rst)0
+5714 y(dimension)30 b(and)g(ev)m(ery)h(3rd)f(pixel)g(in)g(the)h(second)
+f(dimension)g(will)h(b)s(e)f(returned)f(to)i(the)f('arra)m(y')i
+(parameter.)p eop end
+%%Page: 108 116
+TeXDict begin 108 115 bop 0 299 a Fj(108)958 b Fh(CHAPTER)30
+b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Fj(Tw)m(o)f(t)m(yp)s(es)h(of)f(routines)g(are)h
+(pro)m(vided)e(to)i(read)f(the)h(data)g(arra)m(y)f(whic)m(h)g(di\013er)
+g(in)g(the)h(w)m(a)m(y)g(unde\014ned)d(pixels)0 668 y(are)38
+b(handled.)60 b(The)37 b(\014rst)g(t)m(yp)s(e)g(of)g(routines)h
+(\(e.g.,)i(\013gp)m(v)p 2059 668 28 4 v 34 w(\))d(simply)g(return)f(an)
+h(arra)m(y)h(of)g(data)g(elemen)m(ts)g(in)0 781 y(whic)m(h)30
+b(unde\014ned)f(pixels)h(are)h(set)g(equal)g(to)h(a)f(v)-5
+b(alue)31 b(sp)s(eci\014ed)e(b)m(y)i(the)g(user)e(in)i(the)f(`n)m(ulv)
+-5 b(al')32 b(parameter.)41 b(An)0 894 y(additional)30
+b(feature)f(of)g(these)h(routines)e(is)h(that)h(if)f(the)g(user)f(sets)
+h(n)m(ulv)-5 b(al)29 b(=)g(0,)h(then)e(no)h(c)m(hec)m(ks)h(for)f
+(unde\014ned)0 1007 y(pixels)c(will)g(b)s(e)g(p)s(erformed,)f(th)m(us)h
+(reducing)f(the)h(amoun)m(t)h(of)f(CPU)f(pro)s(cessing.)39
+b(The)24 b(second)h(t)m(yp)s(e)g(of)g(routines)0 1120
+y(\(e.g.,)36 b(\013gpf)p 413 1120 V 32 w(\))e(returns)e(the)i(data)g
+(elemen)m(t)g(arra)m(y)g(and,)g(in)f(addition,)h(a)g(c)m(har)g(arra)m
+(y)f(that)h(indicates)h(whether)0 1233 y(the)f(v)-5 b(alue)34
+b(of)g(the)f(corresp)s(onding)g(data)h(pixel)g(is)g(unde\014ned)d(\(=)j
+(1\))g(or)g(de\014ned)e(\(=)i(0\).)51 b(The)33 b(latter)i(t)m(yp)s(e)f
+(of)0 1346 y(routines)d(ma)m(y)h(b)s(e)e(more)i(con)m(v)m(enien)m(t)h
+(to)f(use)f(in)g(some)g(circumstances,)i(ho)m(w)m(ev)m(er,)g(it)e
+(requires)g(an)g(additional)0 1458 y(arra)m(y)g(of)f(logical)j(v)-5
+b(alues)31 b(whic)m(h)f(can)h(b)s(e)e(un)m(wieldy)h(when)g(w)m(orking)g
+(with)g(large)i(data)f(arra)m(ys.)0 1732 y Fi(1)81 b
+Fj(W)-8 b(rite)31 b(elemen)m(ts)h(in)m(to)f(the)g(FITS)f(data)h(arra)m
+(y)-8 b(.)95 2005 y Fe(int)47 b(fits_write_img)d(/)k(ffppr)286
+2117 y(\(fitsfile)e(*fptr,)g(int)h(datatype,)e(LONGLONG)g(firstelem,)g
+(LONGLONG)h(nelements,)334 2230 y(DTYPE)g(*array,)g(int)h(*status\);)95
+2456 y(int)g(fits_write_img_[byt,)c(sht,)j(usht,)h(int,)f(uint,)h(lng,)
+f(ulng,)h(lnglng,)e(flt,)i(dbl])g(/)286 2569 y
+(ffppr[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286 2682 y(\(fitsfile)f(*fptr,)g
+(long)g(group,)g(LONGLONG)g(firstelem,)f(LONGLONG)h(nelements,)334
+2795 y(DTYPE)g(*array,)g(>)i(int)f(*status\);)95 3021
+y(int)g(fits_write_imgnull)c(/)48 b(ffppn)286 3134 y(\(fitsfile)e
+(*fptr,)g(int)h(datatype,)e(LONGLONG)g(firstelem,)g(LONGLONG)h
+(nelements,)334 3247 y(DTYPE)g(*array,)g(DTYPE)h(*nulval,)e(>)j(int)f
+(*status\);)95 3472 y(int)g(fits_write_imgnull_[byt,)42
+b(sht,)k(usht,)h(int,)f(uint,)h(lng,)f(ulng,)h(lnglng,)e(flt,)i(dbl])g
+(/)286 3585 y(ffppn[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286
+3698 y(\(fitsfile)f(*fptr,)g(long)g(group,)g(LONGLONG)g(firstelem,)525
+3811 y(LONGLONG)g(nelements,)f(DTYPE)h(*array,)g(DTYPE)g(nulval,)g(>)h
+(int)g(*status\);)0 4084 y Fi(2)81 b Fj(Set)30 b(data)h(arra)m(y)g
+(elemen)m(ts)h(as)e(unde\014ned.)95 4357 y Fe(int)47
+b(fits_write_img_null)c(/)k(ffppru)286 4470 y(\(fitsfile)f(*fptr,)g
+(long)g(group,)g(LONGLONG)g(firstelem,)f(LONGLONG)h(nelements,)334
+4583 y(>)i(int)e(*status\))0 4856 y Fi(3)81 b Fj(W)-8
+b(rite)32 b(v)-5 b(alues)30 b(in)m(to)i(group)e(parameters.)42
+b(This)30 b(routine)g(only)h(applies)g(to)g(the)g(`Random)f(Group)s
+(ed')g(FITS)227 4969 y(format)22 b(whic)m(h)f(has)g(b)s(een)f(used)h
+(for)g(applications)h(in)f(radio)h(in)m(terferometry)-8
+b(,)25 b(but)20 b(is)h(o\016cially)i(deprecated)227 5082
+y(for)30 b(future)g(use.)95 5355 y Fe(int)47 b(fits_write_grppar_[byt,)
+42 b(sht,)k(usht,)h(int,)f(uint,)h(lng,)f(ulng,)h(lnglng,)f(flt,)g
+(dbl])h(/)286 5468 y(ffpgp[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286
+5581 y(\(fitsfile)f(*fptr,)g(long)g(group,)g(long)h(firstelem,)e(long)i
+(nelements,)334 5694 y(>)h(DTYPE)e(*array,)g(int)h(*status\))p
+eop end
+%%Page: 109 117
+TeXDict begin 109 116 bop 0 299 a Fh(9.5.)72 b(SPECIALIZED)29
+b(FITS)g(PRIMAR)-8 b(Y)31 b(ARRA)-8 b(Y)32 b(OR)d(IMA)m(GE)j(EXTENSION)
+d(I/O)h(R)m(OUTINES)80 b Fj(109)0 555 y Fi(4)h Fj(W)-8
+b(rite)31 b(a)g(2-D)h(or)e(3-D)h(image)h(in)m(to)f(the)g(data)g(arra)m
+(y)-8 b(.)95 776 y Fe(int)47 b(fits_write_2d_[byt,)c(sht,)k(usht,)f
+(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(flt,)g(dbl])h(/)286
+889 y(ffp2d[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286 1002 y(\(fitsfile)f
+(*fptr,)g(long)g(group,)g(LONGLONG)g(dim1,)g(LONGLONG)g(naxis1,)334
+1115 y(LONGLONG)g(naxis2,)f(DTYPE)i(*array,)f(>)h(int)g(*status\))95
+1341 y(int)g(fits_write_3d_[byt,)c(sht,)k(usht,)f(int,)h(uint,)f(lng,)h
+(ulng,)f(lnglng,)g(flt,)g(dbl])h(/)286 1453 y
+(ffp3d[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286 1566 y(\(fitsfile)f(*fptr,)g
+(long)g(group,)g(LONGLONG)g(dim1,)g(LONGLONG)g(dim2,)g(LONGLONG)g
+(naxis1,)334 1679 y(LONGLONG)g(naxis2,)f(LONGLONG)h(naxis3,)g(DTYPE)g
+(*array,)g(>)h(int)g(*status\))0 1900 y Fi(5)81 b Fj(W)-8
+b(rite)31 b(an)g(arbitrary)f(data)h(subsection)f(in)m(to)i(the)e(data)h
+(arra)m(y)-8 b(.)95 2121 y Fe(int)47 b(fits_write_subset_[byt,)42
+b(sht,)k(usht,)h(int,)f(uint,)h(lng,)f(ulng,)h(lnglng,)f(flt,)g(dbl])h
+(/)286 2234 y(ffpss[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286
+2347 y(\(fitsfile)f(*fptr,)g(long)g(group,)g(long)h(naxis,)f(long)h
+(*naxes,)334 2460 y(long)g(*fpixel,)e(long)i(*lpixel,)e(DTYPE)i
+(*array,)f(>)h(int)g(*status\))0 2680 y Fi(6)81 b Fj(Read)30
+b(elemen)m(ts)i(from)e(the)g(FITS)g(data)h(arra)m(y)-8
+b(.)95 2901 y Fe(int)47 b(fits_read_img)e(/)i(ffgpv)286
+3014 y(\(fitsfile)f(*fptr,)g(int)94 b(datatype,)46 b(long)g(firstelem,)
+f(long)i(nelements,)334 3127 y(DTYPE)f(*nulval,)g(>)h(DTYPE)g(*array,)f
+(int)h(*anynul,)e(int)i(*status\))95 3353 y(int)g(fits_read_img_[byt,)c
+(sht,)k(usht,)f(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(flt,)g(dbl])h
+(/)286 3466 y(ffgpv[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286
+3579 y(\(fitsfile)f(*fptr,)g(long)g(group,)g(long)h(firstelem,)e(long)i
+(nelements,)334 3692 y(DTYPE)f(nulval,)g(>)i(DTYPE)e(*array,)g(int)h
+(*anynul,)e(int)i(*status\))95 3917 y(int)g(fits_read_imgnull)c(/)48
+b(ffgpf)286 4030 y(\(fitsfile)e(*fptr,)g(int)94 b(datatype,)46
+b(long)g(firstelem,)f(long)i(nelements,)334 4143 y(>)h(DTYPE)e(*array,)
+g(char)g(*nullarray,)f(int)i(*anynul,)f(int)g(*status\))95
+4369 y(int)95 b(fits_read_imgnull_[byt,)42 b(sht,)k(usht,)h(int,)f
+(uint,)h(lng,)f(ulng,)h(flt,)f(dbl])h(/)334 4482 y
+(ffgpf[b,i,ui,k,uk,j,uj,jj)o(,e,)o(d])334 4595 y(\(fitsfile)e(*fptr,)h
+(long)h(group,)f(long)h(firstelem,)e(long)h(nelements,)334
+4708 y(>)i(DTYPE)e(*array,)g(char)g(*nullarray,)f(int)i(*anynul,)f(int)
+g(*status\))0 4929 y Fi(7)81 b Fj(Read)29 b(v)-5 b(alues)31
+b(from)e(group)g(parameters.)41 b(This)29 b(routine)g(only)h(applies)g
+(to)h(the)e(`Random)h(Group)s(ed')f(FITS)227 5041 y(format)22
+b(whic)m(h)f(has)g(b)s(een)f(used)h(for)g(applications)h(in)f(radio)h
+(in)m(terferometry)-8 b(,)25 b(but)20 b(is)h(o\016cially)i(deprecated)
+227 5154 y(for)30 b(future)g(use.)95 5375 y Fe(int)95
+b(fits_read_grppar_[byt,)42 b(sht,)k(usht,)h(int,)f(uint,)h(lng,)f
+(ulng,)h(lnglng,)f(flt,)g(dbl])h(/)334 5488 y
+(ffggp[b,i,ui,k,uk,j,uj,jj)o(,e,)o(d])334 5601 y(\(fitsfile)e(*fptr,)h
+(long)h(group,)f(long)h(firstelem,)e(long)h(nelements,)334
+5714 y(>)i(DTYPE)e(*array,)g(int)h(*status\))p eop end
+%%Page: 110 118
+TeXDict begin 110 117 bop 0 299 a Fj(110)958 b Fh(CHAPTER)30
+b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Fi(8)81 b Fj(Read)37 b(2-D)h(or)g(3-D)g(image)g
+(from)f(the)g(data)h(arra)m(y)-8 b(.)62 b(Unde\014ned)36
+b(pixels)i(in)e(the)i(arra)m(y)g(will)f(b)s(e)g(set)g(equal)227
+668 y(to)32 b(the)g(v)-5 b(alue)31 b(of)h('n)m(ulv)-5
+b(al',)32 b(unless)f(n)m(ulv)-5 b(al=0)31 b(in)g(whic)m(h)g(case)h(no)f
+(testing)i(for)e(unde\014ned)e(pixels)i(will)h(b)s(e)227
+781 y(p)s(erformed.)95 1049 y Fe(int)95 b(fits_read_2d_[byt,)43
+b(sht,)k(usht,)f(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(flt,)g(dbl])h
+(/)334 1162 y(ffg2d[b,i,ui,k,uk,j,uj,jj)o(,e,)o(d])334
+1275 y(\(fitsfile)e(*fptr,)h(long)h(group,)f(DTYPE)h(nulval,)e
+(LONGLONG)h(dim1,)g(LONGLONG)g(naxis1,)334 1387 y(LONGLONG)g(naxis2,)f
+(>)j(DTYPE)e(*array,)g(int)h(*anynul,)f(int)g(*status\))95
+1613 y(int)95 b(fits_read_3d_[byt,)43 b(sht,)k(usht,)f(int,)h(uint,)f
+(lng,)h(ulng,)f(lnglng,)g(flt,)g(dbl])h(/)334 1726 y
+(ffg3d[b,i,ui,k,uk,j,uj,jj)o(,e,)o(d])334 1839 y(\(fitsfile)e(*fptr,)h
+(long)h(group,)f(DTYPE)h(nulval,)e(LONGLONG)h(dim1,)334
+1952 y(LONGLONG)g(dim2,)g(LONGLONG)g(naxis1,)f(LONGLONG)h(naxis2,)g
+(LONGLONG)f(naxis3,)334 2065 y(>)j(DTYPE)e(*array,)g(int)h(*anynul,)e
+(int)i(*status\))0 2333 y Fi(9)81 b Fj(Read)30 b(an)g(arbitrary)h(data)
+g(subsection)f(from)g(the)g(data)i(arra)m(y)-8 b(.)95
+2600 y Fe(int)95 b(fits_read_subset_[byt,)42 b(sht,)k(usht,)h(int,)f
+(uint,)h(lng,)f(ulng,)h(lnglng,)f(flt,)g(dbl])h(/)334
+2713 y(ffgsv[b,i,ui,k,uk,j,uj,jj)o(,e,)o(d])334 2826
+y(\(fitsfile)e(*fptr,)h(int)h(group,)f(int)h(naxis,)f(long)h(*naxes,)
+334 2939 y(long)g(*fpixel,)e(long)i(*lpixel,)e(long)i(*inc,)f(DTYPE)h
+(nulval,)334 3052 y(>)h(DTYPE)e(*array,)g(int)h(*anynul,)e(int)i
+(*status\))95 3278 y(int)95 b(fits_read_subsetnull_[byt)o(,)42
+b(sht,)k(usht,)h(int,)f(uint,)h(lng,)f(ulng,)h(lnglng,)f(flt,)g(dbl])h
+(/)334 3391 y(ffgsf[b,i,ui,k,uk,j,uj,jj)o(,e,)o(d])334
+3504 y(\(fitsfile)e(*fptr,)h(int)h(group,)f(int)h(naxis,)f(long)h
+(*naxes,)334 3617 y(long)g(*fpixel,)e(long)i(*lpixel,)e(long)i(*inc,)f
+(>)i(DTYPE)e(*array,)334 3730 y(char)h(*nullarray,)d(int)j(*anynul,)f
+(int)h(*status\))0 4073 y Ff(9.6)135 b(Sp)t(ecialized)46
+b(FITS)e(ASCI)t(I)g(and)g(Binary)h(T)-11 b(able)45 b(Routines)0
+4328 y Fd(9.6.1)112 b(General)39 b(Column)f(Routines)0
+4543 y Fi(1)81 b Fj(Get)31 b(information)f(ab)s(out)g(an)g(existing)h
+(ASCI)s(I)d(or)i(binary)f(table)i(column.)41 b(A)30 b(n)m(ull)g(p)s
+(oin)m(ter)g(ma)m(y)h(b)s(e)e(giv)m(en)227 4656 y(for)40
+b(an)m(y)h(of)f(the)h(output)f(parameters)g(that)h(are)g(not)f(needed.)
+70 b(D)m(A)-8 b(T)g(A)g(TYPE)42 b(is)e(a)h(c)m(haracter)h(string)227
+4769 y(whic)m(h)d(returns)e(the)i(data)g(t)m(yp)s(e)g(of)g(the)f
+(column)h(as)g(de\014ned)e(b)m(y)i(the)f(TF)m(ORMn)h(k)m(eyw)m(ord)g
+(\(e.g.,)j('I',)227 4882 y('J','E',)28 b('D',)g(etc.\).)41
+b(In)27 b(the)g(case)g(of)g(an)g(ASCI)s(I)f(c)m(haracter)i(column,)g(t)
+m(yp)s(eco)s(de)f(will)g(ha)m(v)m(e)h(a)f(v)-5 b(alue)28
+b(of)f(the)227 4994 y(form)g('An')g(where)f('n')h(is)g(an)g(in)m(teger)
+i(expressing)d(the)h(width)g(of)g(the)g(\014eld)g(in)f(c)m(haracters.)
+41 b(F)-8 b(or)28 b(example,)227 5107 y(if)g(TF)m(ORM)h(=)e('160A8')k
+(then)d(\013gb)s(cl)g(will)g(return)f(t)m(yp)s(ec)m(har='A8')j(and)d
+(rep)s(eat=20.)41 b(All)29 b(the)f(returned)227 5220
+y(parameters)j(are)g(scalar)g(quan)m(tities.)95 5488
+y Fe(int)47 b(fits_get_acolparms)c(/)48 b(ffgacl)191
+5601 y(\(fitsfile)d(*fptr,)h(int)h(colnum,)f(>)h(char)g(*ttype,)f(long)
+h(*tbcol,)239 5714 y(char)f(*tunit,)g(char)h(*tform,)f(double)g
+(*scale,)f(double)i(*zero,)p eop end
+%%Page: 111 119
+TeXDict begin 111 118 bop 0 299 a Fh(9.6.)72 b(SPECIALIZED)29
+b(FITS)g(ASCI)s(I)g(AND)i(BINAR)-8 b(Y)32 b(T)-8 b(ABLE)30
+b(R)m(OUTINES)933 b Fj(111)239 555 y Fe(char)46 b(*nulstr,)g(char)g
+(*tdisp,)g(int)h(*status\))95 781 y(int)g(fits_get_bcolparms)c(/)48
+b(ffgbcl)286 894 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(>)j(char)f
+(*ttype,)e(char)i(*tunit,)334 1007 y(char)g(*typechar,)e(long)h
+(*repeat,)g(double)g(*scale,)g(double)g(*zero,)334 1120
+y(long)h(*nulval,)e(char)i(*tdisp,)f(int)94 b(*status\))95
+1346 y(int)47 b(fits_get_bcolparmsll)c(/)k(ffgbclll)286
+1458 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(>)j(char)f(*ttype,)e(char)
+i(*tunit,)334 1571 y(char)g(*typechar,)e(LONGLONG)g(*repeat,)h(double)g
+(*scale,)g(double)g(*zero,)334 1684 y(LONGLONG)g(*nulval,)f(char)i
+(*tdisp,)f(int)94 b(*status\))0 1937 y Fi(2)81 b Fj(Return)27
+b(optimal)i(n)m(um)m(b)s(er)e(of)h(ro)m(ws)g(to)h(read)f(or)g(write)g
+(at)h(one)f(time)h(for)f(maxim)m(um)g(I/O)f(e\016ciency)-8
+b(.)42 b(Refer)227 2050 y(to)25 b(the)g(\\Optimizing)g(Co)s(de")f
+(section)i(in)e(Chapter)g(5)g(for)g(more)h(discussion)f(on)g(ho)m(w)g
+(to)h(use)f(this)h(routine.)95 2416 y Fe(int)47 b(fits_get_rowsize)d(/)
+j(ffgrsz)286 2529 y(\(fitsfile)f(*fptr,)g(long)g(*nrows,)g(*status\))0
+2782 y Fi(3)81 b Fj(De\014ne)22 b(the)g(zero)i(indexed)d(b)m(yte)i
+(o\013set)g(of)g(the)f('heap')h(measured)e(from)h(the)h(start)g(of)f
+(the)g(binary)g(table)h(data.)227 2895 y(By)30 b(default)g(the)f(heap)h
+(is)f(assumed)g(to)h(start)g(immediately)h(follo)m(wing)g(the)f
+(regular)f(table)i(data,)f(i.e.,)h(at)227 3008 y(lo)s(cation)38
+b(NAXIS1)f(x)g(NAXIS2.)59 b(This)36 b(routine)g(is)h(only)f(relev)-5
+b(an)m(t)38 b(for)e(binary)g(tables)h(whic)m(h)g(con)m(tain)227
+3121 y(v)-5 b(ariable)25 b(length)g(arra)m(y)g(columns)f(\(with)g(TF)m
+(ORMn)g(=)g('Pt'\).)40 b(This)23 b(routine)i(also)g(automatically)i
+(writes)227 3234 y(the)35 b(v)-5 b(alue)35 b(of)g(theap)f(to)h(a)g(k)m
+(eyw)m(ord)g(in)g(the)f(extension)h(header.)53 b(This)34
+b(routine)g(m)m(ust)h(b)s(e)f(called)h(after)227 3347
+y(the)c(required)e(k)m(eyw)m(ords)h(ha)m(v)m(e)i(b)s(een)d(written)h
+(\(with)g(\013ph)m(bn\))f(but)h(b)s(efore)f(an)m(y)i(data)g(is)f
+(written)g(to)h(the)227 3460 y(table.)95 3713 y Fe(int)47
+b(fits_write_theap)d(/)j(ffpthp)286 3826 y(\(fitsfile)f(*fptr,)g(long)g
+(theap,)g(>)i(int)f(*status\))0 4079 y Fi(4)81 b Fj(T)-8
+b(est)37 b(the)f(con)m(ten)m(ts)i(of)f(the)g(binary)e(table)j(v)-5
+b(ariable)37 b(arra)m(y)g(heap,)h(returning)e(the)g(size)h(of)g(the)g
+(heap,)h(the)227 4192 y(n)m(um)m(b)s(er)30 b(of)h(un)m(used)e(b)m(ytes)
+j(that)f(are)g(not)g(curren)m(tly)g(p)s(oin)m(ted)g(to)h(b)m(y)e(an)m
+(y)i(of)f(the)g(descriptors,)g(and)f(the)227 4304 y(n)m(um)m(b)s(er)d
+(of)h(b)m(ytes)h(whic)m(h)f(are)g(p)s(oin)m(ted)g(to)h(b)m(y)f(m)m
+(ultiple)h(descriptors.)40 b(It)28 b(also)h(returns)e(v)-5
+b(alid)29 b(=)e(F)-10 b(ALSE)227 4417 y(if)31 b(an)m(y)f(of)h(the)f
+(descriptors)h(p)s(oin)m(t)f(to)h(in)m(v)-5 b(alid)31
+b(addresses)f(out)g(of)h(range)g(of)f(the)h(heap.)95
+4670 y Fe(int)47 b(fits_test_heap)d(/)k(fftheap)286 4783
+y(\(fitsfile)e(*fptr,)g(>)h(LONGLONG)f(*heapsize,)f(LONGLONG)g
+(*unused,)h(LONGLONG)f(*overlap,)334 4896 y(int)i(*validheap,)e(int)i
+(*status\))0 5149 y Fi(5)81 b Fj(Re-pac)m(k)33 b(the)f(v)m(ectors)h(in)
+e(the)h(binary)f(table)i(v)-5 b(ariable)32 b(arra)m(y)g(heap)g(to)g
+(reco)m(v)m(er)i(an)m(y)e(un)m(used)e(space.)45 b(Nor-)227
+5262 y(mally)-8 b(,)40 b(when)d(a)g(v)m(ector)i(in)e(a)g(v)-5
+b(ariable)38 b(length)g(arra)m(y)f(column)g(is)g(rewritten)h(the)f
+(previously)g(written)227 5375 y(arra)m(y)d(remains)e(in)h(the)g(heap)f
+(as)h(w)m(asted)h(un)m(used)d(space.)49 b(This)32 b(routine)g(will)i
+(repac)m(k)f(the)g(arra)m(ys)g(that)227 5488 y(are)h(still)g(in)f(use,)
+h(th)m(us)f(eliminating)h(an)m(y)g(b)m(ytes)g(in)f(the)g(heap)g(that)h
+(are)g(no)f(longer)h(in)f(use.)49 b(Note)34 b(that)227
+5601 y(if)f(sev)m(eral)h(v)m(ectors)g(p)s(oin)m(t)e(to)i(the)e(same)h
+(b)m(ytes)g(in)g(the)f(heap,)i(then)e(this)g(routine)h(will)g(mak)m(e)g
+(duplicate)227 5714 y(copies)e(of)g(the)g(b)m(ytes)f(for)h(eac)m(h)g(v)
+m(ector,)h(whic)m(h)e(will)h(actually)h(expand)e(the)g(size)i(of)e(the)
+h(heap.)p eop end
+%%Page: 112 120
+TeXDict begin 112 119 bop 0 299 a Fj(112)958 b Fh(CHAPTER)30
+b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)95 555 y Fe(int)47 b(fits_compress_heap)c(/)48
+b(ffcmph)286 668 y(\(fitsfile)e(*fptr,)g(>)h(int)g(*status\))0
+976 y Fd(9.6.2)112 b(Lo)m(w-Lev)m(el)39 b(T)-9 b(able)38
+b(Access)f(Routines)0 1198 y Fj(The)g(follo)m(wing)j(2)e(routines)f
+(pro)m(vide)h(lo)m(w-lev)m(el)j(access)e(to)g(the)f(data)g(in)g(ASCI)s
+(I)e(or)i(binary)f(tables)h(and)g(are)0 1311 y(mainly)29
+b(useful)f(as)i(an)f(e\016cien)m(t)h(w)m(a)m(y)g(to)g(cop)m(y)g(all)g
+(or)f(part)g(of)g(a)g(table)h(from)f(one)g(lo)s(cation)i(to)f(another.)
+40 b(These)0 1424 y(routines)24 b(simply)g(read)g(or)h(write)f(the)h
+(sp)s(eci\014ed)e(n)m(um)m(b)s(er)g(of)i(consecutiv)m(e)h(b)m(ytes)f
+(in)f(an)g(ASCI)s(I)f(or)h(binary)g(table,)0 1537 y(without)g(regard)g
+(for)f(column)h(b)s(oundaries)e(or)i(the)g(ro)m(w)g(length)g(in)f(the)h
+(table.)40 b(These)23 b(routines)h(do)f(not)h(p)s(erform)0
+1650 y(an)m(y)36 b(mac)m(hine)h(dep)s(enden)m(t)e(data)i(con)m(v)m
+(ersion)g(or)g(b)m(yte)f(sw)m(apping.)58 b(See)36 b(App)s(endix)e(B)j
+(for)f(the)g(de\014nition)g(of)0 1763 y(the)31 b(parameters)f(used)g
+(in)g(these)h(routines.)0 2037 y Fi(1)81 b Fj(Read)30
+b(or)h(write)f(a)h(consecutiv)m(e)h(arra)m(y)f(of)g(b)m(ytes)f(from)g
+(an)h(ASCI)s(I)d(or)j(binary)e(table)95 2311 y Fe(int)47
+b(fits_read_tblbytes)c(/)48 b(ffgtbb)286 2424 y(\(fitsfile)e(*fptr,)g
+(LONGLONG)f(firstrow,)h(LONGLONG)f(firstchar,)g(LONGLONG)h(nchars,)334
+2537 y(>)i(unsigned)d(char)i(*values,)e(int)i(*status\))95
+2763 y(int)g(fits_write_tblbytes)c(/)k(ffptbb)286 2876
+y(\(fitsfile)f(*fptr,)g(LONGLONG)f(firstrow,)h(LONGLONG)f(firstchar,)g
+(LONGLONG)h(nchars,)334 2989 y(unsigned)g(char)g(*values,)g(>)h(int)g
+(*status\))0 3296 y Fd(9.6.3)112 b(W)-9 b(rite)37 b(Column)h(Data)g
+(Routines)0 3516 y Fi(1)81 b Fj(W)-8 b(rite)28 b(elemen)m(ts)h(in)m(to)
+f(an)g(ASCI)s(I)d(or)j(binary)e(table)j(column)e(\(in)g(the)h(CDU\).)g
+(The)f(data)h(t)m(yp)s(e)f(of)h(the)f(arra)m(y)227 3629
+y(is)k(implied)f(b)m(y)g(the)h(su\016x)e(of)i(the)f(routine)h(name.)95
+3903 y Fe(int)47 b(fits_write_col_str)c(/)48 b(ffpcls)286
+4016 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f
+(LONGLONG)h(firstelem,)334 4129 y(LONGLONG)g(nelements,)f(char)h
+(**array,)g(>)h(int)g(*status\))95 4355 y(int)g
+(fits_write_col_[log,byt,sh)o(t,u)o(sht,)o(int,)o(uin)o(t,ln)o(g,ul)o
+(ng,)o(lngl)o(ng,f)o(lt,)o(dbl,)o(cmp,)o(dbl)o(cmp])41
+b(/)286 4468 y(ffpcl[l,b,i,ui,k,uk,j,uj,j)o(j,e)o(,d,c)o(,m])286
+4581 y(\(fitsfile)46 b(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)
+525 4694 y(LONGLONG)g(firstelem,)f(LONGLONG)g(nelements,)g(DTYPE)h
+(*array,)g(>)i(int)f(*status\))0 4968 y Fi(2)81 b Fj(W)-8
+b(rite)36 b(elemen)m(ts)h(in)m(to)g(an)e(ASCI)s(I)f(or)i(binary)e
+(table)j(column)e(substituting)g(the)h(appropriate)f(FITS)g(n)m(ull)227
+5081 y(v)-5 b(alue)31 b(for)f(an)m(y)h(elemen)m(ts)h(that)f(are)f
+(equal)h(to)g(the)g(n)m(ulv)-5 b(al)31 b(parameter.)95
+5355 y Fe(int)47 b(fits_write_colnull_[log,)42 b(byt,)k(sht,)h(usht,)f
+(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(flt,)h(dbl])f(/)286
+5468 y(ffpcn[l,b,i,ui,k,uk,j,uj,j)o(j,e)o(,d])286 5581
+y(\(fitsfile)g(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f
+(LONGLONG)h(firstelem,)334 5694 y(LONGLONG)g(nelements,)f(DTYPE)h
+(*array,)g(DTYPE)g(nulval,)g(>)h(int)g(*status\))p eop
+end
+%%Page: 113 121
+TeXDict begin 113 120 bop 0 299 a Fh(9.6.)72 b(SPECIALIZED)29
+b(FITS)g(ASCI)s(I)g(AND)i(BINAR)-8 b(Y)32 b(T)-8 b(ABLE)30
+b(R)m(OUTINES)933 b Fj(113)0 555 y Fi(3)81 b Fj(W)-8
+b(rite)27 b(string)g(elemen)m(ts)h(in)m(to)f(a)g(binary)f(table)h
+(column)f(\(in)h(the)f(CDU\))i(substituting)e(the)g(FITS)g(n)m(ull)g(v)
+-5 b(alue)227 668 y(for)30 b(an)m(y)h(elemen)m(ts)h(that)f(are)g(equal)
+f(to)i(the)e(n)m(ulstr)g(string.)95 921 y Fe(int)47 b
+(fits_write_colnull_str)42 b(/)48 b(ffpcns)286 1034 y(\(fitsfile)e
+(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f(LONGLONG)h(firstelem,)
+334 1147 y(LONGLONG)g(nelements,)f(char)h(**array,)g(char)g(*nulstr,)g
+(>)h(int)g(*status\))0 1399 y Fi(4)81 b Fj(W)-8 b(rite)34
+b(bit)f(v)-5 b(alues)33 b(in)m(to)h(a)g(binary)e(b)m(yte)h(\('B'\))i
+(or)e(bit)g(\('X'\))h(table)g(column)f(\(in)g(the)g(CDU\).)h(Larra)m(y)
+f(is)g(an)227 1512 y(arra)m(y)25 b(of)g(c)m(haracters)h(corresp)s
+(onding)e(to)h(the)g(sequence)g(of)f(bits)h(to)g(b)s(e)f(written.)39
+b(If)24 b(an)g(elemen)m(t)i(of)f(larra)m(y)227 1625 y(is)k(true)g
+(\(not)h(equal)f(to)h(zero\))g(then)f(the)g(corresp)s(onding)f(bit)h
+(in)g(the)g(FITS)f(table)i(is)f(set)h(to)g(1,)g(otherwise)227
+1738 y(the)37 b(bit)g(is)g(set)g(to)g(0.)60 b(The)37
+b('X')g(column)f(in)h(a)g(FITS)f(table)h(is)g(alw)m(a)m(ys)h(padded)e
+(out)h(to)g(a)g(m)m(ultiple)h(of)227 1851 y(8)f(bits)f(where)g(the)g
+(bit)h(arra)m(y)f(starts)h(with)f(the)h(most)f(signi\014can)m(t)h(bit)g
+(of)f(the)h(b)m(yte)g(and)e(w)m(orks)h(do)m(wn)227 1964
+y(to)m(w)m(ards)h(the)g(1's)f(bit.)59 b(F)-8 b(or)37
+b(example,)i(a)d('4X')h(arra)m(y)-8 b(,)39 b(with)d(the)h(\014rst)e
+(bit)i(=)e(1)i(and)f(the)g(remaining)h(3)227 2077 y(bits)31
+b(=)g(0)h(is)f(equiv)-5 b(alen)m(t)33 b(to)f(the)g(8-bit)g(unsigned)e
+(b)m(yte)i(decimal)g(v)-5 b(alue)32 b(of)g(128)g(\('1000)i(0000B'\).)g
+(In)d(the)227 2189 y(case)h(of)f('X')g(columns,)g(CFITSIO)f(can)h
+(write)g(to)g(all)h(8)f(bits)g(of)g(eac)m(h)h(b)m(yte)f(whether)f(they)
+h(are)g(formally)227 2302 y(v)-5 b(alid)34 b(or)f(not.)50
+b(Th)m(us)32 b(if)i(the)f(column)g(is)h(de\014ned)e(as)h('4X',)i(and)e
+(one)g(calls)i(\013p)s(clx)e(with)g(\014rstbit=1)g(and)227
+2415 y(n)m(bits=8,)i(then)f(all)g(8)h(bits)e(will)h(b)s(e)g(written)g
+(in)m(to)g(the)g(\014rst)f(b)m(yte)i(\(as)f(opp)s(osed)f(to)i(writing)e
+(the)h(\014rst)g(4)227 2528 y(bits)28 b(in)m(to)h(the)e(\014rst)g(ro)m
+(w)h(and)f(then)h(the)g(next)g(4)g(bits)f(in)m(to)i(the)f(next)g(ro)m
+(w\),)h(ev)m(en)f(though)f(the)h(last)h(4)f(bits)227
+2641 y(of)j(eac)m(h)g(b)m(yte)g(are)f(formally)h(not)f(de\014ned)f(and)
+h(should)f(all)i(b)s(e)e(set)i(=)f(0.)41 b(It)30 b(should)f(also)j(b)s
+(e)d(noted)h(that)227 2754 y(it)k(is)e(more)h(e\016cien)m(t)i(to)e
+(write)g('X')h(columns)e(an)h(en)m(tire)h(b)m(yte)f(at)h(a)f(time,)h
+(instead)f(of)g(bit)g(b)m(y)g(bit.)48 b(An)m(y)227 2867
+y(of)31 b(the)g(CFITSIO)e(routines)h(that)i(write)f(to)g(columns)f
+(\(e.g.)43 b(\014ts)p 2481 2867 28 4 v 33 w(write)p 2716
+2867 V 33 w(col)p 2859 2867 V 33 w(b)m(yt\))32 b(ma)m(y)f(b)s(e)f(used)
+g(for)g(this)227 2980 y(purp)s(ose.)60 b(These)36 b(routines)i(will)f
+(in)m(terpret)h('X')f(columns)g(as)g(though)g(they)h(w)m(ere)f('B')h
+(columns)f(\(e.g.,)227 3093 y('1X')32 b(through)d('8X')j(is)e(equiv)-5
+b(alen)m(t)32 b(to)f('1B',)h(and)e('9X')h(through)f('16X')i(is)e(equiv)
+-5 b(alen)m(t)32 b(to)f('2B'\).)95 3345 y Fe(int)47 b
+(fits_write_col_bit)c(/)48 b(ffpclx)286 3458 y(\(fitsfile)e(*fptr,)g
+(int)h(colnum,)e(LONGLONG)h(firstrow,)f(long)i(firstbit,)334
+3571 y(long)g(nbits,)f(char)g(*larray,)g(>)h(int)g(*status\))0
+3824 y Fi(5)81 b Fj(W)-8 b(rite)35 b(the)f(descriptor)g(for)f(a)h(v)-5
+b(ariable)35 b(length)f(column)g(in)f(a)i(binary)e(table.)52
+b(This)33 b(routine)g(can)i(b)s(e)e(used)227 3937 y(in)h(conjunction)g
+(with)f(\013gdes)h(to)h(enable)f(2)g(or)g(more)g(arra)m(ys)h(to)f(p)s
+(oin)m(t)g(to)h(the)f(same)g(storage)h(lo)s(cation)227
+4050 y(to)c(sa)m(v)m(e)h(storage)g(space)f(if)f(the)h(arra)m(ys)g(are)g
+(iden)m(tical.)191 4302 y Fe(int)47 b(fits_write_descript)42
+b(/)48 b(ffpdes)382 4415 y(\(fitsfile)d(*fptr,)h(int)h(colnum,)f
+(LONGLONG)f(rownum,)h(LONGLONG)g(repeat,)430 4528 y(LONGLONG)f(offset,)
+h(>)h(int)g(*status\))0 4818 y Fd(9.6.4)112 b(Read)38
+b(Column)h(Data)f(Routines)0 5036 y Fj(Tw)m(o)28 b(t)m(yp)s(es)f(of)h
+(routines)f(are)h(pro)m(vided)f(to)h(get)h(the)e(column)h(data)g(whic)m
+(h)f(di\013er)g(in)g(the)h(w)m(a)m(y)h(unde\014ned)c(pixels)0
+5149 y(are)40 b(handled.)66 b(The)39 b(\014rst)g(set)h(of)f(routines)g
+(\(\013gcv\))i(simply)e(return)f(an)h(arra)m(y)h(of)g(data)g(elemen)m
+(ts)g(in)f(whic)m(h)0 5262 y(unde\014ned)28 b(pixels)j(are)g(set)g
+(equal)g(to)g(a)g(v)-5 b(alue)31 b(sp)s(eci\014ed)f(b)m(y)h(the)f(user)
+g(in)g(the)h('n)m(ullv)-5 b(al')32 b(parameter.)41 b(If)30
+b(n)m(ullv)-5 b(al)0 5375 y(=)22 b(0,)j(then)d(no)g(c)m(hec)m(ks)i(for)
+e(unde\014ned)e(pixels)j(will)g(b)s(e)f(p)s(erformed,)g(th)m(us)g
+(increasing)i(the)e(sp)s(eed)g(of)g(the)h(program.)0
+5488 y(The)36 b(second)g(set)g(of)h(routines)e(\(\013gcf)7
+b(\))38 b(returns)d(the)h(data)h(elemen)m(t)g(arra)m(y)g(and)e(in)h
+(addition)g(a)h(logical)h(arra)m(y)0 5601 y(of)33 b(\015ags)f(whic)m(h)
+g(de\014nes)g(whether)g(the)g(corresp)s(onding)g(data)h(pixel)f(is)h
+(unde\014ned.)44 b(See)33 b(App)s(endix)e(B)i(for)f(the)0
+5714 y(de\014nition)e(of)h(the)f(parameters)h(used)e(in)h(these)h
+(routines.)p eop end
+%%Page: 114 122
+TeXDict begin 114 121 bop 0 299 a Fj(114)958 b Fh(CHAPTER)30
+b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)0 555 y Fj(An)m(y)39 b(column,)h(regardless)f(of)g(it's)g
+(in)m(trinsic)g(data)h(t)m(yp)s(e,)h(ma)m(y)e(b)s(e)f(read)g(as)h(a)g
+(string.)66 b(It)38 b(should)g(b)s(e)g(noted)0 668 y(ho)m(w)m(ev)m(er)
+32 b(that)f(reading)f(a)h(n)m(umeric)f(column)g(as)h(a)f(string)h(is)f
+(10)h(-)g(100)g(times)g(slo)m(w)m(er)h(than)e(reading)g(the)h(same)0
+781 y(column)g(as)h(a)g(n)m(um)m(b)s(er)e(due)h(to)h(the)g(large)h(o)m
+(v)m(erhead)f(in)g(constructing)g(the)g(formatted)g(strings.)44
+b(The)31 b(displa)m(y)0 894 y(format)26 b(of)g(the)h(returned)d
+(strings)i(will)g(b)s(e)g(determined)f(b)m(y)h(the)g(TDISPn)f(k)m(eyw)m
+(ord,)j(if)d(it)i(exists,)h(otherwise)e(b)m(y)0 1007
+y(the)h(data)g(t)m(yp)s(e)f(of)h(the)f(column.)39 b(The)26
+b(length)h(of)g(the)f(returned)f(strings)h(\(not)h(including)f(the)h(n)
+m(ull)f(terminating)0 1120 y(c)m(haracter\))38 b(can)e(b)s(e)g
+(determined)f(with)h(the)g(\014ts)p 1722 1120 28 4 v
+33 w(get)p 1875 1120 V 34 w(col)p 2019 1120 V 33 w(displa)m(y)p
+2330 1120 V 33 w(width)g(routine.)57 b(The)36 b(follo)m(wing)h(TDISPn)0
+1233 y(displa)m(y)31 b(formats)f(are)h(curren)m(tly)f(supp)s(orted:)191
+1490 y Fe(Iw.m)142 b(Integer)191 1603 y(Ow.m)g(Octal)46
+b(integer)191 1716 y(Zw.m)142 b(Hexadecimal)45 b(integer)191
+1829 y(Fw.d)142 b(Fixed)46 b(floating)g(point)191 1942
+y(Ew.d)142 b(Exponential)45 b(floating)g(point)191 2055
+y(Dw.d)142 b(Exponential)45 b(floating)g(point)191 2168
+y(Gw.d)142 b(General;)46 b(uses)g(Fw.d)h(if)g(significance)d(not)j
+(lost,)g(else)f(Ew.d)0 2425 y Fj(where)37 b(w)h(is)g(the)g(width)f(in)h
+(c)m(haracters)h(of)f(the)h(displa)m(y)m(ed)f(v)-5 b(alues,)41
+b(m)c(is)h(the)g(minim)m(um)g(n)m(um)m(b)s(er)e(of)i(digits)0
+2538 y(displa)m(y)m(ed,)31 b(and)f(d)g(is)g(the)h(n)m(um)m(b)s(er)e(of)
+h(digits)h(to)g(the)g(righ)m(t)g(of)g(the)f(decimal.)42
+b(The)30 b(.m)g(\014eld)g(is)g(optional.)0 2796 y Fi(1)81
+b Fj(Read)29 b(elemen)m(ts)i(from)e(an)g(ASCI)s(I)f(or)i(binary)f
+(table)h(column)f(\(in)h(the)f(CDU\).)i(These)e(routines)g(return)g
+(the)227 2909 y(v)-5 b(alues)30 b(of)g(the)g(table)h(column)f(arra)m(y)
+g(elemen)m(ts.)42 b(Unde\014ned)28 b(arra)m(y)j(elemen)m(ts)g(will)f(b)
+s(e)f(returned)g(with)h(a)227 3022 y(v)-5 b(alue)30 b(=)e(n)m(ulv)-5
+b(al,)30 b(unless)e(n)m(ulv)-5 b(al)29 b(=)f(0)i(\(or)f(=)f(')h(')g
+(for)g(\013gcvs\))g(in)g(whic)m(h)f(case)i(no)f(c)m(hec)m(king)i(for)d
+(unde\014ned)227 3135 y(v)-5 b(alues)28 b(will)g(b)s(e)f(p)s(erformed.)
+39 b(The)27 b(ANYF)h(parameter)g(is)g(set)g(to)g(true)g(if)g(an)m(y)f
+(of)h(the)g(returned)f(elemen)m(ts)227 3247 y(are)k(unde\014ned.)95
+3505 y Fe(int)47 b(fits_read_col_str)c(/)48 b(ffgcvs)286
+3618 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f
+(LONGLONG)h(firstelem,)334 3731 y(LONGLONG)g(nelements,)f(char)h
+(*nulstr,)g(>)h(char)g(**array,)e(int)i(*anynul,)334
+3844 y(int)g(*status\))95 4070 y(int)g(fits_read_col_[log,byt,sht)o
+(,us)o(ht,i)o(nt,u)o(int)o(,lng)o(,uln)o(g,)41 b(lnglng,)46
+b(flt,)h(dbl,)g(cmp,)f(dblcmp])g(/)286 4183 y
+(ffgcv[l,b,i,ui,k,uk,j,uj,j)o(j,e)o(,d,c)o(,m])286 4295
+y(\(fitsfile)g(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f
+(LONGLONG)h(firstelem,)334 4408 y(LONGLONG)g(nelements,)f(DTYPE)h
+(nulval,)g(>)h(DTYPE)g(*array,)e(int)i(*anynul,)334 4521
+y(int)g(*status\))0 4779 y Fi(2)81 b Fj(Read)39 b(elemen)m(ts)i(and)e
+(n)m(ull)h(\015ags)g(from)f(an)g(ASCI)s(I)g(or)g(binary)g(table)i
+(column)e(\(in)h(the)g(CHDU\).)g(These)227 4892 y(routines)29
+b(return)e(the)i(v)-5 b(alues)29 b(of)g(the)g(table)h(column)e(arra)m
+(y)i(elemen)m(ts.)41 b(An)m(y)29 b(unde\014ned)d(arra)m(y)k(elemen)m
+(ts)227 5005 y(will)k(ha)m(v)m(e)h(the)f(corresp)s(onding)e(n)m
+(ullarra)m(y)i(elemen)m(t)h(set)f(equal)g(to)g(TR)m(UE.)g(The)f(an)m
+(yn)m(ul)h(parameter)g(is)227 5118 y(set)d(to)g(true)f(if)h(an)m(y)g
+(of)f(the)h(returned)e(elemen)m(ts)j(are)e(unde\014ned.)95
+5375 y Fe(int)47 b(fits_read_colnull_str)42 b(/)48 b(ffgcfs)286
+5488 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f
+(LONGLONG)h(firstelem,)334 5601 y(LONGLONG)g(nelements,)f(>)i(char)g
+(**array,)e(char)i(*nullarray,)e(int)i(*anynul,)334 5714
+y(int)g(*status\))p eop end
+%%Page: 115 123
+TeXDict begin 115 122 bop 0 299 a Fh(9.6.)72 b(SPECIALIZED)29
+b(FITS)g(ASCI)s(I)g(AND)i(BINAR)-8 b(Y)32 b(T)-8 b(ABLE)30
+b(R)m(OUTINES)933 b Fj(115)95 668 y Fe(int)47 b
+(fits_read_colnull_[log,byt)o(,sh)o(t,us)o(ht,i)o(nt,)o(uint)o(,lng)o
+(,ul)o(ng,l)o(ngln)o(g,f)o(lt,d)o(bl,c)o(mp,)o(dblc)o(mp])41
+b(/)286 781 y(ffgcf[l,b,i,ui,k,uk,j,uj,j)o(j,e)o(,d,c)o(,m])286
+894 y(\(fitsfile)46 b(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)334
+1007 y(LONGLONG)g(firstelem,)f(LONGLONG)g(nelements,)g(>)j(DTYPE)e
+(*array,)334 1120 y(char)h(*nullarray,)d(int)j(*anynul,)f(int)h
+(*status\))0 1384 y Fi(3)81 b Fj(Read)24 b(an)g(arbitrary)g(data)h
+(subsection)f(from)g(an)g(N-dimensional)h(arra)m(y)g(in)f(a)g(binary)g
+(table)h(v)m(ector)h(column.)227 1497 y(Unde\014ned)21
+b(pixels)i(in)f(the)h(arra)m(y)g(will)g(b)s(e)f(set)h(equal)h(to)f(the)
+g(v)-5 b(alue)23 b(of)g('n)m(ulv)-5 b(al',)25 b(unless)d(n)m(ulv)-5
+b(al=0)23 b(in)f(whic)m(h)227 1610 y(case)37 b(no)e(testing)h(for)f
+(unde\014ned)e(pixels)i(will)h(b)s(e)f(p)s(erformed.)53
+b(The)35 b(\014rst)g(and)f(last)i(ro)m(ws)g(in)f(the)g(table)227
+1722 y(to)30 b(b)s(e)e(read)h(are)g(sp)s(eci\014ed)g(b)m(y)g
+(fpixel\(naxis+1\))g(and)g(lpixel\(naxis+1\),)i(and)d(hence)h(are)h
+(treated)g(as)f(the)227 1835 y(next)38 b(higher)f(dimension)g(of)h(the)
+f(FITS)g(N-dimensional)h(arra)m(y)-8 b(.)63 b(The)37
+b(INC)h(parameter)g(sp)s(eci\014es)f(the)227 1948 y(sampling)31
+b(in)m(terv)-5 b(al)31 b(in)f(eac)m(h)i(dimension)e(b)s(et)m(w)m(een)h
+(the)f(data)h(elemen)m(ts)h(that)f(will)g(b)s(e)e(returned.)95
+2212 y Fe(int)47 b(fits_read_subset_[byt,)42 b(sht,)47
+b(usht,)f(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(flt,)h(dbl])f(/)286
+2325 y(ffgsv[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286 2438
+y(\(fitsfile)g(*fptr,)g(int)h(colnum,)e(int)i(naxis,)f(long)h(*naxes,)f
+(long)h(*fpixel,)334 2551 y(long)g(*lpixel,)e(long)i(*inc,)f(DTYPE)h
+(nulval,)e(>)j(DTYPE)e(*array,)g(int)h(*anynul,)334 2664
+y(int)g(*status\))0 2928 y Fi(4)81 b Fj(Read)24 b(an)g(arbitrary)g
+(data)h(subsection)f(from)g(an)g(N-dimensional)h(arra)m(y)g(in)f(a)g
+(binary)g(table)h(v)m(ector)h(column.)227 3041 y(An)m(y)34
+b(Unde\014ned)e(pixels)i(in)g(the)f(arra)m(y)i(will)f(ha)m(v)m(e)h(the)
+f(corresp)s(onding)e('n)m(ullarra)m(y')j(elemen)m(t)g(set)f(equal)227
+3154 y(to)40 b(TR)m(UE.)e(The)h(\014rst)e(and)h(last)i(ro)m(ws)e(in)h
+(the)f(table)i(to)f(b)s(e)f(read)h(are)g(sp)s(eci\014ed)e(b)m(y)i
+(fpixel\(naxis+1\))227 3267 y(and)i(lpixel\(naxis+1\),)47
+b(and)41 b(hence)h(are)g(treated)g(as)g(the)g(next)g(higher)g
+(dimension)f(of)h(the)g(FITS)f(N-)227 3379 y(dimensional)i(arra)m(y)-8
+b(.)78 b(The)41 b(INC)h(parameter)h(sp)s(eci\014es)f(the)h(sampling)f
+(in)m(terv)-5 b(al)44 b(in)e(eac)m(h)i(dimension)227
+3492 y(b)s(et)m(w)m(een)31 b(the)g(data)g(elemen)m(ts)h(that)f(will)f
+(b)s(e)g(returned.)95 3756 y Fe(int)47 b(fits_read_subsetnull_[byt,)41
+b(sht,)47 b(usht,)f(int,)h(uint,)f(lng,)h(ulng,)f(lnglng,)g(flt,)g
+(dbl])h(/)286 3869 y(ffgsf[b,i,ui,k,uk,j,uj,jj,)o(e,d)o(])286
+3982 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(int)i(naxis,)f(long)h
+(*naxes,)334 4095 y(long)g(*fpixel,)e(long)i(*lpixel,)e(long)i(*inc,)f
+(>)i(DTYPE)e(*array,)334 4208 y(char)h(*nullarray,)d(int)j(*anynul,)f
+(int)h(*status\))0 4472 y Fi(5)81 b Fj(Read)35 b(bit)g(v)-5
+b(alues)35 b(from)g(a)g(b)m(yte)h(\('B'\))g(or)f(bit)g(\(`X`\))h(table)
+g(column)f(\(in)g(the)g(CDU\).)h(Larra)m(y)g(is)f(an)f(arra)m(y)227
+4585 y(of)g(logical)i(v)-5 b(alues)34 b(corresp)s(onding)f(to)h(the)g
+(sequence)g(of)g(bits)g(to)g(b)s(e)f(read.)51 b(If)33
+b(larra)m(y)h(is)g(true)f(then)h(the)227 4698 y(corresp)s(onding)i(bit)
+h(w)m(as)g(set)h(to)f(1,)j(otherwise)d(the)g(bit)g(w)m(as)g(set)h(to)f
+(0.)61 b(The)37 b('X')g(column)g(in)f(a)i(FITS)227 4811
+y(table)e(is)e(alw)m(a)m(ys)i(padded)e(out)h(to)g(a)g(m)m(ultiple)g(of)
+g(8)g(bits)f(where)g(the)h(bit)g(arra)m(y)g(starts)g(with)f(the)h(most)
+227 4924 y(signi\014can)m(t)j(bit)e(of)h(the)g(b)m(yte)g(and)f(w)m
+(orks)g(do)m(wn)h(to)m(w)m(ards)g(the)g(1's)g(bit.)59
+b(F)-8 b(or)37 b(example,)i(a)e('4X')h(arra)m(y)-8 b(,)227
+5036 y(with)33 b(the)h(\014rst)e(bit)i(=)f(1)h(and)e(the)i(remaining)f
+(3)h(bits)f(=)g(0)h(is)f(equiv)-5 b(alen)m(t)35 b(to)f(the)g(8-bit)g
+(unsigned)e(b)m(yte)227 5149 y(v)-5 b(alue)31 b(of)f(128.)42
+b(Note)31 b(that)g(in)e(the)i(case)g(of)f('X')g(columns,)g(CFITSIO)f
+(can)h(read)g(all)h(8)f(bits)g(of)g(eac)m(h)h(b)m(yte)227
+5262 y(whether)h(they)h(are)g(formally)g(v)-5 b(alid)33
+b(or)f(not.)48 b(Th)m(us)31 b(if)i(the)f(column)h(is)f(de\014ned)f(as)i
+('4X',)h(and)e(one)h(calls)227 5375 y(\013gcx)d(with)f(\014rstbit=1)f
+(and)h(n)m(bits=8,)g(then)g(all)h(8)f(bits)g(will)g(b)s(e)g(read)g
+(from)f(the)h(\014rst)g(b)m(yte)g(\(as)h(opp)s(osed)227
+5488 y(to)39 b(reading)f(the)g(\014rst)g(4)g(bits)g(from)g(the)g
+(\014rst)f(ro)m(w)h(and)g(then)f(the)i(\014rst)e(4)h(bits)g(from)g(the)
+g(next)g(ro)m(w\),)227 5601 y(ev)m(en)g(though)f(the)g(last)i(4)e(bits)
+g(of)h(eac)m(h)g(b)m(yte)g(are)f(formally)h(not)g(de\014ned.)60
+b(It)37 b(should)f(also)i(b)s(e)f(noted)227 5714 y(that)f(it)f(is)h
+(more)f(e\016cien)m(t)h(to)g(read)f('X')h(columns)e(an)h(en)m(tire)h(b)
+m(yte)g(at)g(a)f(time,)i(instead)e(of)h(bit)f(b)m(y)g(bit.)p
+eop end
+%%Page: 116 124
+TeXDict begin 116 123 bop 0 299 a Fj(116)958 b Fh(CHAPTER)30
+b(9.)112 b(SPECIALIZED)28 b(CFITSIO)h(INTERF)-10 b(A)m(CE)30
+b(R)m(OUTINES)227 555 y Fj(An)m(y)f(of)g(the)h(CFITSIO)d(routines)i
+(that)g(read)g(columns)g(\(e.g.)42 b(\014ts)p 2520 555
+28 4 v 32 w(read)p 2724 555 V 33 w(col)p 2867 555 V 34
+w(b)m(yt\))29 b(ma)m(y)h(b)s(e)e(used)g(for)h(this)227
+668 y(purp)s(ose.)60 b(These)36 b(routines)i(will)f(in)m(terpret)h('X')
+f(columns)g(as)g(though)g(they)h(w)m(ere)f('B')h(columns)f(\(e.g.,)227
+781 y('8X')32 b(is)e(equiv)-5 b(alen)m(t)32 b(to)f('1B',)h(and)e('16X')
+i(is)e(equiv)-5 b(alen)m(t)32 b(to)f('2B'\).)95 1041
+y Fe(int)47 b(fits_read_col_bit)c(/)48 b(ffgcx)286 1154
+y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f
+(LONGLONG)h(firstbit,)334 1267 y(LONGLONG)g(nbits,)g(>)h(char)g
+(*larray,)e(int)i(*status\))0 1526 y Fi(6)81 b Fj(Read)31
+b(an)m(y)h(consecutiv)m(e)i(set)e(of)g(bits)f(from)h(an)f('X')h(or)g
+('B')h(column)e(and)g(in)m(terpret)h(them)g(as)f(an)h(unsigned)227
+1639 y(n-bit)h(in)m(teger.)48 b(n)m(bits)33 b(m)m(ust)f(b)s(e)g(less)h
+(than)g(16)g(or)g(32)g(in)f(\013gcxui)i(and)d(\013gcxuk,)j(resp)s
+(ectiv)m(ely)-8 b(.)49 b(If)32 b(nro)m(ws)227 1752 y(is)c(greater)h
+(than)f(1,)h(then)e(the)h(same)h(set)f(of)g(bits)g(will)g(b)s(e)f(read)
+h(from)f(eac)m(h)i(ro)m(w,)g(starting)g(with)e(\014rstro)m(w.)227
+1865 y(The)j(bits)g(are)h(n)m(um)m(b)s(ered)e(with)h(1)h(=)f(the)h
+(most)f(signi\014can)m(t)i(bit)e(of)h(the)f(\014rst)g(elemen)m(t)i(of)e
+(the)h(column.)95 2125 y Fe(int)47 b(fits_read_col_bit_[usht,)42
+b(uint])k(/)h(ffgcx[ui,uk])286 2238 y(\(fitsfile)f(*fptr,)g(int)h
+(colnum,)e(LONGLONG)h(firstrow,)f(LONGLONG,)h(nrows,)334
+2351 y(long)h(firstbit,)e(long)i(nbits,)f(>)h(DTYPE)g(*array,)e(int)i
+(*status\))0 2611 y Fi(7)81 b Fj(Return)27 b(the)i(descriptor)f(for)h
+(a)g(v)-5 b(ariable)29 b(length)g(column)f(in)h(a)g(binary)e(table.)41
+b(The)28 b(descriptor)h(consists)g(of)227 2723 y(2)j(in)m(teger)g
+(parameters:)42 b(the)31 b(n)m(um)m(b)s(er)f(of)h(elemen)m(ts)i(in)d
+(the)h(arra)m(y)h(and)e(the)h(starting)h(o\013set)g(relativ)m(e)h(to)
+227 2836 y(the)c(start)h(of)e(the)h(heap.)40 b(The)29
+b(\014rst)f(pair)g(of)h(routine)g(returns)e(a)i(single)h(descriptor)e
+(whereas)h(the)g(second)227 2949 y(pair)34 b(of)h(routine)f(returns)g
+(the)g(descriptors)g(for)g(a)h(range)g(of)f(ro)m(ws)h(in)f(the)g
+(table.)54 b(The)34 b(only)g(di\013erence)227 3062 y(b)s(et)m(w)m(een)
+42 b(the)f(2)g(routines)f(in)h(eac)m(h)h(pair)e(is)h(that)g(one)g
+(returns)f(the)h(parameters)g(as)g('long')g(in)m(tegers,)227
+3175 y(whereas)30 b(the)h(other)g(returns)e(the)h(v)-5
+b(alues)31 b(as)g(64-bit)g('LONGLONG')g(in)m(tegers.)95
+3435 y Fe(int)47 b(fits_read_descript)c(/)48 b(ffgdes)286
+3548 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e(LONGLONG)h(rownum,)g(>)h
+(long)g(*repeat,)525 3661 y(long)g(*offset,)e(int)i(*status\))95
+3886 y(int)g(fits_read_descriptll)c(/)k(ffgdesll)286
+3999 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(LONGLONG)h(rownum,)g(>)h
+(LONGLONG)f(*repeat,)525 4112 y(LONGLONG)g(*offset,)f(int)i(*status\))
+95 4338 y(int)g(fits_read_descripts)c(/)k(ffgdess)286
+4451 y(\(fitsfile)f(*fptr,)g(int)h(colnum,)e(LONGLONG)h(firstrow,)f
+(LONGLONG)h(nrows)334 4564 y(>)i(long)e(*repeat,)g(long)g(*offset,)g
+(int)h(*status\))95 4790 y(int)g(fits_read_descriptsll)42
+b(/)48 b(ffgdessll)286 4903 y(\(fitsfile)e(*fptr,)g(int)h(colnum,)e
+(LONGLONG)h(firstrow,)f(LONGLONG)h(nrows)334 5016 y(>)i(LONGLONG)d
+(*repeat,)h(LONGLONG)f(*offset,)h(int)h(*status\))p eop
+end
+%%Page: 117 125
+TeXDict begin 117 124 bop 0 1225 a Fg(Chapter)65 b(10)0
+1687 y Fm(Extended)77 b(File)g(Name)g(Syn)-6 b(tax)0
+2216 y Ff(10.1)136 b(Ov)l(erview)0 2466 y Fj(CFITSIO)30
+b(supp)s(orts)f(an)j(extended)f(syn)m(tax)h(when)f(sp)s(ecifying)g(the)
+h(name)f(of)h(the)g(data)g(\014le)f(to)h(b)s(e)f(op)s(ened)g(or)0
+2579 y(created)g(that)g(includes)f(the)h(follo)m(wing)h(features:)136
+2813 y Fc(\017)46 b Fj(CFITSIO)40 b(can)i(read)f(IRAF)h(format)g
+(images)g(whic)m(h)f(ha)m(v)m(e)i(header)e(\014le)h(names)f(that)h(end)
+f(with)g(the)227 2926 y('.imh')d(extension,)i(as)e(w)m(ell)g(as)g
+(reading)f(and)g(writing)g(FITS)g(\014les,)i(This)e(feature)h(is)f
+(implemen)m(ted)h(in)227 3039 y(CFITSIO)29 b(b)m(y)i(\014rst)e(con)m(v)
+m(erting)k(the)d(IRAF)h(image)h(in)m(to)f(a)g(temp)s(orary)f(FITS)g
+(format)h(\014le)f(in)g(memory)-8 b(,)227 3152 y(then)35
+b(op)s(ening)f(the)h(FITS)f(\014le.)54 b(An)m(y)35 b(of)g(the)g(usual)f
+(CFITSIO)g(routines)g(then)h(ma)m(y)g(b)s(e)f(used)g(to)i(read)227
+3265 y(the)31 b(image)g(header)f(or)h(data.)41 b(Similarly)-8
+b(,)31 b(ra)m(w)f(binary)g(data)h(arra)m(ys)f(can)h(b)s(e)f(read)g(b)m
+(y)g(con)m(v)m(erting)i(them)227 3378 y(on)f(the)f(\015y)g(in)m(to)h
+(virtual)g(FITS)f(images.)136 3557 y Fc(\017)46 b Fj(FITS)37
+b(\014les)g(on)g(the)g(In)m(ternet)h(can)f(b)s(e)g(read)g(\(and)g
+(sometimes)h(written\))f(using)g(the)g(FTP)-8 b(,)38
+b(HTTP)-8 b(,)37 b(or)227 3670 y(R)m(OOT)30 b(proto)s(cols.)136
+3849 y Fc(\017)46 b Fj(FITS)30 b(\014les)g(can)h(b)s(e)f(pip)s(ed)f(b)s
+(et)m(w)m(een)i(tasks)f(on)h(the)f(stdin)g(and)g(stdout)g(streams.)136
+4028 y Fc(\017)46 b Fj(FITS)36 b(\014les)h(can)g(b)s(e)f(read)h(and)f
+(written)h(in)g(shared)f(memory)-8 b(.)60 b(This)36 b(can)h(p)s(oten)m
+(tially)i(ac)m(hiev)m(e)g(b)s(etter)227 4141 y(data)26
+b(I/O)e(p)s(erformance)g(compared)h(to)h(reading)f(and)f(writing)g(the)
+h(same)h(FITS)e(\014les)g(on)h(magnetic)h(disk.)136 4320
+y Fc(\017)46 b Fj(Compressed)30 b(FITS)f(\014les)i(in)f(gzip)h(or)f
+(Unix)g(COMPRESS)f(format)h(can)h(b)s(e)f(directly)h(read.)136
+4499 y Fc(\017)46 b Fj(Output)28 b(FITS)h(\014les)g(can)g(b)s(e)g
+(written)g(directly)h(in)e(compressed)h(gzip)h(format,)g(th)m(us)e(sa)m
+(ving)i(disk)f(space.)136 4678 y Fc(\017)46 b Fj(FITS)26
+b(table)h(columns)f(can)h(b)s(e)f(created,)i(mo)s(di\014ed,)f(or)f
+(deleted)h('on-the-\015y')g(as)g(the)g(table)g(is)f(op)s(ened)g(b)m(y)
+227 4791 y(CFITSIO.)32 b(This)h(creates)i(a)e(virtual)h(FITS)f(\014le)g
+(con)m(taining)i(the)f(mo)s(di\014cations)f(that)h(is)g(then)f(op)s
+(ened)227 4904 y(b)m(y)e(the)f(application)i(program.)136
+5083 y Fc(\017)46 b Fj(T)-8 b(able)29 b(ro)m(ws)e(ma)m(y)i(b)s(e)e
+(selected,)j(or)e(\014ltered)g(out,)g(on)g(the)g(\015y)f(when)g(the)h
+(table)h(is)f(op)s(ened)f(b)m(y)g(CFITSIO,)227 5196 y(based)22
+b(on)f(an)g(user-sp)s(eci\014ed)g(expression.)38 b(Only)21
+b(ro)m(ws)g(for)g(whic)m(h)h(the)g(expression)f(ev)-5
+b(aluates)23 b(to)f('TR)m(UE')227 5309 y(are)31 b(retained)g(in)f(the)g
+(cop)m(y)i(of)e(the)h(table)g(that)g(is)f(op)s(ened)g(b)m(y)g(the)h
+(application)g(program.)136 5488 y Fc(\017)46 b Fj(Histogram)28
+b(images)g(ma)m(y)f(b)s(e)f(created)h(on)f(the)h(\015y)f(b)m(y)g
+(binning)g(the)g(v)-5 b(alues)27 b(in)f(table)i(columns,)f(resulting)
+227 5601 y(in)36 b(a)g(virtual)h(N-dimensional)f(FITS)g(image.)59
+b(The)35 b(application)i(program)f(then)g(only)g(sees)g(the)h(FITS)227
+5714 y(image)32 b(\(in)e(the)h(primary)e(arra)m(y\))j(instead)e(of)h
+(the)f(original)i(FITS)d(table.)1882 5942 y(117)p eop
+end
+%%Page: 118 126
+TeXDict begin 118 125 bop 0 299 a Fj(118)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fj(The)39 b(latter)i(3)f(table)h(\014ltering)f(features)g(in)f
+(particular)h(add)f(v)m(ery)h(p)s(o)m(w)m(erful)f(data)i(pro)s(cessing)
+e(capabilities)0 668 y(directly)33 b(in)m(to)g(CFITSIO,)e(and)h(hence)h
+(in)m(to)g(ev)m(ery)g(task)g(that)g(uses)f(CFITSIO)f(to)i(read)f(or)h
+(write)f(FITS)g(\014les.)0 781 y(F)-8 b(or)29 b(example,)g(these)f
+(features)h(transform)e(a)h(v)m(ery)g(simple)g(program)g(that)g(just)g
+(copies)g(an)g(input)f(FITS)g(\014le)h(to)0 894 y(a)c(new)f(output)h
+(\014le)g(\(lik)m(e)h(the)f(`\014tscop)m(y')h(program)e(that)i(is)e
+(distributed)g(with)h(CFITSIO\))e(in)m(to)j(a)f(m)m(ultipurp)s(ose)0
+1007 y(FITS)33 b(\014le)g(pro)s(cessing)g(to)s(ol.)51
+b(By)33 b(app)s(ending)f(fairly)i(simple)f(quali\014ers)g(on)m(to)h
+(the)g(name)f(of)h(the)f(input)g(FITS)0 1120 y(\014le,)45
+b(the)d(user)f(can)h(p)s(erform)e(quite)i(complex)h(table)f(editing)h
+(op)s(erations)f(\(e.g.,)k(create)d(new)e(columns,)k(or)0
+1233 y(\014lter)32 b(out)h(ro)m(ws)f(in)g(a)g(table\))i(or)e(create)i
+(FITS)d(images)j(b)m(y)e(binning)f(or)h(histogramming)h(the)g(v)-5
+b(alues)32 b(in)g(table)0 1346 y(columns.)47 b(In)32
+b(addition,)h(these)g(functions)f(ha)m(v)m(e)i(b)s(een)e(co)s(ded)g
+(using)g(new)g(state-of-the)j(art)e(algorithms)g(that)0
+1458 y(are,)e(in)f(some)h(cases,)g(10)h(-)e(100)i(times)f(faster)g
+(than)f(previous)g(widely)g(used)f(implemen)m(tations.)0
+1619 y(Before)34 b(describing)f(the)h(complete)h(syn)m(tax)f(for)f(the)
+h(extended)f(FITS)g(\014le)g(names)g(in)g(the)h(next)g(section,)h(here)
+0 1732 y(are)c(a)g(few)f(examples)h(of)f(FITS)g(\014le)g(names)h(that)f
+(giv)m(e)i(a)f(quic)m(k)g(o)m(v)m(erview)h(of)f(the)f(allo)m(w)m(ed)i
+(syn)m(tax:)136 2005 y Fc(\017)46 b Fe(myfile.fits)p
+Fj(:)38 b(the)30 b(simplest)h(case)g(of)g(a)g(FITS)e(\014le)i(on)f
+(disk)g(in)g(the)h(curren)m(t)f(directory)-8 b(.)136
+2207 y Fc(\017)46 b Fe(myfile.imh)p Fj(:)i(op)s(ens)34
+b(an)h(IRAF)g(format)g(image)i(\014le)e(and)f(con)m(v)m(erts)j(it)e(on)
+g(the)g(\015y)g(in)m(to)h(a)f(temp)s(orary)227 2320 y(FITS)30
+b(format)h(image)g(in)f(memory)h(whic)m(h)f(can)g(then)g(b)s(e)g(read)g
+(with)g(an)m(y)h(other)g(CFITSIO)e(routine.)136 2521
+y Fc(\017)46 b Fe(rawfile.dat[i512,512])p Fj(:)35 b(op)s(ens)30
+b(a)g(ra)m(w)h(binary)e(data)i(arra)m(y)g(\(a)g(512)g(x)f(512)i(short)e
+(in)m(teger)h(arra)m(y)g(in)227 2634 y(this)i(case\))i(and)d(con)m(v)m
+(erts)j(it)e(on)g(the)g(\015y)g(in)m(to)h(a)f(temp)s(orary)g(FITS)f
+(format)h(image)i(in)d(memory)h(whic)m(h)227 2747 y(can)e(then)f(b)s(e)
+g(read)g(with)g(an)m(y)h(other)f(CFITSIO)f(routine.)136
+2948 y Fc(\017)46 b Fe(myfile.fits.gz)p Fj(:)d(if)33
+b(this)g(is)g(the)g(name)g(of)h(a)f(new)g(output)g(\014le,)h(the)f
+('.gz')i(su\016x)d(will)h(cause)h(it)g(to)g(b)s(e)227
+3061 y(compressed)c(in)g(gzip)h(format)g(when)e(it)i(is)g(written)f(to)
+h(disk.)136 3263 y Fc(\017)46 b Fe(myfile.fits.gz[events,)c(2])p
+Fj(:)35 b(op)s(ens)20 b(and)f(uncompresses)g(the)i(gzipp)s(ed)f(\014le)
+g(m)m(y\014le.\014ts)h(then)f(mo)m(v)m(es)227 3376 y(to)31
+b(the)g(extension)g(with)f(the)h(k)m(eyw)m(ords)f(EXTNAME)h(=)f
+('EVENTS')g(and)g(EXTVER)g(=)g(2.)136 3577 y Fc(\017)46
+b Fe(-)p Fj(:)40 b(a)30 b(dash)f(\(min)m(us)g(sign\))h(signi\014es)g
+(that)g(the)g(input)f(\014le)g(is)h(to)g(b)s(e)f(read)h(from)f(the)h
+(stdin)f(\014le)h(stream,)g(or)227 3690 y(that)d(the)g(output)f(\014le)
+h(is)f(to)h(b)s(e)f(written)h(to)g(the)g(stdout)f(stream.)40
+b(See)27 b(also)g(the)g(stream://)h(driv)m(er)e(whic)m(h)227
+3803 y(pro)m(vides)37 b(a)f(more)h(e\016cien)m(t,)i(but)d(more)g
+(restricted)h(metho)s(d)f(of)h(reading)f(or)g(writing)h(to)g(the)f
+(stdin)g(or)227 3916 y(stdout)31 b(streams.)136 4117
+y Fc(\017)46 b Fe(ftp://legacy.gsfc.nasa.go)o(v/te)o(st/v)o(ela)o(.fit)
+o(s)p Fj(:)k(FITS)37 b(\014les)h(in)g(an)m(y)h(ftp)e(arc)m(hiv)m(e)j
+(site)f(on)f(the)227 4230 y(In)m(ternet)31 b(ma)m(y)g(b)s(e)f(directly)
+h(op)s(ened)e(with)h(read-only)h(access.)136 4432 y Fc(\017)46
+b Fe(http://legacy.gsfc.nasa.g)o(ov/s)o(oftw)o(are)o(/tes)o(t.fi)o(ts)p
+Fj(:)33 b(an)m(y)27 b(v)-5 b(alid)28 b(URL)f(to)h(a)g(FITS)e(\014le)i
+(on)f(the)227 4545 y(W)-8 b(eb)31 b(ma)m(y)g(b)s(e)f(op)s(ened)g(with)g
+(read-only)g(access.)136 4746 y Fc(\017)46 b Fe
+(root://legacy.gsfc.nasa.g)o(ov/t)o(est/)o(vel)o(a.fi)o(ts)p
+Fj(:)e(similar)36 b(to)g(ftp)f(access)i(except)f(that)g(it)g(pro-)227
+4859 y(vides)30 b(write)h(as)f(w)m(ell)h(as)g(read)f(access)h(to)g(the)
+f(\014les)h(across)f(the)h(net)m(w)m(ork.)41 b(This)29
+b(uses)h(the)h(ro)s(ot)f(proto)s(col)227 4972 y(dev)m(elop)s(ed)h(at)g
+(CERN.)136 5174 y Fc(\017)46 b Fe(shmem://h2[events])p
+Fj(:)j(op)s(ens)36 b(the)i(FITS)e(\014le)h(in)g(a)g(shared)f(memory)h
+(segmen)m(t)h(and)f(mo)m(v)m(es)h(to)g(the)227 5287 y(EVENTS)30
+b(extension.)136 5488 y Fc(\017)46 b Fe(mem://)p Fj(:)65
+b(creates)44 b(a)g(scratc)m(h)g(output)f(\014le)g(in)g(core)h(computer)
+f(memory)-8 b(.)79 b(The)43 b(resulting)g('\014le')h(will)227
+5601 y(disapp)s(ear)25 b(when)f(the)i(program)f(exits,)i(so)f(this)f
+(is)h(mainly)f(useful)g(for)g(testing)i(purp)s(oses)c(when)i(one)g(do)s
+(es)227 5714 y(not)31 b(w)m(an)m(t)g(a)g(p)s(ermanen)m(t)f(cop)m(y)h
+(of)f(the)h(output)f(\014le.)p eop end
+%%Page: 119 127
+TeXDict begin 119 126 bop 0 299 a Fh(10.1.)73 b(O)m(VER)-10
+b(VIEW)2995 b Fj(119)136 555 y Fc(\017)46 b Fe(myfile.fits[3;)e
+(Images\(10\)])p Fj(:)c(op)s(ens)30 b(a)i(cop)m(y)g(of)g(the)g(image)g
+(con)m(tained)h(in)e(the)h(10th)g(ro)m(w)f(of)h(the)227
+668 y('Images')38 b(column)f(in)g(the)g(binary)f(table)i(in)e(the)h
+(3th)g(extension)h(of)f(the)g(FITS)f(\014le.)60 b(The)37
+b(virtual)g(\014le)227 781 y(that)31 b(is)g(op)s(ened)e(b)m(y)i(the)f
+(application)i(just)e(con)m(tains)h(this)f(single)h(image)h(in)e(the)h
+(primary)e(arra)m(y)-8 b(.)136 973 y Fc(\017)46 b Fe
+(myfile.fits[1:512:2,)d(1:512:2])p Fj(:)c(op)s(ens)30
+b(a)h(section)h(of)g(the)f(input)f(image)i(ranging)f(from)f(the)h(1st)
+227 1086 y(to)k(the)f(512th)h(pixel)f(in)g(X)g(and)g(Y,)g(and)f
+(selects)j(ev)m(ery)e(second)g(pixel)h(in)e(b)s(oth)g(dimensions,)i
+(resulting)227 1198 y(in)30 b(a)h(256)h(x)e(256)i(pixel)e(input)g
+(image)h(in)g(this)f(case.)136 1390 y Fc(\017)46 b Fe
+(myfile.fits[EVENTS][col)c(Rad)47 b(=)g(sqrt\(X**2)e(+)j(Y**2\)])p
+Fj(:)36 b(creates)27 b(and)d(op)s(ens)h(a)g(virtual)h(\014le)f(on)227
+1503 y(the)h(\015y)f(that)i(is)f(iden)m(tical)h(to)g(m)m
+(y\014le.\014ts)f(except)g(that)h(it)f(will)g(con)m(tain)h(a)f(new)g
+(column)f(in)h(the)g(EVENTS)227 1616 y(extension)41 b(called)h('Rad')f
+(whose)f(v)-5 b(alue)41 b(is)g(computed)f(using)h(the)f(indicated)h
+(expression)g(whic)m(h)f(is)h(a)227 1729 y(function)30
+b(of)h(the)f(v)-5 b(alues)31 b(in)f(the)h(X)f(and)g(Y)h(columns.)136
+1920 y Fc(\017)46 b Fe(myfile.fits[EVENTS][PHA)c(>)47
+b(5])p Fj(:)41 b(creates)33 b(and)d(op)s(ens)g(a)i(virtual)f(FITS)f
+(\014les)h(that)g(is)g(iden)m(tical)i(to)227 2033 y('m)m
+(y\014le.\014ts')40 b(except)h(that)f(the)f(EVENTS)g(table)h(will)g
+(only)f(con)m(tain)i(the)e(ro)m(ws)h(that)g(ha)m(v)m(e)g(v)-5
+b(alues)40 b(of)227 2146 y(the)34 b(PHA)g(column)g(greater)h(than)e(5.)
+52 b(In)33 b(general,)j(an)m(y)e(arbitrary)g(b)s(o)s(olean)f
+(expression)h(using)f(a)i(C)e(or)227 2259 y(F)-8 b(ortran-lik)m(e)31
+b(syn)m(tax,)e(whic)m(h)f(ma)m(y)h(com)m(bine)g(AND)g(and)f(OR)f(op)s
+(erators,)i(ma)m(y)g(b)s(e)f(used)f(to)i(select)h(ro)m(ws)227
+2372 y(from)g(a)h(table.)136 2564 y Fc(\017)46 b Fe
+(myfile.fits[EVENTS][bin)c(\(X,Y\)=1,2048,4])p Fj(:)34
+b(creates)26 b(a)g(temp)s(orary)f(FITS)g(primary)f(arra)m(y)i(im-)227
+2677 y(age)38 b(whic)m(h)e(is)h(computed)f(on)g(the)h(\015y)f(b)m(y)g
+(binning)f(\(i.e,)40 b(computing)c(the)h(2-dimensional)g(histogram\))
+227 2789 y(of)d(the)f(v)-5 b(alues)34 b(in)f(the)h(X)g(and)e(Y)i
+(columns)f(of)h(the)f(EVENTS)g(extension.)50 b(In)33
+b(this)g(case)i(the)e(X)h(and)f(Y)227 2902 y(co)s(ordinates)h(range)g
+(from)f(1)h(to)g(2048)h(and)e(the)h(image)g(pixel)g(size)g(is)g(4)f
+(units)g(in)g(b)s(oth)g(dimensions,)h(so)227 3015 y(the)d(resulting)f
+(image)i(is)e(512)i(x)e(512)i(pixels)f(in)f(size.)136
+3207 y Fc(\017)46 b Fj(The)31 b(\014nal)g(example)i(com)m(bines)f(man)m
+(y)f(of)h(these)g(feature)g(in)m(to)g(one)g(complex)g(expression)f
+(\(it)i(is)e(brok)m(en)227 3320 y(in)m(to)h(sev)m(eral)f(lines)g(for)f
+(clarit)m(y\):)370 3576 y Fe(ftp://legacy.gsfc.nasa.gov)o(/dat)o(a/s)o
+(ampl)o(e.fi)o(ts.)o(gz[E)o(VENT)o(S])370 3689 y([col)47
+b(phacorr)f(=)h(pha)g(*)h(1.1)f(-)g(0.3][phacorr)e(>=)i(5.0)g(&&)g
+(phacorr)f(<=)h(14.0])370 3801 y([bin)g(\(X,Y\)=32])227
+4057 y Fj(In)37 b(this)h(case,)j(CFITSIO)36 b(\(1\))j(copies)g(and)e
+(uncompresses)g(the)h(FITS)f(\014le)h(from)f(the)h(ftp)f(site)i(on)f
+(the)227 4170 y(legacy)g(mac)m(hine,)h(\(2\))e(mo)m(v)m(es)g(to)g(the)g
+('EVENTS')f(extension,)i(\(3\))f(calculates)i(a)d(new)g(column)g
+(called)227 4283 y('phacorr',)30 b(\(4\))f(selects)h(the)f(ro)m(ws)g
+(in)f(the)h(table)h(that)f(ha)m(v)m(e)h(phacorr)e(in)g(the)h(range)g(5)
+g(to)h(14,)g(and)e(\014nally)227 4396 y(\(5\))35 b(bins)d(the)h
+(remaining)g(ro)m(ws)g(on)h(the)f(X)g(and)g(Y)g(column)g(co)s
+(ordinates,)i(using)d(a)i(pixel)f(size)h(=)f(32)h(to)227
+4509 y(create)d(a)f(2D)g(image.)42 b(All)30 b(this)f(pro)s(cessing)g
+(is)h(completely)h(transparen)m(t)e(to)i(the)e(application)i(program,)
+227 4622 y(whic)m(h)f(simply)g(sees)h(the)g(\014nal)f(2-D)h(image)h(in)
+e(the)g(primary)g(arra)m(y)h(of)f(the)h(op)s(ened)f(\014le.)0
+4886 y(The)c(full)h(extended)g(CFITSIO)e(FITS)h(\014le)h(name)g(can)g
+(con)m(tain)h(sev)m(eral)g(di\013eren)m(t)g(comp)s(onen)m(ts)f(dep)s
+(ending)e(on)0 4998 y(the)31 b(con)m(text.)42 b(These)30
+b(comp)s(onen)m(ts)h(are)g(describ)s(ed)e(in)h(the)g(follo)m(wing)i
+(sections:)0 5262 y Fe(When)47 b(creating)e(a)j(new)f(file:)143
+5375 y(filetype://BaseFilename\(t)o(empl)o(ate)o(Name)o(\)[co)o(mpr)o
+(ess])0 5601 y(When)g(opening)e(an)j(existing)d(primary)h(array)g(or)i
+(image)e(HDU:)143 5714 y(filetype://BaseFilename\(o)o(utNa)o(me\))o
+([HDU)o(loca)o(tio)o(n][I)o(mage)o(Sec)o(tion)o(][pi)o(xFi)o(lter)o(])p
+eop end
+%%Page: 120 128
+TeXDict begin 120 127 bop 0 299 a Fj(120)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+668 y Fe(When)47 b(opening)e(an)j(existing)d(table)i(HDU:)143
+781 y(filetype://BaseFilename\(o)o(utNa)o(me\))o([HDU)o(loca)o(tio)o
+(n][c)o(olFi)o(lte)o(r][r)o(owFi)o(lte)o(r][b)o(inSp)o(ec])0
+1010 y Fj(The)35 b(\014let)m(yp)s(e,)j(BaseFilename,)h(outName,)g
+(HDUlo)s(cation,)g(ImageSection,)g(and)c(pixFilter)i(comp)s(onen)m(ts,)
+g(if)0 1123 y(presen)m(t,)27 b(m)m(ust)f(b)s(e)g(giv)m(en)h(in)f(that)g
+(order,)h(but)e(the)i(colFilter,)i(ro)m(wFilter,)g(and)c(binSp)s(ec)g
+(sp)s(eci\014ers)g(ma)m(y)i(follo)m(w)0 1236 y(in)j(an)m(y)h(order.)42
+b(Regardless)31 b(of)g(the)g(order,)f(ho)m(w)m(ev)m(er,)i(the)f
+(colFilter)i(sp)s(eci\014er,)e(if)f(presen)m(t,)h(will)g(b)s(e)f(pro)s
+(cessed)0 1349 y(\014rst)g(b)m(y)g(CFITSIO,)f(follo)m(w)m(ed)j(b)m(y)e
+(the)h(ro)m(wFilter)h(sp)s(eci\014er,)e(and)f(\014nally)i(b)m(y)f(the)g
+(binSp)s(ec)f(sp)s(eci\014er.)0 1678 y Ff(10.2)136 b(Filet)l(yp)t(e)0
+1928 y Fj(The)37 b(t)m(yp)s(e)g(of)g(\014le)g(determines)g(the)g
+(medium)f(on)h(whic)m(h)g(the)g(\014le)g(is)h(lo)s(cated)g(\(e.g.,)i
+(disk)d(or)g(net)m(w)m(ork\))h(and,)0 2041 y(hence,)f(whic)m(h)e(in)m
+(ternal)h(device)g(driv)m(er)f(is)g(used)f(b)m(y)h(CFITSIO)f(to)i(read)
+f(and/or)g(write)g(the)g(\014le.)56 b(Curren)m(tly)0
+2154 y(supp)s(orted)29 b(t)m(yp)s(es)h(are)382 2383 y
+Fe(file://)93 b(-)48 b(file)e(on)i(local)e(magnetic)g(disk)g
+(\(default\))430 2496 y(ftp://)93 b(-)48 b(a)f(readonly)f(file)g
+(accessed)g(with)h(the)g(anonymous)e(FTP)i(protocol.)907
+2609 y(It)g(also)g(supports)93 b(ftp://username:password@)o(host)o(nam)
+o(e/..)o(.)907 2722 y(for)47 b(accessing)e(password-protected)e(ftp)k
+(sites.)382 2835 y(http://)93 b(-)48 b(a)f(readonly)f(file)g(accessed)g
+(with)h(the)g(HTTP)f(protocol.)93 b(It)907 2948 y(supports)45
+b(username:password)e(just)k(like)g(the)g(ftp)g(driver.)907
+3060 y(Proxy)f(HTTP)h(servers)f(are)h(supported)e(using)h(the)h
+(http_proxy)907 3173 y(environment)e(variable)g(\(see)i(following)e
+(note\).)286 3286 y(stream://)93 b(-)48 b(special)e(driver)g(to)h(read)
+g(an)g(input)f(FITS)h(file)f(from)h(the)g(stdin)907 3399
+y(stream,)f(and/or)g(write)g(an)h(output)f(FITS)h(file)g(to)g(the)g
+(stdout)143 3512 y(stream.)94 b(This)46 b(driver)g(is)i(fragile)d(and)i
+(has)g(limited)143 3625 y(functionality)d(\(see)j(the)g(following)e
+(note\).)286 3738 y(gsiftp://)93 b(-)48 b(access)e(files)g(on)h(a)h
+(computational)c(grid)j(using)f(the)h(gridftp)907 3851
+y(protocol)e(in)j(the)e(Globus)h(toolkit)e(\(see)i(following)e(note\).)
+382 3964 y(root://)93 b(-)48 b(uses)e(the)h(CERN)g(root)g(protocol)e
+(for)i(writing)f(as)h(well)g(as)907 4077 y(reading)f(files)g(over)h
+(the)g(network)e(\(see)i(following)e(note\).)334 4190
+y(shmem://)93 b(-)48 b(opens)e(or)h(creates)f(a)i(file)e(which)h
+(persists)e(in)i(the)g(computer's)907 4302 y(shared)f(memory)g(\(see)h
+(following)e(note\).)430 4415 y(mem://)93 b(-)48 b(opens)e(a)i
+(temporary)d(file)i(in)g(core)f(memory.)94 b(The)47 b(file)907
+4528 y(disappears)e(when)h(the)h(program)f(exits)h(so)g(this)f(is)i
+(mainly)907 4641 y(useful)e(for)h(test)f(purposes)g(when)h(a)g
+(permanent)e(output)h(file)907 4754 y(is)h(not)g(desired.)0
+4983 y Fj(If)35 b(the)h(\014let)m(yp)s(e)g(is)f(not)h(sp)s(eci\014ed,)h
+(then)e(t)m(yp)s(e)h(\014le://)h(is)e(assumed.)56 b(The)35
+b(double)g(slashes)h('//')h(are)f(optional)0 5096 y(and)30
+b(ma)m(y)h(b)s(e)e(omitted)j(in)e(most)h(cases.)0 5382
+y Fd(10.2.1)113 b(Notes)36 b(ab)s(out)j(HTTP)d(pro)m(xy)i(serv)m(ers)0
+5601 y Fj(A)32 b(pro)m(xy)g(HTTP)f(serv)m(er)h(ma)m(y)h(b)s(e)e(used)g
+(b)m(y)h(de\014ning)f(the)h(address)f(\(URL\))i(and)e(p)s(ort)g(n)m(um)
+m(b)s(er)g(of)h(the)g(pro)m(xy)0 5714 y(serv)m(er)f(with)f(the)g(h)m
+(ttp)p 801 5714 28 4 v 33 w(pro)m(xy)g(en)m(vironmen)m(t)h(v)-5
+b(ariable.)42 b(F)-8 b(or)31 b(example)p eop end
+%%Page: 121 129
+TeXDict begin 121 128 bop 0 299 a Fh(10.2.)73 b(FILETYPE)3037
+b Fj(121)191 555 y Fe(setenv)46 b(http_proxy)f
+(http://heasarc.gsfc.nasa)o(.gov)o(:312)o(8)0 793 y Fj(will)38
+b(cause)g(CFITSIO)f(to)h(use)g(p)s(ort)f(3128)i(on)f(the)g(heasarc)g
+(pro)m(xy)g(serv)m(er)g(whenev)m(er)g(reading)g(a)g(FITS)f(\014le)0
+906 y(with)30 b(HTTP)-8 b(.)0 1194 y Fd(10.2.2)113 b(Notes)36
+b(ab)s(out)j(the)e(stream)h(\014let)m(yp)s(e)g(driv)m(er)0
+1413 y Fj(The)e(stream)h(driv)m(er)f(can)h(b)s(e)f(used)g(to)h
+(e\016cien)m(tly)i(read)d(a)h(FITS)f(\014le)h(from)f(the)h(stdin)f
+(\014le)g(stream)h(or)g(write)0 1525 y(a)44 b(FITS)e(to)i(the)g(stdout)
+f(\014le)g(stream.)80 b(Ho)m(w)m(ev)m(er,)49 b(b)s(ecause)43
+b(these)h(input)e(and)h(output)g(streams)g(m)m(ust)h(b)s(e)0
+1638 y(accessed)30 b(sequen)m(tially)-8 b(,)31 b(the)e(FITS)f(\014le)g
+(reading)h(or)f(writing)h(application)h(m)m(ust)e(also)i(read)e(and)g
+(write)h(the)g(\014le)0 1751 y(sequen)m(tially)-8 b(,)33
+b(at)e(least)g(within)f(the)h(tolerances)h(describ)s(ed)d(b)s(elo)m(w.)
+0 1911 y(CFITSIO)34 b(supp)s(orts)f(2)j(di\013eren)m(t)f(metho)s(ds)g
+(for)g(accessing)i(FITS)d(\014les)h(on)h(the)f(stdin)g(and)f(stdout)h
+(streams.)0 2024 y(The)c(original)i(metho)s(d,)f(whic)m(h)f(is)h(in)m
+(v)m(ok)m(ed)h(b)m(y)f(sp)s(ecifying)f(a)h(dash)f(c)m(haracter,)j("-",)
+g(as)d(the)h(name)g(of)g(the)g(\014le)0 2137 y(when)g(op)s(ening)g(or)h
+(creating)h(it,)g(w)m(orks)e(b)m(y)h(storing)g(a)g(complete)h(cop)m(y)g
+(of)f(the)g(en)m(tire)g(FITS)f(\014le)h(in)f(memory)-8
+b(.)0 2250 y(In)35 b(this)g(case,)k(when)34 b(reading)i(from)f(stdin,)i
+(CFITSIO)d(will)i(cop)m(y)h(the)e(en)m(tire)i(stream)f(in)m(to)h
+(memory)e(b)s(efore)0 2363 y(doing)c(an)m(y)h(pro)s(cessing)f(of)h(the)
+f(\014le.)44 b(Similarly)-8 b(,)32 b(when)f(writing)g(to)h(stdout,)g
+(CFITSIO)d(will)j(create)h(a)f(cop)m(y)g(of)0 2476 y(the)h(en)m(tire)g
+(FITS)f(\014le)g(in)h(memory)-8 b(,)33 b(b)s(efore)f(\014nally)h
+(\015ushing)e(it)i(out)f(to)i(the)e(stdout)h(stream)g(when)e(the)i
+(FITS)0 2589 y(\014le)g(is)g(closed.)49 b(Bu\013ering)33
+b(the)g(en)m(tire)h(FITS)e(\014le)h(in)g(this)f(w)m(a)m(y)i(allo)m(ws)g
+(the)f(application)i(to)e(randomly)g(access)0 2702 y(an)m(y)h(part)f
+(of)h(the)f(FITS)g(\014le,)i(in)e(an)m(y)h(order,)f(but)g(it)h(also)h
+(requires)e(that)h(the)f(user)g(ha)m(v)m(e)i(su\016cien)m(t)f(a)m(v)-5
+b(ailable)0 2815 y(memory)30 b(\(or)g(virtual)g(memory\))g(to)h(store)f
+(the)g(en)m(tire)h(\014le,)f(whic)m(h)f(ma)m(y)i(not)f(b)s(e)f(p)s
+(ossible)g(in)h(the)g(case)h(of)f(v)m(ery)0 2928 y(large)h(\014les.)0
+3088 y(The)e(new)m(er)g(stream)h(\014let)m(yp)s(e)g(pro)m(vides)f(a)h
+(more)f(memory-e\016cien)m(t)i(metho)s(d)e(of)h(accessing)h(FITS)d
+(\014les)h(on)h(the)0 3201 y(stdin)37 b(or)h(stdout)g(streams.)64
+b(Instead)38 b(of)g(storing)g(a)g(cop)m(y)h(of)f(the)g(en)m(tire)h
+(FITS)e(\014le)h(in)g(memory)-8 b(,)40 b(CFITSIO)0 3314
+y(only)32 b(uses)g(a)g(set)h(of)f(in)m(ternal)h(bu\013er)e(whic)m(h)h
+(b)m(y)g(default)g(can)g(store)h(40)g(FITS)e(blo)s(c)m(ks,)i(or)g(ab)s
+(out)e(100K)i(b)m(ytes)0 3427 y(of)f(the)f(FITS)g(\014le.)43
+b(The)31 b(application)i(program)e(m)m(ust)g(pro)s(cess)g(the)h(FITS)e
+(\014le)i(sequen)m(tially)h(from)e(b)s(eginning)0 3539
+y(to)h(end,)e(within)g(this)h(100K)h(bu\013er.)41 b(Generally)32
+b(sp)s(eaking)f(the)g(application)h(program)f(m)m(ust)f(conform)h(to)h
+(the)0 3652 y(follo)m(wing)g(restrictions:)136 3891 y
+Fc(\017)46 b Fj(The)36 b(program)f(m)m(ust)h(\014nish)e(reading)i(or)g
+(writing)f(the)h(header)g(k)m(eyw)m(ords)g(b)s(efore)f(reading)h(or)g
+(writing)227 4004 y(an)m(y)31 b(data)g(in)f(the)h(HDU.)136
+4184 y Fc(\017)46 b Fj(The)24 b(HDU)h(can)f(con)m(tain)i(at)e(most)h
+(ab)s(out)f(1400)h(header)f(k)m(eyw)m(ords.)39 b(This)24
+b(is)g(the)g(maxim)m(um)g(that)h(can)f(\014t)227 4297
+y(in)g(the)g(nominal)h(40)g(FITS)e(blo)s(c)m(k)i(bu\013er.)37
+b(In)24 b(principle,)h(this)f(limit)h(could)f(b)s(e)g(increased)g(b)m
+(y)g(recompiling)227 4410 y(CFITSIO)29 b(with)h(a)h(larger)g(bu\013er)e
+(limit,)j(whic)m(h)e(is)g(set)h(b)m(y)f(the)h(NIOBUF)g(parameter)g(in)f
+(\014tsio2.h.)136 4590 y Fc(\017)46 b Fj(The)32 b(program)g(m)m(ust)f
+(read)h(or)g(write)h(the)f(data)g(in)g(a)g(sequen)m(tial)i(manner)d
+(from)h(the)g(b)s(eginning)f(to)i(the)227 4703 y(end)26
+b(of)g(the)h(HDU.)g(Note)h(that)f(CFITSIO's)e(in)m(ternal)i(100K)g
+(bu\013er)e(allo)m(ws)j(a)e(little)j(latitude)e(in)f(meeting)227
+4816 y(this)31 b(requiremen)m(t.)136 4997 y Fc(\017)46
+b Fj(The)30 b(program)g(cannot)h(mo)m(v)m(e)h(bac)m(k)f(to)g(a)g
+(previous)f(HDU)h(in)f(the)h(FITS)e(\014le.)136 5177
+y Fc(\017)46 b Fj(Reading)c(or)f(writing)f(of)h(v)-5
+b(ariable)42 b(length)f(arra)m(y)h(columns)e(in)h(binary)f(tables)i(is)
+f(not)g(supp)s(orted)e(on)227 5290 y(streams,)29 b(b)s(ecause)f(this)g
+(requires)g(mo)m(ving)g(bac)m(k)h(and)f(forth)f(b)s(et)m(w)m(een)i(the)
+f(\014xed-length)g(p)s(ortion)g(of)g(the)227 5403 y(binary)i(table)h
+(and)f(the)g(follo)m(wing)i(heap)e(area)i(where)e(the)g(arra)m(ys)h
+(are)g(actually)h(stored.)136 5583 y Fc(\017)46 b Fj(Reading)25
+b(or)g(writing)f(of)h(tile-compressed)h(images)g(is)e(not)h(supp)s
+(orted)e(on)h(streams,)i(b)s(ecause)f(the)g(images)227
+5696 y(are)31 b(in)m(ternally)g(stored)g(using)f(v)-5
+b(ariable)31 b(length)g(arra)m(ys.)p eop end
+%%Page: 122 130
+TeXDict begin 122 129 bop 0 299 a Fj(122)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fd(10.2.3)113 b(Notes)36 b(ab)s(out)j(the)e(gsiftp)h(\014let)m
+(yp)s(e)0 774 y Fj(DEPENDENCIES:)c(Globus)h(to)s(olkit)h(\(2.4.3)g(or)f
+(higher\))f(\(GT\))h(should)f(b)s(e)g(installed.)53 b(There)34
+b(are)h(t)m(w)m(o)h(dif-)0 887 y(feren)m(t)31 b(w)m(a)m(ys)g(to)g
+(install)g(GT:)0 1047 y(1\))43 b(goto)h(the)f(globus)f(to)s(olkit)i(w)m
+(eb)e(page)i(www.globus.org)e(and)g(follo)m(w)h(the)g(do)m(wnload)g
+(and)e(compilation)0 1160 y(instructions;)0 1320 y(2\))j(goto)i(the)d
+(Virtual)i(Data)g(T)-8 b(o)s(olkit)45 b(w)m(eb)e(page)i(h)m
+(ttp://vdt.cs.wisc.edu/)g(and)e(follo)m(w)i(the)f(instructions)0
+1433 y(\(STR)m(ONGL)-8 b(Y)31 b(SUGGESTED\);)0 1593 y(Once)23
+b(a)h(globus)f(clien)m(t)h(has)f(b)s(een)g(installed)h(in)e(y)m(our)i
+(system)f(with)g(a)g(sp)s(eci\014c)g(\015a)m(v)m(our)h(it)f(is)g(p)s
+(ossible)g(to)h(compile)0 1706 y(and)30 b(install)h(the)g(CFITSIO)d
+(libraries.)41 b(Sp)s(eci\014c)30 b(con\014guration)h(\015ags)f(m)m
+(ust)h(b)s(e)e(used:)0 1866 y(1\))21 b({with-gsiftp[[=P)-8
+b(A)g(TH]])22 b(Enable)f(Globus)f(T)-8 b(o)s(olkit)21
+b(gsiftp)g(proto)s(col)g(supp)s(ort)d(P)-8 b(A)g(TH=GLOBUS)p
+3532 1866 28 4 v 33 w(LOCA)g(TION)0 1979 y(i.e.)42 b(the)30
+b(lo)s(cation)i(of)f(y)m(our)f(globus)g(installation)0
+2139 y(2\))h({with-gsiftp-\015a)m(v)m(our[[=P)-8 b(A)g(TH])33
+b(de\014nes)d(the)g(sp)s(eci\014c)g(Globus)h(\015a)m(v)m(our)f(ex.)41
+b(gcc32)0 2300 y(Both)31 b(the)g(\015ags)f(m)m(ust)g(b)s(e)g(used)g
+(and)f(it)i(is)g(mandatory)f(to)h(set)g(b)s(oth)f(the)g(P)-8
+b(A)g(TH)31 b(and)f(the)h(\015a)m(v)m(our.)0 2460 y(USA)m(GE:)g(T)-8
+b(o)31 b(access)h(\014les)e(on)g(a)h(gridftp)f(serv)m(er)g(it)h(is)g
+(necessary)f(to)i(use)e(a)g(gsiftp)h(pre\014x:)0 2620
+y(example:)41 b(gsiftp://remote)p 1003 2620 V 35 w(serv)m(er)p
+1271 2620 V 34 w(fqhn/directory/\014lename)0 2780 y(The)f(gridftp)g
+(driv)m(er)g(uses)g(a)g(lo)s(cal)i(bu\013er)d(on)i(a)f(temp)s(orary)g
+(\014le)h(the)f(\014le)h(is)f(lo)s(cated)i(in)e(the)g(/tmp)h(direc-)0
+2893 y(tory)-8 b(.)73 b(If)40 b(y)m(ou)h(ha)m(v)m(e)h(sp)s(ecial)g(p)s
+(ermissions)d(on)i(/tmp)g(or)g(y)m(ou)g(do)f(not)i(ha)m(v)m(e)g(a)f
+(/tmp)g(directory)-8 b(,)44 b(it)e(is)e(p)s(os-)0 3006
+y(sible)d(to)h(force)g(another)g(lo)s(cation)g(setting)h(the)e(GSIFTP)p
+2068 3006 V 32 w(TMPFILE)g(en)m(vironmen)m(t)h(v)-5 b(ariable)38
+b(\(ex.)62 b(exp)s(ort)0 3119 y(GSIFTP)p 347 3119 V 32
+w(TMPFILE=/y)m(our/lo)s(cation/y)m(ourtmp\014le\).)0
+3279 y(Grid)34 b(FTP)g(supp)s(orts)f(m)m(ulti)h(c)m(hannel)h(transfer.)
+52 b(By)35 b(default)f(a)h(single)g(c)m(hannel)g(transmission)f(is)g(a)
+m(v)-5 b(ailable.)0 3392 y(Ho)m(w)m(ev)m(er,)34 b(it)d(is)h(p)s
+(ossible)e(to)i(mo)s(dify)e(this)i(b)s(eha)m(vior)f(setting)h(the)f
+(GSIFTP)p 2691 3392 V 33 w(STREAMS)f(en)m(vironmen)m(t)h(v)-5
+b(ari-)0 3505 y(able)31 b(\(ex.)41 b(exp)s(ort)30 b(GSIFTP)p
+1016 3505 V 33 w(STREAMS=8\).)0 3790 y Fd(10.2.4)113
+b(Notes)36 b(ab)s(out)j(the)e(ro)s(ot)g(\014let)m(yp)s(e)0
+4009 y Fj(The)20 b(original)j(ro)s(otd)d(serv)m(er)h(can)h(b)s(e)e
+(obtained)h(from:)36 b Fe(ftp://root.cern.ch/root)o(/roo)o(td.t)o(ar.)o
+(gz)15 b Fj(but,)22 b(for)0 4122 y(it)33 b(to)h(w)m(ork)f(correctly)h
+(with)e(CFITSIO)g(one)h(has)f(to)i(use)e(a)i(mo)s(di\014ed)d(v)m
+(ersion)j(whic)m(h)e(supp)s(orts)f(a)i(command)0 4235
+y(to)41 b(return)d(the)j(length)f(of)g(the)g(\014le.)70
+b(This)39 b(mo)s(di\014ed)f(v)m(ersion)j(is)f(a)m(v)-5
+b(ailable)42 b(in)e(ro)s(otd)f(sub)s(directory)g(in)h(the)0
+4348 y(CFITSIO)29 b(ftp)h(area)h(at)286 4577 y Fe
+(ftp://legacy.gsfc.nasa.gov)o(/so)o(ftwa)o(re/f)o(its)o(io/c)o(/roo)o
+(t/r)o(ootd)o(.tar)o(.gz)o(.)0 4805 y Fj(This)j(small)g(serv)m(er)h(is)
+g(started)f(either)h(b)m(y)g(inetd)f(when)f(a)i(clien)m(t)h(requests)e
+(a)h(connection)h(to)f(a)f(ro)s(otd)h(serv)m(er)0 4918
+y(or)30 b(b)m(y)g(hand)f(\(i.e.)42 b(from)30 b(the)g(command)g(line\).)
+42 b(The)29 b(ro)s(otd)h(serv)m(er)h(w)m(orks)f(with)g(the)g(R)m(OOT)g
+(TNetFile)i(class.)0 5031 y(It)e(allo)m(ws)g(remote)h(access)f(to)h(R)m
+(OOT)e(database)h(\014les)f(in)g(either)h(read)g(or)f(write)h(mo)s(de.)
+40 b(By)30 b(default)f(TNetFile)0 5144 y(assumes)38 b(p)s(ort)g(432)h
+(\(whic)m(h)f(requires)g(ro)s(otd)g(to)h(b)s(e)f(started)h(as)f(ro)s
+(ot\).)65 b(T)-8 b(o)39 b(run)e(ro)s(otd)h(via)h(inetd)f(add)g(the)0
+5257 y(follo)m(wing)32 b(line)f(to)g(/etc/services:)95
+5485 y Fe(rootd)238 b(432/tcp)0 5714 y Fj(and)30 b(to)h
+(/etc/inetd.conf,)i(add)d(the)g(follo)m(wing)i(line:)p
+eop end
+%%Page: 123 131
+TeXDict begin 123 130 bop 0 299 a Fh(10.2.)73 b(FILETYPE)3037
+b Fj(123)95 555 y Fe(rootd)47 b(stream)f(tcp)h(nowait)f(root)h
+(/user/rdm/root/bin/root)o(d)42 b(rootd)k(-i)0 829 y
+Fj(F)-8 b(orce)30 b(inetd)e(to)h(reread)f(its)h(conf)f(\014le)g(with)g
+Fe(kill)47 b(-HUP)g(<pid)f(inetd>)p Fj(.)39 b(Y)-8 b(ou)28
+b(can)h(also)g(start)g(ro)s(otd)f(b)m(y)g(hand)0 942
+y(running)35 b(directly)i(under)d(y)m(our)j(priv)-5 b(ate)37
+b(accoun)m(t)g(\(no)g(ro)s(ot)g(system)f(privileges)h(needed\).)59
+b(F)-8 b(or)37 b(example)g(to)0 1054 y(start)e(ro)s(otd)g(listening)g
+(on)g(p)s(ort)f(5151)j(just)d(t)m(yp)s(e:)49 b Fe(rootd)e(-p)g(5151)33
+b Fj(Notice)k(that)f(no)e(&)h(is)f(needed.)54 b(Ro)s(otd)0
+1167 y(will)31 b(go)g(in)m(to)g(bac)m(kground)f(b)m(y)h(itself.)95
+1441 y Fe(Rootd)47 b(arguments:)191 1554 y(-i)763 b(says)47
+b(we)g(were)f(started)g(by)h(inetd)191 1667 y(-p)g(port#)476
+b(specifies)45 b(a)j(different)d(port)i(to)g(listen)f(on)191
+1780 y(-d)h(level)476 b(level)46 b(of)i(debug)e(info)h(written)e(to)j
+(syslog)1050 1893 y(0)f(=)h(no)f(debug)f(\(default\))1050
+2005 y(1)h(=)h(minimum)1050 2118 y(2)f(=)h(medium)1050
+2231 y(3)f(=)h(maximum)0 2505 y Fj(Ro)s(otd)29 b(can)f(also)h(b)s(e)f
+(con\014gured)g(for)g(anon)m(ymous)g(usage)h(\(lik)m(e)h(anon)m(ymous)e
+(ftp\).)40 b(T)-8 b(o)29 b(setup)f(ro)s(otd)g(to)h(accept)0
+2618 y(anon)m(ymous)h(logins)h(do)g(the)f(follo)m(wing)i(\(while)f(b)s
+(eing)f(logged)i(in)e(as)g(ro)s(ot\):)143 2891 y Fe(-)48
+b(Add)f(the)f(following)g(line)g(to)i(/etc/passwd:)239
+3117 y(rootd:*:71:72:Anonymous)41 b(rootd:/var/spool/rootd:/b)o(in/)o
+(fals)o(e)239 3343 y(where)46 b(you)h(may)g(modify)f(the)h(uid,)f(gid)h
+(\(71,)g(72\))g(and)g(the)g(home)f(directory)239 3456
+y(to)h(suite)f(your)h(system.)143 3681 y(-)h(Add)f(the)f(following)g
+(line)g(to)i(/etc/group:)239 3907 y(rootd:*:72:rootd)239
+4133 y(where)e(the)h(gid)g(must)f(match)h(the)g(gid)g(in)g
+(/etc/passwd.)143 4359 y(-)h(Create)e(the)h(directories:)239
+4585 y(mkdir)f(/var/spool/rootd)239 4698 y(mkdir)g
+(/var/spool/rootd/tmp)239 4811 y(chmod)g(777)h(/var/spool/rootd/tmp)239
+5036 y(Where)f(/var/spool/rootd)d(must)k(match)f(the)h(rootd)g(home)f
+(directory)g(as)239 5149 y(specified)f(in)i(the)g(rootd)f(/etc/passwd)f
+(entry.)143 5375 y(-)j(To)f(make)f(writeable)g(directories)e(for)j
+(anonymous)f(do,)h(for)f(example:)239 5601 y(mkdir)g
+(/var/spool/rootd/pub)239 5714 y(chown)g(rootd:rootd)f
+(/var/spool/rootd/pub)p eop end
+%%Page: 124 132
+TeXDict begin 124 131 bop 0 299 a Fj(124)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fj(That's)42 b(all.)76 b(Sev)m(eral)43 b(additional)g(remarks:)64
+b(y)m(ou)42 b(can)g(login)h(to)g(an)f(anon)m(ymous)f(serv)m(er)i
+(either)f(with)g(the)0 668 y(names)31 b("anon)m(ymous")h(or)f("ro)s
+(otd".)43 b(The)31 b(passw)m(ord)f(should)g(b)s(e)h(of)g(t)m(yp)s(e)g
+(user@host.do.main.)43 b(Only)30 b(the)h(@)0 781 y(is)e(enforced)f(for)
+h(the)f(time)i(b)s(eing.)39 b(In)28 b(anon)m(ymous)h(mo)s(de)f(the)g
+(top)h(of)g(the)g(\014le)f(tree)i(is)e(set)h(to)h(the)e(ro)s(otd)h
+(home)0 894 y(directory)-8 b(,)39 b(therefore)e(only)f(\014les)h(b)s
+(elo)m(w)f(the)h(home)f(directory)h(can)f(b)s(e)g(accessed.)60
+b(Anon)m(ymous)36 b(mo)s(de)g(only)0 1007 y(w)m(orks)30
+b(when)g(the)g(serv)m(er)h(is)f(started)h(via)g(inetd.)0
+1296 y Fd(10.2.5)113 b(Notes)36 b(ab)s(out)j(the)e(shmem)i(\014let)m
+(yp)s(e:)0 1515 y Fj(Shared)34 b(memory)h(\014les)g(are)g(curren)m(tly)
+g(supp)s(orted)e(on)i(most)h(Unix)f(platforms,)h(where)f(the)g(shared)f
+(memory)0 1627 y(segmen)m(ts)d(are)g(managed)g(b)m(y)f(the)g(op)s
+(erating)h(system)g(k)m(ernel)f(and)g(`liv)m(e')i(indep)s(enden)m(tly)d
+(of)i(pro)s(cesses.)40 b(They)0 1740 y(are)34 b(not)g(deleted)h(\(b)m
+(y)f(default\))g(when)f(the)h(pro)s(cess)f(whic)m(h)h(created)h(them)f
+(terminates,)h(although)g(they)f(will)0 1853 y(disapp)s(ear)e(if)h(the)
+h(system)f(is)g(reb)s(o)s(oted.)49 b(Applications)34
+b(can)g(create)h(shared)d(memory)h(\014les)g(in)g(CFITSIO)f(b)m(y)0
+1966 y(calling:)143 2214 y Fe(fit_create_file\(&fitsfile)o(ptr,)41
+b("shmem://h2",)j(&status\);)0 2462 y Fj(where)25 b(the)g(ro)s(ot)h
+(`\014le')f(names)h(are)f(curren)m(tly)g(restricted)h(to)g(b)s(e)f
+('h0',)i('h1',)g('h2',)g('h3',)f(etc.,)i(up)d(to)g(a)h(maxim)m(um)0
+2575 y(n)m(um)m(b)s(er)20 b(de\014ned)f(b)m(y)i(the)g(the)g(v)-5
+b(alue)22 b(of)f(SHARED)p 1746 2575 28 4 v 33 w(MAXSEG)g(\(equal)h(to)f
+(16)h(b)m(y)f(default\).)38 b(This)20 b(is)h(a)g(protot)m(yp)s(e)0
+2688 y(implemen)m(tation)30 b(of)f(the)g(shared)f(memory)g(in)m
+(terface)i(and)e(a)h(more)g(robust)f(in)m(terface,)j(whic)m(h)d(will)h
+(ha)m(v)m(e)h(few)m(er)0 2801 y(restrictions)h(on)f(the)h(n)m(um)m(b)s
+(er)e(of)i(\014les)f(and)g(on)g(their)g(names,)h(ma)m(y)g(b)s(e)f(dev)m
+(elop)s(ed)g(in)g(the)h(future.)0 2961 y(When)23 b(op)s(ening)h(an)f
+(already)h(existing)h(FITS)e(\014le)h(in)f(shared)g(memory)h(one)g
+(calls)g(the)g(usual)g(CFITSIO)e(routine:)143 3209 y
+Fe(fits_open_file\(&fitsfilep)o(tr,)41 b("shmem://h7",)j(mode,)j
+(&status\))0 3457 y Fj(The)26 b(\014le)h(mo)s(de)g(can)g(b)s(e)f(READ)m
+(WRITE)h(or)g(READONL)-8 b(Y)28 b(just)e(as)h(with)f(disk)h(\014les.)39
+b(More)28 b(than)e(one)h(pro)s(cess)0 3570 y(can)35 b(op)s(erate)g(on)f
+(READONL)-8 b(Y)35 b(mo)s(de)f(\014les)h(at)g(the)f(same)h(time.)54
+b(CFITSIO)33 b(supp)s(orts)f(prop)s(er)h(\014le)i(lo)s(c)m(king)0
+3682 y(\(b)s(oth)27 b(in)h(READONL)-8 b(Y)29 b(and)e(READ)m(WRITE)h(mo)
+s(des\),)h(so)f(calls)h(to)f(\014ts)p 2572 3682 V 33
+w(op)s(en)p 2795 3682 V 32 w(\014le)g(ma)m(y)g(b)s(e)f(lo)s(c)m(k)m(ed)
+j(out)e(un)m(til)0 3795 y(another)j(other)f(pro)s(cess)g(closes)i(the)e
+(\014le.)0 3956 y(When)g(an)g(application)i(is)e(\014nished)f
+(accessing)j(a)e(FITS)g(\014le)g(in)g(a)h(shared)e(memory)h(segmen)m
+(t,)i(it)f(ma)m(y)g(close)g(it)0 4068 y(\(and)j(the)g(\014le)g(will)g
+(remain)f(in)h(the)g(system\))g(with)g(\014ts)p 1955
+4068 V 32 w(close)p 2173 4068 V 34 w(\014le,)h(or)f(delete)h(it)g(with)
+e(\014ts)p 3191 4068 V 33 w(delete)p 3455 4068 V 34 w(\014le.)51
+b(Ph)m(ys-)0 4181 y(ical)36 b(deletion)g(is)f(p)s(ostp)s(oned)e(un)m
+(til)j(the)f(last)g(pro)s(cess)g(calls)h(\013clos/\013delt.)56
+b(\014ts)p 2801 4181 V 32 w(delete)p 3064 4181 V 34 w(\014le)35
+b(tries)h(to)f(obtain)h(a)0 4294 y(READ)m(WRITE)e(lo)s(c)m(k)g(on)f
+(the)g(\014le)h(to)g(b)s(e)e(deleted,)j(th)m(us)e(it)h(can)f(b)s(e)g
+(blo)s(c)m(k)m(ed)h(if)f(the)h(ob)5 b(ject)34 b(w)m(as)f(not)h(op)s
+(ened)0 4407 y(in)c(READ)m(WRITE)h(mo)s(de.)0 4567 y(A)i(shared)f
+(memory)h(managemen)m(t)h(utilit)m(y)g(program)f(called)h(`smem',)f(is)
+g(included)f(with)h(the)g(CFITSIO)e(dis-)0 4680 y(tribution.)39
+b(It)27 b(can)g(b)s(e)f(built)h(b)m(y)g(t)m(yping)g(`mak)m(e)h(smem';)g
+(then)f(t)m(yp)s(e)g(`smem)f(-h')h(to)h(get)g(a)f(list)g(of)g(v)-5
+b(alid)27 b(options.)0 4793 y(Executing)37 b(smem)f(without)g(an)m(y)h
+(options)g(causes)f(it)h(to)g(list)g(all)g(the)g(shared)e(memory)i
+(segmen)m(ts)g(curren)m(tly)0 4906 y(residing)c(in)g(the)g(system)h
+(and)e(managed)i(b)m(y)f(the)h(shared)e(memory)h(driv)m(er.)49
+b(T)-8 b(o)34 b(get)g(a)g(list)g(of)f(all)h(the)g(shared)0
+5019 y(memory)c(ob)5 b(jects,)32 b(run)d(the)h(system)h(utilit)m(y)g
+(program)f(`ip)s(cs)h([-a]'.)0 5351 y Ff(10.3)136 b(Base)45
+b(Filename)0 5601 y Fj(The)31 b(base)g(\014lename)h(is)f(the)h(name)f
+(of)h(the)f(\014le)h(optionally)g(including)f(the)h(director/sub)s
+(directory)f(path,)h(and)0 5714 y(in)e(the)h(case)g(of)g(`ftp',)f(`h)m
+(ttp',)i(and)d(`ro)s(ot')j(\014let)m(yp)s(es,)e(the)h(mac)m(hine)g
+(iden)m(ti\014er.)41 b(Examples:)p eop end
+%%Page: 125 133
+TeXDict begin 125 132 bop 0 299 a Fh(10.3.)73 b(BASE)30
+b(FILENAME)2739 b Fj(125)191 555 y Fe(myfile.fits)191
+668 y(!data.fits)191 781 y(/data/myfile.fits)191 894
+y(fits.gsfc.nasa.gov/ftp/s)o(ampl)o(eda)o(ta/m)o(yfil)o(e.f)o(its.)o
+(gz)0 1120 y Fj(When)29 b(creating)h(a)f(new)f(output)h(\014le)g(on)g
+(magnetic)h(disk)e(\(of)i(t)m(yp)s(e)f(\014le://\))h(if)f(the)g(base)g
+(\014lename)g(b)s(egins)f(with)0 1233 y(an)34 b(exclamation)j(p)s(oin)m
+(t)d(\(!\))54 b(then)34 b(an)m(y)g(existing)i(\014le)e(with)g(that)h
+(same)g(basename)g(will)g(b)s(e)e(deleted)i(prior)f(to)0
+1346 y(creating)h(the)f(new)g(FITS)f(\014le.)51 b(Otherwise)34
+b(if)g(the)g(\014le)g(to)g(b)s(e)g(created)h(already)f(exists,)i(then)d
+(CFITSIO)g(will)0 1459 y(return)g(an)h(error)f(and)g(will)i(not)f(o)m
+(v)m(erwrite)h(the)f(existing)h(\014le.)52 b(Note)35
+b(that)g(the)f(exclamation)i(p)s(oin)m(t,)f(')10 b(!',)36
+b(is)e(a)0 1572 y(sp)s(ecial)28 b(UNIX)g(c)m(haracter,)j(so)d(if)f(it)i
+(is)f(used)f(on)g(the)h(command)g(line)g(rather)g(than)f(en)m(tered)h
+(at)h(a)f(task)h(prompt,)0 1685 y(it)j(m)m(ust)f(b)s(e)g(preceded)g(b)m
+(y)h(a)g(bac)m(kslash)g(to)g(force)g(the)g(UNIX)g(shell)f(to)h(pass)f
+(it)i(v)m(erbatim)f(to)g(the)g(application)0 1798 y(program.)0
+1958 y(If)24 b(the)i(output)e(disk)h(\014le)g(name)g(ends)f(with)g(the)
+h(su\016x)f('.gz',)k(then)d(CFITSIO)e(will)i(compress)g(the)g(\014le)g
+(using)g(the)0 2071 y(gzip)g(compression)f(algorithm)h(b)s(efore)f
+(writing)g(it)h(to)g(disk.)38 b(This)23 b(can)i(reduce)f(the)g(amoun)m
+(t)h(of)f(disk)g(space)h(used)0 2184 y(b)m(y)34 b(the)h(\014le.)53
+b(Note)36 b(that)f(this)g(feature)g(requires)f(that)h(the)f
+(uncompressed)g(\014le)g(b)s(e)g(constructed)h(in)f(memory)0
+2297 y(b)s(efore)c(it)h(is)f(compressed)g(and)g(written)h(to)g(disk,)f
+(so)g(it)h(can)g(fail)g(if)f(there)h(is)f(insu\016cien)m(t)h(a)m(v)-5
+b(ailable)33 b(memory)-8 b(.)0 2457 y(An)45 b(input)g(FITS)f(\014le)i
+(ma)m(y)g(b)s(e)f(compressed)g(with)h(the)f(gzip)h(or)g(Unix)f
+(compress)h(algorithms,)k(in)45 b(whic)m(h)0 2570 y(case)38
+b(CFITSIO)e(will)i(uncompress)e(the)i(\014le)g(on)f(the)h(\015y)e(in)m
+(to)j(a)f(temp)s(orary)f(\014le)g(\(in)h(memory)f(or)g(on)h(disk\).)0
+2683 y(Compressed)32 b(\014les)i(ma)m(y)g(only)f(b)s(e)g(op)s(ened)f
+(with)h(read-only)h(p)s(ermission.)49 b(When)33 b(sp)s(ecifying)g(the)h
+(name)f(of)h(a)0 2796 y(compressed)h(FITS)g(\014le)h(it)g(is)g(not)g
+(necessary)g(to)g(app)s(end)e(the)i(\014le)g(su\016x)e(\(e.g.,)39
+b(`.gz')e(or)f(`.Z'\).)g(If)f(CFITSIO)0 2908 y(cannot)24
+b(\014nd)e(the)h(input)f(\014le)i(name)f(without)g(the)g(su\016x,)h
+(then)f(it)h(will)g(automatically)i(searc)m(h)e(for)f(a)g(compressed)0
+3021 y(\014le)36 b(with)f(the)h(same)g(ro)s(ot)g(name.)57
+b(In)35 b(the)h(case)h(of)f(reading)g(ftp)f(and)g(h)m(ttp)h(t)m(yp)s(e)
+g(\014les,)h(CFITSIO)e(generally)0 3134 y(lo)s(oks)j(for)g(a)g
+(compressed)g(v)m(ersion)g(of)g(the)g(\014le)g(\014rst,)h(b)s(efore)e
+(trying)h(to)h(op)s(en)e(the)h(uncompressed)e(\014le.)64
+b(By)0 3247 y(default,)37 b(CFITSIO)e(copies)h(\(and)g(uncompressed)e
+(if)i(necessary\))g(the)g(ftp)f(or)h(h)m(ttp)g(FITS)f(\014le)g(in)m(to)
+i(memory)0 3360 y(on)f(the)g(lo)s(cal)h(mac)m(hine)f(b)s(efore)g(op)s
+(ening)f(it.)58 b(This)35 b(will)h(fail)g(if)g(the)g(lo)s(cal)h(mac)m
+(hine)g(do)s(es)e(not)h(ha)m(v)m(e)h(enough)0 3473 y(memory)g(to)h
+(hold)f(the)g(whole)h(FITS)e(\014le,)k(so)d(in)g(this)g(case,)k(the)c
+(output)g(\014lename)g(sp)s(eci\014er)g(\(see)h(the)g(next)0
+3586 y(section\))32 b(can)f(b)s(e)e(used)h(to)h(further)e(con)m(trol)j
+(ho)m(w)e(CFITSIO)f(reads)h(ftp)g(and)g(h)m(ttp)g(\014les.)0
+3746 y(If)i(the)h(input)f(\014le)h(is)g(an)g(IRAF)g(image)h(\014le)f
+(\(*.imh)g(\014le\))h(then)e(CFITSIO)f(will)j(automatically)h(con)m(v)m
+(ert)g(it)e(on)0 3859 y(the)27 b(\015y)g(in)m(to)h(a)g(virtual)f(FITS)f
+(image)j(b)s(efore)e(it)g(is)g(op)s(ened)g(b)m(y)g(the)g(application)i
+(program.)39 b(IRAF)27 b(images)i(can)0 3972 y(only)h(b)s(e)g(op)s
+(ened)g(with)g(READONL)-8 b(Y)31 b(\014le)f(access.)0
+4132 y(Similarly)-8 b(,)32 b(if)f(the)g(input)f(\014le)i(is)f(a)g(ra)m
+(w)g(binary)f(data)i(arra)m(y)-8 b(,)33 b(then)d(CFITSIO)g(will)h(con)m
+(v)m(ert)i(it)e(on)g(the)h(\015y)e(in)m(to)0 4245 y(a)38
+b(virtual)g(FITS)g(image)h(with)e(the)h(basic)h(set)f(of)g(required)f
+(header)h(k)m(eyw)m(ords)g(b)s(efore)g(it)g(is)g(op)s(ened)f(b)m(y)h
+(the)0 4358 y(application)32 b(program)f(\(with)g(READONL)-8
+b(Y)31 b(access\).)44 b(In)30 b(this)h(case)h(the)f(data)g(t)m(yp)s(e)g
+(and)g(dimensions)f(of)h(the)0 4471 y(image)d(m)m(ust)f(b)s(e)f(sp)s
+(eci\014ed)g(in)h(square)g(brac)m(k)m(ets)h(follo)m(wing)g(the)f
+(\014lename)g(\(e.g.)41 b(ra)m(w\014le.dat[ib512,512]\).)j(The)0
+4584 y(\014rst)30 b(c)m(haracter)i(\(case)f(insensitiv)m(e\))h
+(de\014nes)e(the)g(data)h(t)m(yp)s(e)g(of)f(the)h(arra)m(y:)239
+4810 y Fe(b)429 b(8-bit)46 b(unsigned)g(byte)239 4923
+y(i)381 b(16-bit)46 b(signed)g(integer)239 5036 y(u)381
+b(16-bit)46 b(unsigned)g(integer)239 5149 y(j)381 b(32-bit)46
+b(signed)g(integer)239 5262 y(r)h(or)g(f)143 b(32-bit)46
+b(floating)g(point)239 5375 y(d)381 b(64-bit)46 b(floating)g(point)0
+5601 y Fj(An)40 b(optional)h(second)f(c)m(haracter)i(sp)s(eci\014es)e
+(the)h(b)m(yte)f(order)g(of)g(the)h(arra)m(y)g(v)-5 b(alues:)60
+b(b)40 b(or)g(B)h(indicates)g(big)0 5714 y(endian)30
+b(\(as)g(in)g(FITS)f(\014les)h(and)f(the)h(nativ)m(e)i(format)e(of)g
+(SUN)g(UNIX)g(w)m(orkstations)h(and)f(Mac)h(PCs\))e(and)h(l)g(or)p
+eop end
+%%Page: 126 134
+TeXDict begin 126 133 bop 0 299 a Fj(126)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fj(L)27 b(indicates)i(little)g(endian)e(\(nativ)m(e)j(format)d
+(of)h(DEC)g(OSF)f(w)m(orkstations)h(and)f(IBM)h(PCs\).)40
+b(If)27 b(this)g(c)m(haracter)0 668 y(is)f(omitted)g(then)f(the)h(arra)
+m(y)g(is)g(assumed)f(to)h(ha)m(v)m(e)h(the)f(nativ)m(e)g(b)m(yte)h
+(order)e(of)h(the)f(lo)s(cal)i(mac)m(hine.)40 b(These)25
+b(data)0 781 y(t)m(yp)s(e)35 b(c)m(haracters)h(are)g(then)e(follo)m(w)m
+(ed)j(b)m(y)d(a)i(series)f(of)g(one)g(or)g(more)g(in)m(teger)h(v)-5
+b(alues)35 b(separated)h(b)m(y)e(commas)0 894 y(whic)m(h)41
+b(de\014ne)f(the)h(size)h(of)f(eac)m(h)h(dimension)f(of)g(the)g(ra)m(w)
+g(arra)m(y)-8 b(.)74 b(Arra)m(ys)41 b(with)f(up)g(to)i(5)f(dimensions)g
+(are)0 1007 y(curren)m(tly)31 b(supp)s(orted.)41 b(Finally)-8
+b(,)33 b(a)e(b)m(yte)h(o\013set)g(to)g(the)f(p)s(osition)h(of)f(the)g
+(\014rst)f(pixel)i(in)f(the)g(data)h(\014le)f(ma)m(y)h(b)s(e)0
+1120 y(sp)s(eci\014ed)h(b)m(y)g(separating)i(it)f(with)f(a)h(':')48
+b(from)33 b(the)h(last)g(dimension)f(v)-5 b(alue.)51
+b(If)33 b(omitted,)j(it)e(is)f(assumed)g(that)0 1233
+y(the)i(o\013set)h(=)f(0.)54 b(This)35 b(parameter)g(ma)m(y)h(b)s(e)e
+(used)g(to)i(skip)e(o)m(v)m(er)i(an)m(y)g(header)e(information)i(in)e
+(the)h(\014le)g(that)0 1346 y(precedes)30 b(the)h(binary)f(data.)41
+b(F)-8 b(urther)30 b(examples:)95 1603 y Fe(raw.dat[b10000])521
+b(1-dimensional)45 b(10000)h(pixel)g(byte)h(array)95
+1715 y(raw.dat[rb400,400,12])233 b(3-dimensional)45 b(floating)g(point)
+h(big-endian)f(array)95 1828 y(img.fits[ib512,512:2880])89
+b(reads)47 b(the)g(512)g(x)g(512)g(short)f(integer)g(array)g(in)1336
+1941 y(a)i(FITS)e(file,)h(skipping)e(over)i(the)g(2880)g(byte)f(header)
+0 2198 y Fj(One)25 b(sp)s(ecial)g(case)h(of)f(input)f(\014le)h(is)g
+(where)g(the)g(\014lename)g(=)g(`-')h(\(a)f(dash)g(or)g(min)m(us)f
+(sign\))h(or)g('stdin')g(or)g('stdout',)0 2311 y(whic)m(h)d
+(signi\014es)h(that)h(the)f(input)e(\014le)i(is)g(to)h(b)s(e)e(read)g
+(from)h(the)g(stdin)f(stream,)j(or)e(written)f(to)i(the)f(stdout)g
+(stream)0 2424 y(if)34 b(a)g(new)g(output)f(\014le)h(is)g(b)s(eing)g
+(created.)52 b(In)33 b(the)h(case)h(of)f(reading)h(from)e(stdin,)h
+(CFITSIO)f(\014rst)g(copies)i(the)0 2537 y(whole)g(stream)h(in)m(to)g
+(a)f(temp)s(orary)g(FITS)f(\014le)i(\(in)f(memory)g(or)g(on)g(disk\),)h
+(and)f(subsequen)m(t)f(reading)h(of)h(the)0 2650 y(FITS)c(\014le)h(o)s
+(ccurs)g(in)f(this)h(cop)m(y)-8 b(.)49 b(When)33 b(writing)g(to)g
+(stdout,)h(CFITSIO)d(\014rst)h(constructs)h(the)g(whole)g(\014le)g(in)0
+2763 y(memory)h(\(since)i(random)d(access)j(is)e(required\),)i(then)e
+(\015ushes)f(it)i(out)g(to)g(the)f(stdout)h(stream)g(when)e(the)i
+(\014le)0 2876 y(is)30 b(closed.)42 b(In)29 b(addition,)i(if)f(the)g
+(output)g(\014lename)g(=)g('-.gz')i(or)e('stdout.gz')h(then)f(it)h
+(will)f(b)s(e)g(gzip)g(compressed)0 2989 y(b)s(efore)g(b)s(eing)g
+(written)g(to)h(stdout.)0 3149 y(This)25 b(abilit)m(y)j(to)e(read)g
+(and)f(write)h(on)g(the)g(stdin)g(and)f(stdout)h(steams)g(allo)m(ws)i
+(FITS)d(\014les)h(to)g(b)s(e)g(pip)s(ed)e(b)s(et)m(w)m(een)0
+3262 y(tasks)42 b(in)f(memory)g(rather)g(than)h(ha)m(ving)g(to)g
+(create)h(temp)s(orary)e(in)m(termediate)i(FITS)d(\014les)i(on)f(disk.)
+73 b(F)-8 b(or)0 3375 y(example)28 b(if)e(task1)i(creates)h(an)e
+(output)f(FITS)g(\014le,)i(and)f(task2)g(reads)g(an)g(input)f(FITS)g
+(\014le,)i(the)f(FITS)f(\014le)h(ma)m(y)0 3487 y(b)s(e)j(pip)s(ed)f(b)s
+(et)m(w)m(een)i(the)f(2)h(tasks)g(b)m(y)f(sp)s(ecifying)143
+3744 y Fe(task1)47 b(-)g(|)g(task2)g(-)0 4001 y Fj(where)30
+b(the)h(v)m(ertical)i(bar)e(is)f(the)h(Unix)g(piping)f(sym)m(b)s(ol.)42
+b(This)30 b(assumes)g(that)i(the)f(2)g(tasks)g(read)g(the)g(name)g(of)0
+4114 y(the)g(FITS)e(\014le)i(o\013)f(of)h(the)g(command)f(line.)0
+4448 y Ff(10.4)136 b(Output)44 b(File)i(Name)f(when)g(Op)t(ening)g(an)g
+(Existing)h(File)0 4698 y Fj(An)36 b(optional)i(output)e(\014lename)h
+(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(in)g(paren)m(theses)h(immediately)h
+(follo)m(wing)g(the)f(base)g(\014le)0 4811 y(name)28
+b(to)h(b)s(e)f(op)s(ened.)39 b(This)28 b(is)g(mainly)g(useful)g(in)g
+(those)g(cases)i(where)d(CFITSIO)g(creates)j(a)e(temp)s(orary)g(cop)m
+(y)0 4924 y(of)i(the)f(input)g(FITS)f(\014le)i(b)s(efore)f(it)h(is)f
+(op)s(ened)g(and)f(passed)h(to)h(the)g(application)h(program.)40
+b(This)28 b(happ)s(ens)g(b)m(y)0 5036 y(default)i(when)g(op)s(ening)g
+(a)g(net)m(w)m(ork)h(FTP)g(or)f(HTTP-t)m(yp)s(e)g(\014le,)h(when)e
+(reading)h(a)h(compressed)f(FITS)g(\014le)g(on)0 5149
+y(a)36 b(lo)s(cal)h(disk,)g(when)e(reading)h(from)g(the)g(stdin)f
+(stream,)j(or)d(when)g(a)i(column)e(\014lter,)j(ro)m(w)e(\014lter,)h
+(or)f(binning)0 5262 y(sp)s(eci\014er)29 b(is)g(included)g(as)h(part)f
+(of)g(the)h(input)f(\014le)g(sp)s(eci\014cation.)41 b(By)30
+b(default)g(this)f(temp)s(orary)g(\014le)g(is)h(created)0
+5375 y(in)g(memory)-8 b(.)41 b(If)29 b(there)h(is)g(not)g(enough)g
+(memory)g(to)h(create)g(the)g(\014le)f(cop)m(y)-8 b(,)31
+b(then)f(CFITSIO)e(will)i(exit)h(with)f(an)0 5488 y(error.)45
+b(In)32 b(these)g(cases)h(one)g(can)f(force)h(a)f(p)s(ermanen)m(t)g
+(\014le)g(to)h(b)s(e)e(created)i(on)f(disk,)g(instead)h(of)f(a)g(temp)s
+(orary)0 5601 y(\014le)38 b(in)f(memory)-8 b(,)40 b(b)m(y)d(supplying)f
+(the)i(name)g(in)f(paren)m(theses)h(immediately)h(follo)m(wing)g(the)e
+(base)h(\014le)g(name.)0 5714 y(The)30 b(output)g(\014lename)g(can)h
+(include)f(the)h(')10 b(!')41 b(clobb)s(er)30 b(\015ag.)p
+eop end
+%%Page: 127 135
+TeXDict begin 127 134 bop 0 299 a Fh(10.4.)73 b(OUTPUT)29
+b(FILE)h(NAME)h(WHEN)g(OPENING)f(AN)h(EXISTING)f(FILE)876
+b Fj(127)0 555 y(Th)m(us,)48 b(if)d(the)g(input)f(\014lename)h(to)g
+(CFITSIO)f(is:)70 b Fe(file1.fits.gz\(file2.fit)o(s\))39
+b Fj(then)44 b(CFITSIO)g(will)0 668 y(uncompress)39 b
+(`\014le1.\014ts.gz')j(in)m(to)f(the)f(lo)s(cal)h(disk)e(\014le)h
+(`\014le2.\014ts')h(b)s(efore)f(op)s(ening)f(it.)70 b(CFITSIO)38
+b(do)s(es)i(not)0 781 y(automatically)33 b(delete)f(the)e(output)g
+(\014le,)h(so)g(it)g(will)f(still)i(exist)f(after)g(the)f(application)i
+(program)e(exits.)0 941 y(The)i(output)h(\014lename)g("mem://")i(is)e
+(also)h(allo)m(w)m(ed,)i(whic)m(h)c(will)i(write)f(the)g(output)f
+(\014le)h(in)m(to)h(memory)-8 b(,)35 b(and)0 1054 y(also)28
+b(allo)m(w)g(write)f(access)h(to)g(the)f(\014le.)39 b(This)26
+b('\014le')i(will)f(disapp)s(ear)f(when)g(it)h(is)g(closed,)h(but)e
+(this)h(ma)m(y)h(b)s(e)e(useful)0 1167 y(for)k(some)h(applications)g
+(whic)m(h)g(only)f(need)g(to)h(mo)s(dify)f(a)h(temp)s(orary)f(cop)m(y)h
+(of)f(the)h(\014le.)0 1327 y(In)k(some)i(cases,)h(sev)m(eral)f
+(di\013eren)m(t)g(temp)s(orary)e(FITS)h(\014les)g(will)g(b)s(e)f
+(created)i(in)f(sequence,)i(for)e(instance,)i(if)0 1440
+y(one)f(op)s(ens)g(a)g(remote)h(\014le)f(using)g(FTP)-8
+b(,)37 b(then)g(\014lters)g(ro)m(ws)g(in)g(a)h(binary)e(table)i
+(extension,)i(then)c(create)j(an)0 1553 y(image)f(b)m(y)f(binning)f(a)h
+(pair)g(of)g(columns.)60 b(In)36 b(this)h(case,)j(the)d(remote)h
+(\014le)f(will)g(b)s(e)f(copied)h(to)h(a)f(temp)s(orary)0
+1666 y(lo)s(cal)j(\014le,)h(then)d(a)h(second)f(temp)s(orary)h(\014le)f
+(will)h(b)s(e)f(created)i(con)m(taining)g(the)e(\014ltered)h(ro)m(ws)f
+(of)h(the)g(table,)0 1779 y(and)c(\014nally)g(a)h(third)e(temp)s(orary)
+h(\014le)h(con)m(taining)g(the)g(binned)e(image)i(will)g(b)s(e)f
+(created.)57 b(In)34 b(cases)i(lik)m(e)h(this)0 1892
+y(where)28 b(m)m(ultiple)h(\014les)f(are)h(created,)h(the)e(out\014le)h
+(sp)s(eci\014er)f(will)g(b)s(e)g(in)m(terpreted)h(the)f(name)g(of)h
+(the)f(\014nal)g(\014le)h(as)0 2005 y(describ)s(ed)g(b)s(elo)m(w,)i(in)
+f(descending)g(priorit)m(y:)136 2266 y Fc(\017)46 b Fj(as)29
+b(the)g(name)g(of)g(the)g(\014nal)f(image)i(\014le)f(if)f(an)h(image)h
+(within)e(a)h(single)g(binary)f(table)i(cell)g(is)e(op)s(ened)g(or)h
+(if)227 2379 y(an)i(image)g(is)g(created)g(b)m(y)f(binning)g(a)g(table)
+i(column.)136 2568 y Fc(\017)46 b Fj(as)33 b(the)f(name)h(of)f(the)h
+(\014le)f(con)m(taining)i(the)e(\014ltered)g(table)i(if)e(a)h(column)f
+(\014lter)g(and/or)g(a)h(ro)m(w)f(\014lter)h(are)227
+2681 y(sp)s(eci\014ed.)136 2870 y Fc(\017)46 b Fj(as)31
+b(the)f(name)h(of)f(the)h(lo)s(cal)h(cop)m(y)f(of)f(the)h(remote)g(FTP)
+f(or)h(HTTP)e(\014le.)136 3059 y Fc(\017)46 b Fj(as)31
+b(the)g(name)g(of)g(the)f(uncompressed)g(v)m(ersion)h(of)g(the)f(FITS)g
+(\014le,)h(if)g(a)g(compressed)f(FITS)g(\014le)h(on)g(lo)s(cal)227
+3172 y(disk)f(has)g(b)s(een)g(op)s(ened.)136 3361 y Fc(\017)46
+b Fj(otherwise,)31 b(the)g(output)f(\014lename)g(is)h(ignored.)0
+3622 y(The)e(output)f(\014le)h(sp)s(eci\014er)g(is)g(useful)f(when)g
+(reading)h(FTP)g(or)g(HTTP-t)m(yp)s(e)g(FITS)f(\014les)h(since)g(it)h
+(can)f(b)s(e)g(used)0 3735 y(to)34 b(create)i(a)e(lo)s(cal)h(disk)e
+(cop)m(y)i(of)f(the)g(\014le)f(that)i(can)f(b)s(e)f(reused)g(in)g(the)h
+(future.)50 b(If)33 b(the)h(output)g(\014le)f(name)h(=)0
+3848 y(`*')i(then)e(a)i(lo)s(cal)g(\014le)f(with)g(the)g(same)g(name)g
+(as)g(the)h(net)m(w)m(ork)f(\014le)g(will)h(b)s(e)e(created.)56
+b(Note)36 b(that)f(CFITSIO)0 3961 y(will)30 b(b)s(eha)m(v)m(e)g
+(di\013eren)m(tly)h(dep)s(ending)d(on)i(whether)f(the)h(remote)g
+(\014le)g(is)g(compressed)f(or)h(not)g(as)g(sho)m(wn)f(b)m(y)h(the)0
+4074 y(follo)m(wing)i(examples:)136 4309 y Fc(\017)46
+b Fe(ftp://remote.machine/tmp/)o(myfi)o(le.f)o(its)o(.gz\()o(*\))28
+b Fj(-)35 b(the)g(remote)h(compressed)e(\014le)h(is)g(copied)g(to)227
+4422 y(the)d(lo)s(cal)h(compressed)f(\014le)g(`m)m(y\014le.\014ts.gz',)
+i(whic)m(h)d(is)h(then)g(uncompressed)e(in)i(lo)s(cal)h(memory)e(b)s
+(efore)227 4535 y(b)s(eing)f(op)s(ened)g(and)g(passed)f(to)j(the)e
+(application)i(program.)136 4724 y Fc(\017)46 b Fe
+(ftp://remote.machine/tmp/)o(myfi)o(le.f)o(its)o(.gz\()o(myfi)o(le.)o
+(fits)o(\))33 b Fj(-)39 b(the)g(remote)h(compressed)f(\014le)227
+4837 y(is)d(copied)g(and)f(uncompressed)g(in)m(to)h(the)g(lo)s(cal)h
+(\014le)f(`m)m(y\014le.\014ts'.)57 b(This)35 b(example)h(requires)g
+(less)g(lo)s(cal)227 4950 y(memory)21 b(than)g(the)g(previous)f
+(example)i(since)f(the)g(\014le)g(is)g(uncompressed)e(on)i(disk)g
+(instead)g(of)g(in)f(memory)-8 b(.)136 5139 y Fc(\017)46
+b Fe(ftp://remote.machine/tmp/)o(myfi)o(le.f)o(its)o(\(myf)o(ile.)o
+(fit)o(s.gz)o(\))24 b Fj(-)30 b(this)g(will)g(usually)g(pro)s(duce)f
+(an)227 5252 y(error)h(since)h(CFITSIO)e(itself)i(cannot)g(compress)f
+(\014les.)0 5488 y(The)36 b(exact)i(b)s(eha)m(vior)e(of)h(CFITSIO)e(in)
+h(the)h(latter)g(case)h(dep)s(ends)c(on)j(the)f(t)m(yp)s(e)h(of)g(ftp)f
+(serv)m(er)g(running)f(on)0 5601 y(the)c(remote)g(mac)m(hine)g(and)f
+(ho)m(w)g(it)h(is)f(con\014gured.)40 b(In)30 b(some)h(cases,)g(if)f
+(the)h(\014le)f(`m)m(y\014le.\014ts.gz')j(exists)e(on)f(the)0
+5714 y(remote)38 b(mac)m(hine,)h(then)e(the)g(serv)m(er)g(will)h(cop)m
+(y)f(it)h(to)f(the)h(lo)s(cal)g(mac)m(hine.)61 b(In)36
+b(other)h(cases)h(the)f(ftp)g(serv)m(er)p eop end
+%%Page: 128 136
+TeXDict begin 128 135 bop 0 299 a Fj(128)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fj(will)36 b(automatically)j(create)e(and)f(transmit)g(a)g
+(compressed)g(v)m(ersion)g(of)g(the)g(\014le)g(if)g(only)g(the)g
+(uncompressed)0 668 y(v)m(ersion)27 b(exists.)41 b(This)26
+b(can)h(get)h(rather)f(confusing,)h(so)f(users)f(should)g(use)h(a)g
+(certain)h(amoun)m(t)g(of)f(caution)h(when)0 781 y(using)34
+b(the)h(output)f(\014le)h(sp)s(eci\014er)f(with)h(FTP)f(or)h(HTTP)f
+(\014le)h(t)m(yp)s(es,)h(to)f(mak)m(e)h(sure)e(they)h(get)h(the)f(b)s
+(eha)m(vior)0 894 y(that)c(they)g(exp)s(ect.)0 1250 y
+Ff(10.5)136 b(T)-11 b(emplate)45 b(File)h(Name)g(when)e(Creating)j(a)e
+(New)g(File)0 1504 y Fj(When)38 b(a)h(new)f(FITS)g(\014le)h(is)g
+(created)g(with)g(a)f(call)i(to)g(\014ts)p 2101 1504
+28 4 v 32 w(create)p 2369 1504 V 35 w(\014le,)g(the)f(name)g(of)g(a)g
+(template)h(\014le)e(ma)m(y)0 1617 y(b)s(e)h(supplied)g(in)h(paren)m
+(theses)g(immediately)h(follo)m(wing)g(the)g(name)f(of)g(the)g(new)f
+(\014le)h(to)h(b)s(e)e(created.)71 b(This)0 1730 y(template)27
+b(is)e(used)g(to)h(de\014ne)f(the)h(structure)f(of)h(one)f(or)h(more)g
+(HDUs)g(in)f(the)h(new)f(\014le.)39 b(The)25 b(template)i(\014le)e(ma)m
+(y)0 1843 y(b)s(e)32 b(another)h(FITS)f(\014le,)i(in)f(whic)m(h)f(case)
+i(the)f(newly)g(created)h(\014le)f(will)g(ha)m(v)m(e)h(exactly)h(the)e
+(same)g(k)m(eyw)m(ords)g(in)0 1956 y(eac)m(h)25 b(HDU)g(as)g(in)f(the)g
+(template)i(FITS)d(\014le,)j(but)d(all)j(the)e(data)h(units)e(will)i(b)
+s(e)f(\014lled)g(with)f(zeros.)40 b(The)24 b(template)0
+2069 y(\014le)i(ma)m(y)h(also)g(b)s(e)e(an)h(ASCI)s(I)e(text)j(\014le,)
+g(where)f(eac)m(h)h(line)f(\(in)g(general\))i(describ)s(es)d(one)h
+(FITS)f(k)m(eyw)m(ord)i(record.)0 2182 y(The)j(format)h(of)f(the)h
+(ASCI)s(I)e(template)i(\014le)g(is)f(describ)s(ed)f(in)i(the)f(follo)m
+(wing)i(T)-8 b(emplate)31 b(Files)h(c)m(hapter.)0 2538
+y Ff(10.6)136 b(Image)46 b(Tile-Compression)g(Sp)t(eci\014cation)0
+2792 y Fj(When)28 b(sp)s(ecifying)g(the)h(name)g(of)f(the)h(output)f
+(FITS)g(\014le)g(to)h(b)s(e)f(created,)i(the)f(user)f(can)g(indicate)i
+(that)f(images)0 2905 y(should)d(b)s(e)h(written)g(in)g
+(tile-compressed)h(format)g(\(see)g(section)g(5.5,)h(\\Primary)e(Arra)m
+(y)h(or)f(IMA)m(GE)h(Extension)0 3018 y(I/O)f(Routines"\))i(b)m(y)e
+(enclosing)h(the)g(compression)f(parameters)h(in)f(square)g(brac)m(k)m
+(ets)i(follo)m(wing)g(the)f(ro)s(ot)f(disk)0 3131 y(\014le)j(name.)41
+b(Here)31 b(are)g(some)g(examples)g(of)f(the)h(syn)m(tax)g(for)f(sp)s
+(ecifying)g(tile-compressed)i(output)e(images:)191 3410
+y Fe(myfile.fit[compress])185 b(-)48 b(use)f(Rice)f(algorithm)g(and)h
+(default)e(tile)i(size)191 3636 y(myfile.fit[compress)42
+b(GZIP])47 b(-)g(use)g(the)g(specified)e(compression)g(algorithm;)191
+3748 y(myfile.fit[compress)d(Rice])238 b(only)46 b(the)h(first)g
+(letter)f(of)h(the)g(algorithm)191 3861 y(myfile.fit[compress)42
+b(PLIO])238 b(name)46 b(is)i(required.)191 4087 y(myfile.fit[compress)
+42 b(Rice)47 b(100,100])141 b(-)48 b(use)e(100)h(x)h(100)f(pixel)f
+(tile)h(size)191 4200 y(myfile.fit[compress)42 b(Rice)47
+b(100,100;2])e(-)j(as)f(above,)f(and)h(use)g(noisebits)e(=)i(2)0
+4556 y Ff(10.7)136 b(HDU)45 b(Lo)t(cation)g(Sp)t(eci\014cation)0
+4811 y Fj(The)c(optional)h(HDU)h(lo)s(cation)g(sp)s(eci\014er)d
+(de\014nes)h(whic)m(h)g(HDU)h(\(Header-Data)i(Unit,)h(also)d(kno)m(wn)f
+(as)h(an)0 4924 y(`extension'\))36 b(within)d(the)i(FITS)e(\014le)h(to)
+h(initially)h(op)s(en.)51 b(It)34 b(m)m(ust)g(immediately)i(follo)m(w)f
+(the)f(base)h(\014le)f(name)0 5036 y(\(or)g(the)g(output)g(\014le)g
+(name)f(if)h(presen)m(t\).)52 b(If)33 b(it)h(is)g(not)g(sp)s(eci\014ed)
+g(then)f(the)h(\014rst)f(HDU)i(\(the)f(primary)f(arra)m(y\))0
+5149 y(is)g(op)s(ened.)46 b(The)32 b(HDU)h(lo)s(cation)h(sp)s
+(eci\014er)e(is)h(required)f(if)g(the)h(colFilter,)i(ro)m(wFilter,)g
+(or)e(binSp)s(ec)e(sp)s(eci\014ers)0 5262 y(are)f(presen)m(t,)f(b)s
+(ecause)h(the)f(primary)f(arra)m(y)i(is)f(not)h(a)f(v)-5
+b(alid)30 b(HDU)g(for)f(these)g(op)s(erations.)41 b(The)29
+b(HDU)h(ma)m(y)g(b)s(e)0 5375 y(sp)s(eci\014ed)e(either)i(b)m(y)e
+(absolute)i(p)s(osition)f(n)m(um)m(b)s(er,)f(starting)i(with)e(0)i(for)
+e(the)h(primary)f(arra)m(y)-8 b(,)31 b(or)e(b)m(y)f(reference)0
+5488 y(to)h(the)g(HDU)g(name,)g(and)f(optionally)-8 b(,)31
+b(the)e(v)m(ersion)g(n)m(um)m(b)s(er)e(and)h(the)h(HDU)g(t)m(yp)s(e)g
+(of)f(the)h(desired)f(extension.)0 5601 y(The)k(lo)s(cation)h(of)f(an)g
+(image)i(within)d(a)i(single)f(cell)i(of)e(a)g(binary)g(table)h(ma)m(y)
+f(also)h(b)s(e)f(sp)s(eci\014ed,)g(as)g(describ)s(ed)0
+5714 y(b)s(elo)m(w.)p eop end
+%%Page: 129 137
+TeXDict begin 129 136 bop 0 299 a Fh(10.7.)73 b(HDU)31
+b(LOCA)-8 b(TION)29 b(SPECIFICA)-8 b(TION)2019 b Fj(129)0
+555 y(The)26 b(absolute)h(p)s(osition)f(of)g(the)h(extension)g(is)f(sp)
+s(eci\014ed)f(either)i(b)m(y)f(enclosed)h(the)g(n)m(um)m(b)s(er)e(in)h
+(square)f(brac)m(k)m(ets)0 668 y(\(e.g.,)k(`[1]')g(=)d(the)h(\014rst)f
+(extension)h(follo)m(wing)i(the)e(primary)e(arra)m(y\))j(or)f(b)m(y)f
+(preceded)h(the)g(n)m(um)m(b)s(er)e(with)i(a)g(plus)0
+781 y(sign)37 b(\(`+1'\).)63 b(T)-8 b(o)38 b(sp)s(ecify)f(the)g(HDU)h
+(b)m(y)g(name,)h(giv)m(e)g(the)e(name)h(of)f(the)h(desired)f(HDU)h
+(\(the)f(v)-5 b(alue)38 b(of)g(the)0 894 y(EXTNAME)e(or)g(HDUNAME)h(k)m
+(eyw)m(ord\))g(and)f(optionally)h(the)f(extension)h(v)m(ersion)f(n)m
+(um)m(b)s(er)f(\(v)-5 b(alue)37 b(of)f(the)0 1007 y(EXTVER)27
+b(k)m(eyw)m(ord\))i(and)e(the)h(extension)h(t)m(yp)s(e)e(\(v)-5
+b(alue)29 b(of)f(the)g(XTENSION)f(k)m(eyw)m(ord:)40 b(IMA)m(GE,)29
+b(ASCI)s(I)d(or)0 1120 y(T)-8 b(ABLE,)36 b(or)f(BINT)-8
+b(ABLE\),)36 b(separated)f(b)m(y)g(commas)h(and)e(all)i(enclosed)g(in)f
+(square)g(brac)m(k)m(ets.)56 b(If)34 b(the)h(v)-5 b(alue)0
+1233 y(of)34 b(EXTVER)f(and)f(XTENSION)h(are)h(not)f(sp)s(eci\014ed,)h
+(then)f(the)h(\014rst)e(extension)j(with)e(the)g(correct)i(v)-5
+b(alue)34 b(of)0 1346 y(EXTNAME)39 b(is)g(op)s(ened.)67
+b(The)38 b(extension)i(name)f(and)f(t)m(yp)s(e)i(are)f(not)h(case)g
+(sensitiv)m(e,)j(and)38 b(the)h(extension)0 1458 y(t)m(yp)s(e)29
+b(ma)m(y)g(b)s(e)f(abbreviated)h(to)g(a)g(single)g(letter)h(\(e.g.,)h
+(I)d(=)g(IMA)m(GE)i(extension)f(or)f(primary)g(arra)m(y)-8
+b(,)30 b(A)f(or)f(T)g(=)0 1571 y(ASCI)s(I)d(table)i(extension,)h(and)e
+(B)h(=)f(binary)g(table)h(BINT)-8 b(ABLE)27 b(extension\).)41
+b(If)26 b(the)g(HDU)h(lo)s(cation)i(sp)s(eci\014er)0
+1684 y(is)h(equal)h(to)g(`[PRIMAR)-8 b(Y]')32 b(or)f(`[P]',)g(then)f
+(the)h(primary)e(arra)m(y)i(\(the)g(\014rst)f(HDU\))h(will)g(b)s(e)f
+(op)s(ened.)0 1844 y(An)36 b(optional)j(p)s(ound)34 b(sign)j(c)m
+(haracter)i(\("#"\))f(ma)m(y)f(b)s(e)g(app)s(ended)e(to)i(the)g
+(extension)h(name)f(or)g(n)m(um)m(b)s(er)e(to)0 1957
+y(signify)e(that)h(an)m(y)g(other)f(extensions)h(in)f(the)g(\014le)g
+(should)g(b)s(e)f(ignored)h(during)f(an)m(y)i(subsequen)m(t)e(\014le)i
+(\014ltering)0 2070 y(op)s(erations.)83 b(F)-8 b(or)45
+b(example,)k(when)43 b(doing)i(ro)m(w)f(\014ltering)h(op)s(erations)f
+(on)h(a)f(table)i(extension,)i(CFITSIO)0 2183 y(normally)27
+b(creates)i(a)e(cop)m(y)h(of)f(the)g(\014ltered)g(table)h(in)f(memory)
+-8 b(,)28 b(along)h(with)d(a)i(v)m(erbatim)f(cop)m(y)h(of)f(all)h(the)g
+(other)0 2296 y(extensions)h(in)g(the)g(input)f(FITS)g(\014le.)41
+b(If)28 b(the)h(p)s(ound)e(sign)i(is)g(app)s(ended)e(to)j(the)f(table)h
+(extension)g(name,)f(then)0 2409 y(only)34 b(that)g(extension,)i(and)d
+(none)h(of)g(the)g(other)g(extensions)g(in)f(the)h(\014le,)h(will)g(b)m
+(y)e(copied)h(to)h(memory)-8 b(,)35 b(as)f(in)0 2522
+y(the)d(follo)m(wing)g(example:)143 2773 y Fe(myfile.fit[events#][TIME)
+41 b(>)48 b(10000])0 3024 y Fj(FITS)34 b(images)i(are)f(most)h
+(commonly)f(stored)g(in)g(the)g(primary)f(arra)m(y)h(or)g(an)g(image)h
+(extension,)h(but)d(images)0 3137 y(can)d(also)h(b)s(e)e(stored)h(as)h
+(a)f(v)m(ector)h(in)f(a)g(single)h(cell)g(of)f(a)h(binary)e(table)i
+(\(i.e.)43 b(eac)m(h)32 b(ro)m(w)f(of)g(the)h(v)m(ector)g(column)0
+3250 y(con)m(tains)d(a)g(di\013eren)m(t)f(image\).)42
+b(Suc)m(h)27 b(an)h(image)i(can)e(b)s(e)g(op)s(ened)f(with)h(CFITSIO)e
+(b)m(y)i(sp)s(ecifying)g(the)g(desired)0 3363 y(column)k(name)g(and)f
+(the)h(ro)m(w)g(n)m(um)m(b)s(er)f(after)h(the)g(binary)f(table)i(HDU)g
+(sp)s(eci\014er)e(as)h(sho)m(wn)g(in)f(the)h(follo)m(wing)0
+3476 y(examples.)71 b(The)40 b(column)g(name)h(is)f(separated)h(from)f
+(the)h(HDU)g(sp)s(eci\014er)f(b)m(y)g(a)h(semicolon)g(and)f(the)h(ro)m
+(w)0 3589 y(n)m(um)m(b)s(er)29 b(is)h(enclosed)h(in)e(paren)m(theses.)
+41 b(In)30 b(this)g(case)h(CFITSIO)d(copies)j(the)f(image)i(from)d(the)
+i(table)g(cell)g(in)m(to)0 3702 y(a)h(temp)s(orary)e(primary)h(arra)m
+(y)g(b)s(efore)g(it)h(is)f(op)s(ened.)43 b(The)30 b(application)j
+(program)e(then)g(just)g(sees)g(the)h(image)0 3815 y(in)i(the)h
+(primary)e(arra)m(y)-8 b(,)37 b(without)d(an)m(y)h(extensions.)53
+b(The)34 b(particular)g(ro)m(w)h(to)g(b)s(e)e(op)s(ened)h(ma)m(y)h(b)s
+(e)f(sp)s(eci\014ed)0 3927 y(either)28 b(b)m(y)f(giving)h(an)f
+(absolute)h(in)m(teger)h(ro)m(w)f(n)m(um)m(b)s(er)e(\(starting)i(with)f
+(1)h(for)f(the)g(\014rst)g(ro)m(w\),)i(or)e(b)m(y)g(sp)s(ecifying)0
+4040 y(a)33 b(b)s(o)s(olean)f(expression)g(that)h(ev)-5
+b(aluates)34 b(to)f(TR)m(UE)g(for)f(the)g(desired)g(ro)m(w.)47
+b(The)32 b(\014rst)f(ro)m(w)i(that)g(satis\014es)g(the)0
+4153 y(expression)28 b(will)g(b)s(e)g(used.)39 b(The)28
+b(ro)m(w)g(selection)i(expression)e(has)g(the)g(same)g(syn)m(tax)h(as)f
+(describ)s(ed)f(in)h(the)g(Ro)m(w)0 4266 y(Filter)k(Sp)s(eci\014er)d
+(section,)j(b)s(elo)m(w.)0 4426 y(Examples:)143 4677
+y Fe(myfile.fits[3])44 b(-)k(open)e(the)h(3rd)g(HDU)g(following)e(the)i
+(primary)f(array)143 4790 y(myfile.fits+3)92 b(-)48 b(same)e(as)h
+(above,)f(but)h(using)g(the)g(FTOOLS-style)d(notation)143
+4903 y(myfile.fits[EVENTS])f(-)k(open)g(the)g(extension)e(that)i(has)g
+(EXTNAME)e(=)j('EVENTS')143 5016 y(myfile.fits[EVENTS,)43
+b(2])95 b(-)47 b(same)g(as)g(above,)f(but)h(also)g(requires)e(EXTVER)h
+(=)i(2)143 5129 y(myfile.fits[events,2,b])42 b(-)47 b(same,)f(but)h
+(also)g(requires)f(XTENSION)f(=)j('BINTABLE')143 5242
+y(myfile.fits[3;)c(images\(17\)])h(-)i(opens)g(the)g(image)f(in)h(row)g
+(17)g(of)g(the)g('images')1527 5355 y(column)f(in)i(the)e(3rd)h
+(extension)f(of)h(the)g(file.)143 5468 y(myfile.fits[3;)d
+(images\(exposure)g(>)j(100\)])g(-)g(as)g(above,)f(but)h(opens)g(the)f
+(image)907 5581 y(in)h(the)g(first)f(row)h(that)g(has)g(an)g
+('exposure')e(column)h(value)907 5694 y(greater)g(than)g(100.)p
+eop end
+%%Page: 130 138
+TeXDict begin 130 137 bop 0 299 a Fj(130)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Ff(10.8)136 b(Image)46 b(Section)0 811 y Fj(A)41
+b(virtual)g(\014le)f(con)m(taining)i(a)f(rectangular)h(subsection)e(of)
+h(an)g(image)g(can)g(b)s(e)f(extracted)i(and)e(op)s(ened)g(b)m(y)0
+924 y(sp)s(ecifying)32 b(the)h(range)g(of)g(pixels)g(\(start:end\))g
+(along)h(eac)m(h)g(axis)f(to)g(b)s(e)f(extracted)i(from)e(the)h
+(original)g(image.)0 1037 y(One)d(can)h(also)h(sp)s(ecify)e(an)h
+(optional)h(pixel)f(incremen)m(t)g(\(start:end:step\))h(for)f(eac)m(h)h
+(axis)f(of)g(the)g(input)e(image.)0 1149 y(A)f(pixel)f(step)h(=)f(1)h
+(will)g(b)s(e)f(assumed)f(if)i(it)g(is)f(not)h(sp)s(eci\014ed.)39
+b(If)27 b(the)h(start)g(pixel)g(is)f(larger)i(then)e(the)h(end)e
+(pixel,)0 1262 y(then)32 b(the)g(image)h(will)f(b)s(e)f(\015ipp)s(ed)f
+(\(pro)s(ducing)h(a)h(mirror)g(image\))h(along)g(that)f(dimension.)45
+b(An)32 b(asterisk,)h('*',)0 1375 y(ma)m(y)39 b(b)s(e)e(used)h(to)h(sp)
+s(ecify)f(the)g(en)m(tire)h(range)g(of)f(an)h(axis,)i(and)c('-*')j
+(will)e(\015ip)g(the)g(en)m(tire)h(axis.)65 b(The)38
+b(input)0 1488 y(image)31 b(can)f(b)s(e)f(in)g(the)h(primary)f(arra)m
+(y)-8 b(,)31 b(in)e(an)g(image)i(extension,)g(or)f(con)m(tained)g(in)g
+(a)g(v)m(ector)h(cell)g(of)f(a)g(binary)0 1601 y(table.)40
+b(In)25 b(the)h(later)h(2)f(cases)h(the)f(extension)h(name)f(or)f(n)m
+(um)m(b)s(er)g(m)m(ust)h(b)s(e)f(sp)s(eci\014ed)g(b)s(efore)h(the)g
+(image)h(section)0 1714 y(sp)s(eci\014er.)0 1874 y(Examples:)95
+2157 y Fe(myfile.fits[1:512:2,)43 b(2:512:2])i(-)95 b(open)47
+b(a)h(256x256)d(pixel)i(image)668 2270 y(consisting)e(of)i(the)g(odd)g
+(numbered)f(columns)g(\(1st)g(axis\))h(and)668 2383 y(the)g(even)g
+(numbered)e(rows)i(\(2nd)g(axis\))f(of)h(the)g(image)f(in)i(the)668
+2496 y(primary)e(array)g(of)i(the)e(file.)95 2721 y(myfile.fits[*,)e
+(512:256])i(-)h(open)g(an)g(image)g(consisting)e(of)i(all)g(the)g
+(columns)668 2834 y(in)g(the)g(input)g(image,)f(but)h(only)f(rows)h
+(256)g(through)f(512.)668 2947 y(The)h(image)f(will)h(be)g(flipped)f
+(along)g(the)h(2nd)g(axis)g(since)668 3060 y(the)g(starting)f(pixel)g
+(is)h(greater)f(than)h(the)g(ending)f(pixel.)95 3286
+y(myfile.fits[*:2,)e(512:256:2])h(-)i(same)g(as)g(above)f(but)h
+(keeping)f(only)668 3399 y(every)h(other)f(row)h(and)g(column)f(in)h
+(the)g(input)f(image.)95 3625 y(myfile.fits[-*,)e(*])j(-)h(copy)e(the)h
+(entire)f(image,)g(flipping)g(it)h(along)668 3738 y(the)g(first)f
+(axis.)95 3963 y(myfile.fits[3][1:256,1:256)o(])c(-)47
+b(opens)g(a)g(subsection)e(of)i(the)g(image)g(that)668
+4076 y(is)g(in)h(the)e(3rd)h(extension)f(of)h(the)g(file.)95
+4302 y(myfile.fits[4;)d(images\(12\)][1:10,1:10])e(-)48
+b(open)e(an)h(image)g(consisting)286 4415 y(of)h(the)e(first)h(10)g
+(pixels)f(in)h(both)g(dimensions.)e(The)i(original)286
+4528 y(image)g(resides)f(in)h(the)g(12th)f(row)h(of)g(the)g('images')f
+(vector)286 4641 y(column)g(in)i(the)f(table)f(in)h(the)g(4th)g
+(extension)e(of)i(the)g(file.)0 4924 y Fj(When)23 b(CFITSIO)f(op)s(ens)
+h(an)g(image)h(section)h(it)f(\014rst)f(creates)h(a)g(temp)s(orary)f
+(\014le)h(con)m(taining)h(the)e(image)i(section)0 5036
+y(plus)30 b(a)h(cop)m(y)h(of)f(an)m(y)g(other)g(HDUs)g(in)g(the)g
+(\014le.)42 b(\(If)31 b(a)g(`#')g(c)m(haracter)h(is)f(app)s(ended)e(to)
+j(the)f(name)f(or)h(n)m(um)m(b)s(er)0 5149 y(of)i(the)g(image)i(HDU,)e
+(as)h(in)e("m)m(y\014le.\014ts[1#][1:200,1:200)q(]",)40
+b(then)33 b(the)g(other)g(HDUs)h(in)e(the)h(input)g(\014le)g(will)0
+5262 y(not)j(b)s(e)f(copied)i(in)m(to)f(memory\).)58
+b(This)35 b(temp)s(orary)g(\014le)h(is)g(then)f(op)s(ened)h(b)m(y)f
+(the)h(application)h(program,)h(so)0 5375 y(it)32 b(is)g(not)f(p)s
+(ossible)h(to)g(write)g(to)g(or)f(mo)s(dify)g(the)h(input)e(\014le)i
+(when)f(sp)s(ecifying)g(an)g(image)i(section.)45 b(Note)33
+b(that)0 5488 y(CFITSIO)27 b(automatically)32 b(up)s(dates)c(the)h(w)m
+(orld)f(co)s(ordinate)i(system)f(k)m(eyw)m(ords)g(in)f(the)h(header)g
+(of)g(the)g(image)0 5601 y(section,)h(if)f(they)g(exist,)h(so)f(that)g
+(the)g(co)s(ordinate)h(asso)s(ciated)g(with)e(eac)m(h)i(pixel)f(in)g
+(the)g(image)h(section)g(will)f(b)s(e)0 5714 y(computed)h(correctly)-8
+b(.)p eop end
+%%Page: 131 139
+TeXDict begin 131 138 bop 0 299 a Fh(10.9.)73 b(IMA)m(GE)31
+b(TRANSF)m(ORM)f(FIL)-8 b(TERS)2147 b Fj(131)0 555 y
+Ff(10.9)136 b(Image)46 b(T)-11 b(ransform)44 b(Filters)0
+807 y Fj(CFITSIO)33 b(can)h(apply)g(a)h(user-sp)s(eci\014ed)e
+(mathematical)j(function)e(to)h(the)g(v)-5 b(alue)34
+b(of)h(ev)m(ery)g(pixel)f(in)g(a)h(FITS)0 920 y(image,)29
+b(th)m(us)e(creating)h(a)g(new)e(virtual)h(image)i(in)d(computer)h
+(memory)g(that)h(is)f(then)f(op)s(ened)h(and)f(read)h(b)m(y)g(the)0
+1033 y(application)32 b(program.)40 b(The)30 b(original)i(FITS)d(image)
+j(is)e(not)h(mo)s(di\014ed)e(b)m(y)h(this)h(pro)s(cess.)0
+1193 y(The)20 b(image)j(transformation)e(sp)s(eci\014er)f(is)h(app)s
+(ended)e(to)j(the)f(input)f(FITS)h(\014le)g(name)g(and)f(is)h(enclosed)
+h(in)e(square)0 1306 y(brac)m(k)m(ets.)42 b(It)29 b(b)s(egins)f(with)h
+(the)g(letters)i('PIX')e(to)h(distinguish)e(it)i(from)e(other)i(t)m(yp)
+s(es)f(of)g(FITS)f(\014le)h(\014lters)g(that)0 1419 y(are)36
+b(recognized)i(b)m(y)e(CFITSIO.)e(The)i(image)h(transforming)f
+(function)f(ma)m(y)i(use)f(an)m(y)g(of)g(the)h(mathematical)0
+1532 y(op)s(erators)44 b(listed)h(in)f(the)h(follo)m(wing)h('Ro)m(w)f
+(Filtering)g(Sp)s(eci\014cation')g(section)h(of)e(this)h(do)s(cumen)m
+(t.)82 b(Some)0 1645 y(examples)31 b(of)f(image)i(transform)e
+(\014lters)g(are:)48 1913 y Fe([pix)46 b(X)i(*)f(2.0])715
+b(-)48 b(multiply)d(each)i(pixel)f(by)h(2.0)48 2026 y([pix)f
+(sqrt\(X\)])714 b(-)48 b(take)e(the)h(square)f(root)h(of)g(each)g
+(pixel)48 2139 y([pix)f(X)i(+)f(#ZEROPT)571 b(-)48 b(add)e(the)h(value)
+g(of)g(the)g(ZEROPT)f(keyword)48 2252 y([pix)g(X>0)h(?)h(log10\(X\))d
+(:)j(-99.])e(-)i(if)f(the)g(pixel)f(value)g(is)i(greater)1480
+2365 y(than)e(0,)h(compute)f(the)h(base)g(10)g(log,)1480
+2478 y(else)f(set)h(the)g(pixel)f(=)i(-99.)0 2746 y Fj(Use)24
+b(the)g(letter)h('X')f(in)f(the)h(expression)g(to)g(represen)m(t)g(the)
+g(curren)m(t)f(pixel)h(v)-5 b(alue)24 b(in)f(the)h(image.)40
+b(The)23 b(expression)0 2859 y(is)38 b(ev)-5 b(aluated)39
+b(indep)s(enden)m(tly)e(for)g(eac)m(h)i(pixel)f(in)g(the)g(image)h(and)
+e(ma)m(y)h(b)s(e)g(a)g(function)f(of)h(1\))h(the)f(original)0
+2971 y(pixel)32 b(v)-5 b(alue,)32 b(2\))g(the)f(v)-5
+b(alue)32 b(of)f(other)h(pixels)f(in)g(the)g(image)i(at)f(a)f(giv)m(en)
+i(relativ)m(e)g(o\013set)f(from)f(the)g(p)s(osition)h(of)0
+3084 y(the)d(pixel)f(that)h(is)g(b)s(eing)f(ev)-5 b(aluated,)30
+b(and)e(3\))h(the)g(v)-5 b(alue)29 b(of)f(an)m(y)h(header)f(k)m(eyw)m
+(ords.)41 b(Header)29 b(k)m(eyw)m(ord)g(v)-5 b(alues)0
+3197 y(are)31 b(represen)m(ted)f(b)m(y)g(the)h(name)f(of)h(the)f(k)m
+(eyw)m(ord)h(preceded)f(b)m(y)h(the)f('#')h(sign.)0 3357
+y(T)-8 b(o)35 b(access)h(the)f(the)g(v)-5 b(alue)35 b(of)g(adjacen)m(t)
+h(pixels)f(in)f(the)h(image,)i(sp)s(ecify)e(the)g(\(1-D\))h(o\013set)g
+(from)e(the)h(curren)m(t)0 3470 y(pixel)c(in)f(curly)g(brac)m(k)m(ets.)
+42 b(F)-8 b(or)31 b(example)48 3738 y Fe([pix)94 b(\(x{-1})46
+b(+)i(x)f(+)h(x{+1}\))e(/)h(3])0 4006 y Fj(will)25 b(replace)g(eac)m(h)
+h(pixel)f(v)-5 b(alue)25 b(with)f(the)h(running)e(mean)i(of)f(the)h(v)
+-5 b(alues)25 b(of)g(that)g(pixel)g(and)f(it's)h(2)g(neigh)m(b)s(oring)
+0 4119 y(pixels.)40 b(Note)30 b(that)g(in)e(this)g(notation)i(the)f
+(image)h(is)f(treated)g(as)g(a)g(1-D)h(arra)m(y)-8 b(,)30
+b(where)e(eac)m(h)i(ro)m(w)f(of)g(the)g(image)0 4232
+y(\(or)c(higher)f(dimensional)g(cub)s(e\))h(is)f(app)s(ended)f(one)h
+(after)h(another)g(in)f(one)h(long)g(arra)m(y)g(of)f(pixels.)39
+b(It)25 b(is)f(p)s(ossible)0 4345 y(to)35 b(refer)f(to)h(pixels)f(in)g
+(the)g(ro)m(ws)g(ab)s(o)m(v)m(e)h(or)g(b)s(elo)m(w)f(the)g(curren)m(t)g
+(pixel)h(b)m(y)f(using)f(the)h(v)-5 b(alue)35 b(of)f(the)h(NAXIS1)0
+4458 y(header)30 b(k)m(eyw)m(ord.)41 b(F)-8 b(or)32 b(example)48
+4726 y Fe([pix)46 b(\(x{-#NAXIS1})f(+)i(x)h(+)f(x{#NAXIS1}\))e(/)i(3])0
+4994 y Fj(will)34 b(compute)f(the)h(mean)f(of)g(eac)m(h)i(image)f
+(pixel)g(and)e(the)i(pixels)f(immediately)i(ab)s(o)m(v)m(e)f(and)f(b)s
+(elo)m(w)g(it)h(in)f(the)0 5107 y(adjacen)m(t)27 b(ro)m(ws)f(of)g(the)f
+(image.)41 b(The)25 b(follo)m(wing)i(more)f(complex)h(example)f
+(creates)h(a)f(smo)s(othed)g(virtual)g(image)0 5220 y(where)k(eac)m(h)h
+(pixel)g(is)g(a)f(3)h(x)f(3)h(b)s(o)m(xcar)g(a)m(v)m(erage)i(of)d(the)h
+(input)e(image)j(pixels:)95 5488 y Fe([pix)47 b(\(X)g(+)h(X{-1})e(+)i
+(X{+1})286 5601 y(+)g(X{-#NAXIS1})d(+)i(X{-#NAXIS1)e(-)i(1})h(+)f
+(X{-#NAXIS1)e(+)j(1})286 5714 y(+)g(X{#NAXIS1})d(+)i(X{#NAXIS1)f(-)h
+(1})g(+)h(X{#NAXIS1)d(+)i(1}\))g(/)h(9.])p eop end
+%%Page: 132 140
+TeXDict begin 132 139 bop 0 299 a Fj(132)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fj(If)31 b(the)h(pixel)g(o\013set)h(extends)f(b)s(ey)m(ond)f(the)
+h(\014rst)f(or)h(last)h(pixel)f(in)f(the)h(image,)i(the)e(function)g
+(will)g(ev)-5 b(aluate)33 b(to)0 668 y(unde\014ned,)28
+b(or)j(NULL.)0 828 y(F)-8 b(or)39 b(complex)g(or)g(commonly)g(used)e
+(image)j(\014ltering)f(op)s(erations,)i(one)d(can)h(write)g(the)f
+(expression)h(in)m(to)g(an)0 941 y(external)i(text)h(\014le)f(and)f
+(then)g(imp)s(ort)g(it)h(in)m(to)h(the)e(\014lter)h(using)f(the)h(syn)m
+(tax)g('[pix)g(@\014lename.txt]'.)72 b(The)0 1054 y(mathematical)29
+b(expression)e(can)g(extend)g(o)m(v)m(er)i(m)m(ultiple)e(lines)g(of)h
+(text)g(in)e(the)h(\014le.)40 b(An)m(y)27 b(lines)g(in)g(the)g
+(external)0 1167 y(text)h(\014le)e(that)i(b)s(egin)e(with)g(2)h(slash)f
+(c)m(haracters)i(\('//'\))h(will)e(b)s(e)f(ignored)h(and)f(ma)m(y)h(b)s
+(e)f(used)g(to)h(add)f(commen)m(ts)0 1280 y(in)m(to)31
+b(the)g(\014le.)0 1440 y(By)c(default,)g(the)f(datat)m(yp)s(e)i(of)e
+(the)g(resulting)h(image)g(will)g(b)s(e)e(the)i(same)f(as)h(the)f
+(original)i(image,)g(but)e(one)g(ma)m(y)0 1553 y(force)31
+b(a)g(di\013eren)m(t)g(datat)m(yp)s(e)g(b)m(y)f(app)s(ended)f(a)h(co)s
+(de)h(letter)h(to)f(the)f('pix')h(k)m(eyw)m(ord:)286
+1786 y Fe(pixb)95 b(-)g(8-bit)46 b(byte)190 b(image)46
+b(with)h(BITPIX)f(=)143 b(8)286 1898 y(pixi)95 b(-)47
+b(16-bit)f(integer)g(image)g(with)h(BITPIX)f(=)95 b(16)286
+2011 y(pixj)g(-)47 b(32-bit)f(integer)g(image)g(with)h(BITPIX)f(=)95
+b(32)286 2124 y(pixr)g(-)47 b(32-bit)f(float)142 b(image)46
+b(with)h(BITPIX)f(=)i(-32)286 2237 y(pixd)95 b(-)47 b(64-bit)f(float)
+142 b(image)46 b(with)h(BITPIX)f(=)i(-64)0 2470 y Fj(Also)23
+b(b)m(y)f(default,)j(an)m(y)d(other)h(HDUs)g(in)f(the)g(input)g(\014le)
+g(will)h(b)s(e)e(copied)i(without)g(c)m(hange)g(to)g(the)g(output)f
+(virtual)0 2583 y(FITS)k(\014le,)h(but)f(one)g(ma)m(y)h(discard)f(the)h
+(other)f(HDUs)h(b)m(y)f(adding)g(the)h(n)m(um)m(b)s(er)e('1')i(to)g
+(the)g('pix')f(k)m(eyw)m(ord)h(\(and)0 2696 y(follo)m(wing)32
+b(an)m(y)f(optional)g(datat)m(yp)s(e)g(co)s(de)g(letter\).)42
+b(F)-8 b(or)32 b(example:)239 2928 y Fe(myfile.fits[3][pixr1)90
+b(sqrt\(X\)])0 3161 y Fj(will)23 b(create)i(a)e(virtual)g(FITS)f
+(\014le)h(con)m(taining)h(only)f(a)g(primary)f(arra)m(y)i(image)g(with)
+e(32-bit)i(\015oating)g(p)s(oin)m(t)f(pixels)0 3274 y(that)29
+b(ha)m(v)m(e)h(a)f(v)-5 b(alue)30 b(equal)f(to)g(the)g(square)g(ro)s
+(ot)g(of)g(the)g(pixels)f(in)h(the)g(image)h(that)f(is)g(in)f(the)h
+(3rd)f(extension)i(of)0 3387 y(the)h('m)m(y\014le.\014ts')g(\014le.)0
+3716 y Ff(10.10)136 b(Column)45 b(and)g(Keyw)l(ord)g(Filtering)h(Sp)t
+(eci\014cation)0 3966 y Fj(The)27 b(optional)i(column/k)m(eyw)m(ord)g
+(\014ltering)f(sp)s(eci\014er)f(is)h(used)f(to)i(mo)s(dify)e(the)h
+(column)g(structure)f(and/or)h(the)0 4079 y(header)38
+b(k)m(eyw)m(ords)h(in)f(the)h(HDU)g(that)h(w)m(as)f(selected)h(with)e
+(the)h(previous)f(HDU)h(lo)s(cation)h(sp)s(eci\014er.)65
+b(This)0 4192 y(\014ltering)42 b(sp)s(eci\014er)f(m)m(ust)h(b)s(e)f
+(enclosed)i(in)e(square)h(brac)m(k)m(ets)h(and)e(can)h(b)s(e)f
+(distinguished)g(from)h(a)g(general)0 4305 y(ro)m(w)d(\014lter)g(sp)s
+(eci\014er)f(\(describ)s(ed)g(b)s(elo)m(w\))h(b)m(y)g(the)g(fact)h
+(that)f(it)g(b)s(egins)f(with)h(the)g(string)g('col)h(')f(and)f(is)h
+(not)0 4418 y(immediately)30 b(follo)m(w)m(ed)g(b)m(y)e(an)g(equals)h
+(sign.)40 b(The)28 b(original)h(\014le)f(is)h(not)f(c)m(hanged)h(b)m(y)
+f(this)h(\014ltering)f(op)s(eration,)0 4531 y(and)c(instead)h(the)g(mo)
+s(di\014cations)g(are)g(made)g(on)f(a)h(cop)m(y)h(of)e(the)h(input)f
+(FITS)g(\014le)h(\(usually)g(in)f(memory\),)i(whic)m(h)0
+4644 y(also)31 b(con)m(tains)g(a)g(cop)m(y)g(of)f(all)h(the)f(other)g
+(HDUs)h(in)f(the)g(\014le.)41 b(\(If)30 b(a)g(`#')h(c)m(haracter)g(is)f
+(app)s(ended)f(to)i(the)f(name)0 4757 y(or)d(n)m(um)m(b)s(er)e(of)i
+(the)g(table)g(HDU)h(then)e(only)h(the)g(primary)f(arra)m(y)-8
+b(,)28 b(and)e(none)h(of)g(the)f(other)h(HDUs)h(in)e(the)h(input)0
+4869 y(\014le)i(will)f(b)s(e)g(copied)h(in)m(to)g(memory\).)41
+b(This)27 b(temp)s(orary)h(\014le)h(is)f(passed)g(to)h(the)g
+(application)h(program)e(and)g(will)0 4982 y(p)s(ersist)e(only)i(un)m
+(til)f(the)g(\014le)g(is)h(closed)f(or)g(un)m(til)h(the)f(program)g
+(exits,)i(unless)d(the)h(out\014le)h(sp)s(eci\014er)e(\(see)i(ab)s(o)m
+(v)m(e\))0 5095 y(is)i(also)i(supplied.)0 5255 y(The)f(column/k)m(eyw)m
+(ord)h(\014lter)f(can)g(b)s(e)g(used)f(to)i(p)s(erform)e(the)i(follo)m
+(wing)g(op)s(erations.)44 b(More)32 b(than)f(one)g(op)s(er-)0
+5368 y(ation)g(ma)m(y)g(b)s(e)f(sp)s(eci\014ed)g(b)m(y)g(separating)h
+(them)f(with)h(commas)f(or)h(semi-colons.)136 5601 y
+Fc(\017)46 b Fj(Cop)m(y)36 b(only)g(a)g(sp)s(eci\014ed)g(list)g(of)g
+(columns)g(columns)f(to)i(the)f(\014ltered)g(input)f(\014le.)57
+b(The)36 b(list)g(of)g(column)227 5714 y(name)c(should)f(b)s(e)h
+(separated)g(b)m(y)g(semi-colons.)48 b(Wild)32 b(card)g(c)m(haracters)i
+(ma)m(y)e(b)s(e)g(used)f(in)h(the)g(column)p eop end
+%%Page: 133 141
+TeXDict begin 133 140 bop 0 299 a Fh(10.10.)73 b(COLUMN)30
+b(AND)h(KEYW)m(ORD)g(FIL)-8 b(TERING)31 b(SPECIFICA)-8
+b(TION)984 b Fj(133)227 555 y(names)37 b(to)h(matc)m(h)g(m)m(ultiple)g
+(columns.)61 b(If)37 b(the)g(expression)g(con)m(tains)i(b)s(oth)d(a)i
+(list)f(of)h(columns)f(to)h(b)s(e)227 668 y(included)h(and)f(columns)h
+(to)g(b)s(e)g(deleted,)j(then)c(all)i(the)f(columns)g(in)g(the)g
+(original)h(table)g(except)g(the)227 781 y(explicitly)32
+b(deleted)f(columns)f(will)g(app)s(ear)g(in)g(the)g(\014ltered)g(table)
+h(\(i.e.,)h(there)e(is)h(no)f(need)f(to)i(explicitly)227
+894 y(list)g(the)g(columns)f(to)h(b)s(e)f(included)f(if)i(an)m(y)f
+(columns)g(are)h(b)s(eing)f(deleted\).)136 1102 y Fc(\017)46
+b Fj(Delete)32 b(a)d(column)g(or)g(k)m(eyw)m(ord)h(b)m(y)f(listing)h
+(the)f(name)g(preceded)g(b)m(y)g(a)g(min)m(us)g(sign)g(or)g(an)g
+(exclamation)227 1215 y(mark)c(\(!\),)h(e.g.,)i('-TIME')d(will)g
+(delete)h(the)e(TIME)h(column)f(if)g(it)i(exists,)g(otherwise)f(the)g
+(TIME)f(k)m(eyw)m(ord.)227 1328 y(An)35 b(error)f(is)h(returned)e(if)i
+(neither)f(a)i(column)e(nor)g(k)m(eyw)m(ord)h(with)g(this)f(name)h
+(exists.)54 b(Note)36 b(that)g(the)227 1441 y(exclamation)27
+b(p)s(oin)m(t,)g(')10 b(!',)27 b(is)e(a)g(sp)s(ecial)h(UNIX)f(c)m
+(haracter,)j(so)d(if)g(it)h(is)f(used)f(on)h(the)g(command)g(line)g
+(rather)227 1554 y(than)33 b(en)m(tered)h(at)g(a)g(task)g(prompt,)f(it)
+h(m)m(ust)f(b)s(e)g(preceded)g(b)m(y)g(a)h(bac)m(kslash)g(to)g(force)g
+(the)f(UNIX)h(shell)227 1666 y(to)d(ignore)g(it.)136
+1874 y Fc(\017)46 b Fj(Rename)29 b(an)g(existing)g(column)f(or)h(k)m
+(eyw)m(ord)g(with)f(the)h(syn)m(tax)g('NewName)h(==)e(OldName'.)40
+b(An)28 b(error)227 1987 y(is)j(returned)e(if)h(neither)h(a)f(column)g
+(nor)g(k)m(eyw)m(ord)h(with)f(this)h(name)f(exists.)136
+2195 y Fc(\017)46 b Fj(App)s(end)37 b(a)j(new)f(column)f(or)i(k)m(eyw)m
+(ord)f(to)h(the)f(table.)68 b(T)-8 b(o)40 b(create)g(a)g(column,)h(giv)
+m(e)g(the)e(new)g(name,)227 2308 y(optionally)c(follo)m(w)m(ed)f(b)m(y)
+f(the)g(data)h(t)m(yp)s(e)f(in)f(paren)m(theses,)i(follo)m(w)m(ed)h(b)m
+(y)e(a)g(single)h(equals)f(sign)g(and)f(an)227 2421 y(expression)j(to)h
+(b)s(e)e(used)g(to)i(compute)f(the)g(v)-5 b(alue)35 b(\(e.g.,)j('new)m
+(col\(1J\))f(=)e(0')g(will)h(create)g(a)f(new)g(32-bit)227
+2534 y(in)m(teger)i(column)d(called)j('new)m(col')f(\014lled)f(with)g
+(zeros\).)55 b(The)35 b(data)g(t)m(yp)s(e)h(is)f(sp)s(eci\014ed)f
+(using)g(the)i(same)227 2647 y(syn)m(tax)j(that)g(is)f(allo)m(w)m(ed)i
+(for)e(the)g(v)-5 b(alue)39 b(of)f(the)g(FITS)f(TF)m(ORMn)h(k)m(eyw)m
+(ord)h(\(e.g.,)j('I',)d('J',)f('E',)h('D',)227 2760 y(etc.)66
+b(for)38 b(binary)f(tables,)42 b(and)37 b('I8',)k(F12.3',)i('E20.12',)g
+(etc.)65 b(for)38 b(ASCI)s(I)f(tables\).)66 b(If)37 b(the)i(data)g(t)m
+(yp)s(e)227 2873 y(is)c(not)g(sp)s(eci\014ed)f(then)g(an)g(appropriate)
+h(data)g(t)m(yp)s(e)g(will)g(b)s(e)f(c)m(hosen)h(dep)s(ending)e(on)h
+(the)h(form)f(of)h(the)227 2986 y(expression)44 b(\(ma)m(y)g(b)s(e)f(a)
+h(c)m(haracter)i(string,)h(logical,)j(bit,)d(long)d(in)m(teger,)49
+b(or)43 b(double)h(column\).)80 b(An)227 3099 y(appropriate)39
+b(v)m(ector)i(coun)m(t)e(\(in)g(the)g(case)h(of)f(binary)f(tables\))i
+(will)f(also)h(b)s(e)e(added)g(if)h(not)g(explicitly)227
+3212 y(sp)s(eci\014ed.)227 3372 y(When)26 b(creating)h(a)f(new)f(k)m
+(eyw)m(ord,)j(the)e(k)m(eyw)m(ord)g(name)g(m)m(ust)g(b)s(e)f(preceded)g
+(b)m(y)h(a)g(p)s(ound)e(sign)h('#',)j(and)227 3485 y(the)h(expression)f
+(m)m(ust)g(ev)-5 b(aluate)30 b(to)f(a)g(scalar)g(\(i.e.,)h(cannot)f(ha)
+m(v)m(e)h(a)f(column)f(name)g(in)g(the)h(expression\).)227
+3598 y(The)j(commen)m(t)i(string)f(for)f(the)h(k)m(eyw)m(ord)h(ma)m(y)f
+(b)s(e)f(sp)s(eci\014ed)g(in)g(paren)m(theses)h(immediately)h(follo)m
+(wing)227 3711 y(the)27 b(k)m(eyw)m(ord)g(name)f(\(instead)h(of)g
+(supplying)e(a)i(data)g(t)m(yp)s(e)g(as)f(in)g(the)h(case)g(of)g
+(creating)h(a)f(new)f(column\).)227 3824 y(If)e(the)h(k)m(eyw)m(ord)g
+(name)f(ends)g(with)g(a)h(p)s(ound)d(sign)i('#',)i(then)e(c\014tsio)i
+(will)e(substitute)h(the)f(n)m(um)m(b)s(er)f(of)i(the)227
+3937 y(most)31 b(recen)m(tly)h(referenced)e(column)h(for)f(the)h(#)f(c)
+m(haracter)i(.)41 b(This)29 b(is)i(esp)s(ecially)h(useful)d(when)h
+(writing)227 4049 y(a)c(column-related)g(k)m(eyw)m(ord)g(lik)m(e)g
+(TUNITn)e(for)h(a)h(newly)f(created)h(column,)g(as)g(sho)m(wn)e(in)h
+(the)g(follo)m(wing)227 4162 y(examples.)136 4370 y Fc(\017)46
+b Fj(Recompute)f(\(o)m(v)m(erwrite\))i(the)d(v)-5 b(alues)44
+b(in)g(an)g(existing)i(column)e(or)g(k)m(eyw)m(ord)g(b)m(y)g(giving)i
+(the)e(name)227 4483 y(follo)m(w)m(ed)32 b(b)m(y)f(an)f(equals)h(sign)f
+(and)g(an)g(arithmetic)i(expression.)0 4763 y(The)23
+b(expression)g(that)i(is)e(used)g(when)g(app)s(ending)f(or)h
+(recomputing)h(columns)f(or)h(k)m(eyw)m(ords)g(can)g(b)s(e)f
+(arbitrarily)0 4876 y(complex)36 b(and)g(ma)m(y)g(b)s(e)f(a)h(function)
+g(of)g(other)g(header)g(k)m(eyw)m(ord)g(v)-5 b(alues)36
+b(and)f(other)h(columns)g(\(in)g(the)g(same)0 4989 y(ro)m(w\).)63
+b(The)37 b(full)g(syn)m(tax)i(and)e(a)m(v)-5 b(ailable)40
+b(functions)d(for)g(the)h(expression)f(are)h(describ)s(ed)f(b)s(elo)m
+(w)h(in)f(the)h(ro)m(w)0 5102 y(\014lter)30 b(sp)s(eci\014cation)i
+(section.)0 5262 y(If)27 b(the)h(expression)g(con)m(tains)g(b)s(oth)f
+(a)h(list)h(of)f(columns)f(to)h(b)s(e)g(included)e(and)i(columns)f(to)h
+(b)s(e)f(deleted,)j(then)d(all)0 5375 y(the)34 b(columns)g(in)g(the)g
+(original)h(table)g(except)g(the)f(explicitly)i(deleted)f(columns)e
+(will)i(app)s(ear)e(in)h(the)g(\014ltered)0 5488 y(table.)40
+b(If)26 b(no)g(columns)f(to)i(b)s(e)f(deleted)g(are)h(sp)s(eci\014ed,)f
+(then)g(only)g(the)h(columns)e(that)i(are)f(explicitly)i(listed)f(will)
+0 5601 y(b)s(e)k(included)g(in)g(the)h(\014ltered)f(output)h(table.)45
+b(T)-8 b(o)32 b(include)f(all)i(the)e(columns,)h(add)f(the)h('*')g
+(wildcard)g(sp)s(eci\014er)0 5714 y(at)f(the)g(end)e(of)i(the)f(list,)i
+(as)e(sho)m(wn)g(in)g(the)h(examples.)p eop end
+%%Page: 134 142
+TeXDict begin 134 141 bop 0 299 a Fj(134)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fj(F)g(or)33 b(complex)f(or)g(commonly)h(used)e(op)s(erations,)i
+(one)f(can)h(place)g(the)f(op)s(erations)g(in)m(to)h(an)f(external)h
+(text)g(\014le)0 668 y(and)39 b(imp)s(ort)h(it)g(in)m(to)h(the)f
+(column)g(\014lter)g(using)f(the)h(syn)m(tax)h('[col)g
+(@\014lename.txt]'.)71 b(The)39 b(op)s(erations)i(can)0
+781 y(extend)26 b(o)m(v)m(er)i(m)m(ultiple)f(lines)g(of)f(the)h
+(\014le,)h(but)d(m)m(ultiple)i(op)s(erations)g(m)m(ust)f(still)i(b)s(e)
+d(separated)i(b)m(y)g(semicolons.)0 894 y(An)m(y)h(lines)h(in)f(the)g
+(external)i(text)f(\014le)f(that)h(b)s(egin)f(with)g(2)h(slash)f(c)m
+(haracters)i(\('//'\))g(will)f(b)s(e)e(ignored)i(and)e(ma)m(y)0
+1007 y(b)s(e)j(used)f(to)i(add)f(commen)m(ts)h(in)m(to)h(the)e(\014le.)
+0 1167 y(Examples:)143 1407 y Fe([col)47 b(Time;)f(rate])667
+b(-)47 b(only)g(the)g(Time)g(and)g(rate)f(columns)g(will)1670
+1520 y(appear)h(in)g(the)g(filtered)e(input)i(file.)143
+1746 y([col)g(Time,)f(*raw])667 b(-)47 b(include)f(the)h(Time)g(column)
+f(and)h(any)g(other)1670 1859 y(columns)f(whose)h(name)f(ends)h(with)g
+('raw'.)143 2085 y([col)g(-TIME;)f(Good)h(==)g(STATUS])141
+b(-)47 b(deletes)f(the)h(TIME)g(column)f(and)1670 2197
+y(renames)g(the)h(status)f(column)g(to)i('Good')143 2423
+y([col)f(PI=PHA)f(*)h(1.1)g(+)h(0.2;)e(#TUNIT#\(column)e(units\))i(=)i
+('counts';*])1575 2536 y(-)f(creates)f(new)h(PI)g(column)f(from)h(PHA)g
+(values)1670 2649 y(and)g(also)g(writes)f(the)h(TUNITn)f(keyword)1670
+2762 y(for)h(the)g(new)g(column.)94 b(The)47 b(final)f('*')1670
+2875 y(expression)f(means)i(preserve)e(all)i(the)1670
+2988 y(columns)f(in)h(the)g(input)g(table)f(in)h(the)1670
+3101 y(virtual)f(output)g(table;)94 b(without)46 b(the)h('*')1670
+3214 y(the)g(output)f(table)h(would)f(only)h(contain)1670
+3327 y(the)g(single)f('PI')h(column.)143 3552 y([col)g(rate)f(=)i
+(rate/exposure;)c(TUNIT#\(&\))h(=)j('counts/s';*])1575
+3665 y(-)f(recomputes)e(the)i(rate)g(column)f(by)h(dividing)1670
+3778 y(it)h(by)f(the)g(EXPOSURE)e(keyword)h(value.)g(This)1670
+3891 y(also)h(modifies)f(the)h(value)f(of)h(the)g(TUNITn)1670
+4004 y(keyword)f(for)h(this)g(column.)f(The)h(use)f(of)i(the)1670
+4117 y('&')f(character)f(for)h(the)f(keyword)g(comment)1670
+4230 y(string)h(means)f(preserve)f(the)i(existing)1670
+4343 y(comment)f(string)g(for)h(that)g(keyword.)e(The)1670
+4456 y(final)i('*')g(preserves)e(all)i(the)g(columns)1670
+4569 y(in)h(the)f(input)f(table)g(in)h(the)g(virtual)1670
+4681 y(output)g(table.)0 5012 y Ff(10.11)136 b(Ro)l(w)46
+b(Filtering)g(Sp)t(eci\014cation)0 5262 y Fj(When)29
+b(en)m(tering)h(the)f(name)g(of)g(a)g(FITS)f(table)i(that)g(is)e(to)i
+(b)s(e)e(op)s(ened)h(b)m(y)f(a)i(program,)f(an)g(optional)h(ro)m(w)f
+(\014lter)0 5375 y(ma)m(y)i(b)s(e)g(sp)s(eci\014ed)f(to)h(select)h(a)g
+(subset)e(of)h(the)g(ro)m(ws)f(in)h(the)g(table.)43 b(A)31
+b(temp)s(orary)f(new)g(FITS)g(\014le)h(is)g(created)0
+5488 y(on)40 b(the)f(\015y)g(whic)m(h)h(con)m(tains)h(only)e(those)h
+(ro)m(ws)g(for)f(whic)m(h)h(the)g(ro)m(w)f(\014lter)h(expression)f(ev)
+-5 b(aluates)42 b(to)e(true.)0 5601 y(The)29 b(primary)f(arra)m(y)i
+(and)f(an)m(y)g(other)h(extensions)g(in)f(the)g(input)g(\014le)g(are)h
+(also)g(copied)g(to)g(the)g(temp)s(orary)f(\014le.)0
+5714 y(\(If)35 b(a)h(`#')f(c)m(haracter)i(is)e(app)s(ended)e(to)j(the)g
+(name)f(or)g(n)m(um)m(b)s(er)f(of)h(the)g(table)h(HDU)g(then)f(only)g
+(the)h(primary)p eop end
+%%Page: 135 143
+TeXDict begin 135 142 bop 0 299 a Fh(10.11.)73 b(R)m(O)m(W)31
+b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(135)0
+555 y(arra)m(y)-8 b(,)37 b(and)d(none)h(of)g(the)g(other)g(HDUs)h(in)e
+(the)i(input)e(\014le)g(will)i(b)s(e)e(copied)h(in)m(to)h(the)f(temp)s
+(orary)g(\014le\).)54 b(The)0 668 y(original)30 b(FITS)f(\014le)g(is)g
+(closed)h(and)e(the)i(new)e(virtual)i(\014le)f(is)g(op)s(ened)f(b)m(y)h
+(the)h(application)g(program.)40 b(The)29 b(ro)m(w)0
+781 y(\014lter)37 b(expression)g(is)h(enclosed)g(in)f(square)g(brac)m
+(k)m(ets)i(follo)m(wing)g(the)e(\014le)h(name)f(and)g(extension)h(name)
+f(\(e.g.,)0 894 y('\014le.\014ts[ev)m(en)m(ts][GRADE==50]')29
+b(selects)d(only)f(those)h(ro)m(ws)f(where)f(the)h(GRADE)h(column)f(v)
+-5 b(alue)25 b(equals)g(50\).)0 1007 y(When)33 b(dealing)h(with)f
+(tables)g(where)g(eac)m(h)h(ro)m(w)f(has)g(an)g(asso)s(ciated)i(time)f
+(and/or)f(2D)g(spatial)i(p)s(osition,)f(the)0 1120 y(ro)m(w)e(\014lter)
+h(expression)e(can)i(also)g(b)s(e)f(used)f(to)i(select)h(ro)m(ws)e
+(based)g(on)g(the)g(times)h(in)f(a)g(Go)s(o)s(d)g(Time)g(In)m(terv)-5
+b(als)0 1233 y(\(GTI\))31 b(extension,)g(or)f(on)h(spatial)g(p)s
+(osition)g(as)f(giv)m(en)i(in)e(a)g(SA)m(O-st)m(yle)i(region)f(\014le.)
+0 1558 y Fd(10.11.1)113 b(General)38 b(Syn)m(tax)0 1784
+y Fj(The)32 b(ro)m(w)h(\014ltering)g(expression)g(can)g(b)s(e)f(an)h
+(arbitrarily)g(complex)g(series)g(of)g(op)s(erations)g(p)s(erformed)f
+(on)g(con-)0 1897 y(stan)m(ts,)39 b(k)m(eyw)m(ord)e(v)-5
+b(alues,)38 b(and)e(column)g(data)i(tak)m(en)f(from)f(the)h(sp)s
+(eci\014ed)e(FITS)h(T)-8 b(ABLE)37 b(extension.)59 b(The)0
+2010 y(expression)37 b(m)m(ust)h(ev)-5 b(aluate)39 b(to)g(a)f(b)s(o)s
+(olean)g(v)-5 b(alue)38 b(for)f(eac)m(h)i(ro)m(w)f(of)g(the)f(table,)k
+(where)c(a)h(v)-5 b(alue)39 b(of)e(F)-10 b(ALSE)0 2123
+y(means)30 b(that)h(the)g(ro)m(w)f(will)h(b)s(e)f(excluded.)0
+2283 y(F)-8 b(or)34 b(complex)g(or)g(commonly)f(used)g(\014lters,)h
+(one)g(can)g(place)g(the)g(expression)f(in)m(to)h(a)g(text)g(\014le)g
+(and)f(imp)s(ort)f(it)0 2396 y(in)m(to)38 b(the)e(ro)m(w)h(\014lter)g
+(using)f(the)h(syn)m(tax)g('[@\014lename.txt]'.)61 b(The)36
+b(expression)h(can)f(b)s(e)g(arbitrarily)h(complex)0
+2509 y(and)27 b(extend)i(o)m(v)m(er)g(m)m(ultiple)g(lines)f(of)g(the)h
+(\014le.)40 b(An)m(y)28 b(lines)g(in)g(the)g(external)h(text)g(\014le)f
+(that)h(b)s(egin)f(with)g(2)g(slash)0 2622 y(c)m(haracters)k(\('//'\))g
+(will)f(b)s(e)f(ignored)g(and)g(ma)m(y)h(b)s(e)f(used)f(to)i(add)f
+(commen)m(ts)h(in)m(to)h(the)e(\014le.)0 2782 y(Keyw)m(ord)37
+b(and)f(column)g(data)i(are)f(referenced)g(b)m(y)g(name.)60
+b(An)m(y)37 b(string)f(of)h(c)m(haracters)i(not)e(surrounded)d(b)m(y)0
+2895 y(quotes)41 b(\(ie,)j(a)d(constan)m(t)h(string\))f(or)f(follo)m(w)
+m(ed)i(b)m(y)f(an)f(op)s(en)g(paren)m(theses)h(\(ie,)j(a)d(function)f
+(name\))h(will)g(b)s(e)0 3008 y(initially)d(in)m(terpreted)e(as)h(a)g
+(column)f(name)g(and)g(its)h(con)m(ten)m(ts)h(for)e(the)h(curren)m(t)f
+(ro)m(w)g(inserted)g(in)m(to)i(the)e(ex-)0 3121 y(pression.)k(If)28
+b(no)h(suc)m(h)g(column)g(exists,)h(a)g(k)m(eyw)m(ord)f(of)h(that)f
+(name)g(will)h(b)s(e)e(searc)m(hed)i(for)f(and)f(its)i(v)-5
+b(alue)29 b(used,)0 3234 y(if)36 b(found.)55 b(T)-8 b(o)36
+b(force)g(the)g(name)g(to)h(b)s(e)e(in)m(terpreted)h(as)g(a)g(k)m(eyw)m
+(ord)g(\(in)g(case)g(there)g(is)g(b)s(oth)f(a)h(column)g(and)0
+3347 y(k)m(eyw)m(ord)41 b(with)e(the)i(same)f(name\),)j(precede)d(the)h
+(k)m(eyw)m(ord)f(name)g(with)g(a)h(single)f(p)s(ound)e(sign,)43
+b('#',)g(as)d(in)0 3460 y('#NAXIS2'.)g(Due)27 b(to)g(the)f
+(generalities)j(of)d(FITS)g(column)g(and)g(k)m(eyw)m(ord)h(names,)g(if)
+f(the)h(column)f(or)g(k)m(eyw)m(ord)0 3572 y(name)33
+b(con)m(tains)h(a)f(space)h(or)f(a)g(c)m(haracter)h(whic)m(h)f(migh)m
+(t)h(app)s(ear)e(as)h(an)g(arithmetic)h(term)f(then)g(enclose)h(the)0
+3685 y(name)c(in)g('$')i(c)m(haracters)g(as)e(in)g($MAX)i(PHA$)f(or)f
+(#$MAX-PHA$.)43 b(Names)31 b(are)f(case)i(insensitiv)m(e.)0
+3846 y(T)-8 b(o)32 b(access)g(a)g(table)g(en)m(try)g(in)f(a)h(ro)m(w)f
+(other)h(than)f(the)g(curren)m(t)g(one,)h(follo)m(w)h(the)e(column's)h
+(name)f(with)g(a)h(ro)m(w)0 3958 y(o\013set)37 b(within)e(curly)g
+(braces.)57 b(F)-8 b(or)36 b(example,)i('PHA)p Fc(f)p
+Fj(-3)p Fc(g)p Fj(')g(will)e(ev)-5 b(aluate)38 b(to)e(the)g(v)-5
+b(alue)36 b(of)g(column)f(PHA,)i(3)0 4071 y(ro)m(ws)28
+b(ab)s(o)m(v)m(e)i(the)e(ro)m(w)h(curren)m(tly)f(b)s(eing)g(pro)s
+(cessed.)40 b(One)28 b(cannot)h(sp)s(ecify)f(an)g(absolute)h(ro)m(w)f
+(n)m(um)m(b)s(er,)g(only)h(a)0 4184 y(relativ)m(e)j(o\013set.)42
+b(Ro)m(ws)31 b(that)g(fall)g(outside)g(the)f(table)h(will)g(b)s(e)f
+(treated)h(as)g(unde\014ned,)d(or)j(NULLs.)0 4344 y(Bo)s(olean)h(op)s
+(erators)f(can)g(b)s(e)f(used)f(in)i(the)f(expression)h(in)f(either)h
+(their)g(F)-8 b(ortran)31 b(or)f(C)h(forms.)40 b(The)30
+b(follo)m(wing)0 4457 y(b)s(o)s(olean)g(op)s(erators)h(are)g(a)m(v)-5
+b(ailable:)191 4747 y Fe("equal")428 b(.eq.)46 b(.EQ.)h(==)95
+b("not)46 b(equal")476 b(.ne.)94 b(.NE.)h(!=)191 4860
+y("less)46 b(than")238 b(.lt.)46 b(.LT.)h(<)143 b("less)46
+b(than/equal")188 b(.le.)94 b(.LE.)h(<=)47 b(=<)191 4973
+y("greater)e(than")95 b(.gt.)46 b(.GT.)h(>)143 b("greater)45
+b(than/equal")g(.ge.)94 b(.GE.)h(>=)47 b(=>)191 5086
+y("or")572 b(.or.)46 b(.OR.)h(||)95 b("and")762 b(.and.)46
+b(.AND.)h(&&)191 5199 y("negation")236 b(.not.)46 b(.NOT.)h(!)95
+b("approx.)45 b(equal\(1e-7\)")92 b(~)0 5488 y Fj(Note)32
+b(that)g(the)f(exclamation)i(p)s(oin)m(t,)e(')10 b(!',)33
+b(is)e(a)g(sp)s(ecial)g(UNIX)h(c)m(haracter,)h(so)e(if)g(it)g(is)g
+(used)f(on)h(the)g(command)0 5601 y(line)i(rather)f(than)h(en)m(tered)g
+(at)g(a)g(task)g(prompt,)g(it)g(m)m(ust)f(b)s(e)g(preceded)h(b)m(y)f(a)
+h(bac)m(kslash)g(to)h(force)f(the)g(UNIX)0 5714 y(shell)e(to)g(ignore)g
+(it.)p eop end
+%%Page: 136 144
+TeXDict begin 136 143 bop 0 299 a Fj(136)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fj(The)32 b(expression)g(ma)m(y)i(also)f(include)f(arithmetic)i
+(op)s(erators)f(and)f(functions.)47 b(T)-8 b(rigonometric)34
+b(functions)e(use)0 668 y(radians,)23 b(not)g(degrees.)38
+b(The)22 b(follo)m(wing)h(arithmetic)g(op)s(erators)g(and)e(functions)g
+(can)i(b)s(e)e(used)g(in)h(the)g(expression)0 781 y(\(function)38
+b(names)f(are)h(case)g(insensitiv)m(e\).)64 b(A)37 b(n)m(ull)h(v)-5
+b(alue)38 b(will)f(b)s(e)g(returned)g(in)g(case)h(of)g(illegal)i(op)s
+(erations)0 894 y(suc)m(h)30 b(as)h(divide)f(b)m(y)g(zero,)i
+(sqrt\(negativ)m(e\))h(log\(negativ)m(e\),)h(log10\(negativ)m(e\),)i
+(arccos\(.gt.)43 b(1\),)32 b(arcsin\(.gt.)42 b(1\).)191
+1144 y Fe("addition")474 b(+)j("subtraction")d(-)191
+1257 y("multiplication")186 b(*)477 b("division")618
+b(/)191 1370 y("negation")474 b(-)j("exponentiation")330
+b(**)143 b(^)191 1483 y("absolute)45 b(value")189 b(abs\(x\))237
+b("cosine")762 b(cos\(x\))191 1596 y("sine")666 b(sin\(x\))237
+b("tangent")714 b(tan\(x\))191 1709 y("arc)47 b(cosine")379
+b(arccos\(x\))93 b("arc)47 b(sine")667 b(arcsin\(x\))191
+1822 y("arc)47 b(tangent")331 b(arctan\(x\))93 b("arc)47
+b(tangent")523 b(arctan2\(y,x\))191 1935 y("hyperbolic)45
+b(cos")189 b(cosh\(x\))g("hyperbolic)45 b(sin")381 b(sinh\(x\))191
+2047 y("hyperbolic)45 b(tan")189 b(tanh\(x\))g("round)47
+b(to)g(nearest)f(int")94 b(round\(x\))191 2160 y("round)46
+b(down)h(to)g(int")f(floor\(x\))141 b("round)47 b(up)g(to)g(int")333
+b(ceil\(x\))191 2273 y("exponential")d(exp\(x\))237 b("square)46
+b(root")524 b(sqrt\(x\))191 2386 y("natural)45 b(log")333
+b(log\(x\))237 b("common)46 b(log")572 b(log10\(x\))191
+2499 y("modulus")522 b(x)48 b(\045)f(y)286 b("random)46
+b(#)i([0.0,1.0\)")188 b(random\(\))191 2612 y("random)46
+b(Gaussian")140 b(randomn\(\))93 b("random)46 b(Poisson")380
+b(randomp\(x\))191 2725 y("minimum")522 b(min\(x,y\))141
+b("maximum")714 b(max\(x,y\))191 2838 y("cumulative)45
+b(sum")189 b(accum\(x\))141 b("sequential)45 b(difference")g
+(seqdiff\(x\))191 2951 y("if-then-else")282 b(b?x:y)191
+3064 y("angular)45 b(separation")93 b(angsep\(ra1,dec1,ra2,de2\))41
+b(\(all)47 b(in)g(degrees\))191 3177 y("substring")283
+b(strmid\(s,p,n\))44 b("string)i(search")428 b(strstr\(s,r\))0
+3427 y Fj(Three)30 b(di\013eren)m(t)h(random)f(n)m(um)m(b)s(er)f
+(functions)h(are)h(pro)m(vided:)41 b(random\(\),)30 b(with)h(no)f
+(argumen)m(ts,)h(pro)s(duces)f(a)0 3540 y(uniform)g(random)f(deviate)k
+(b)s(et)m(w)m(een)e(0)g(and)f(1;)i(randomn\(\),)e(also)i(with)e(no)h
+(argumen)m(ts,)g(pro)s(duces)f(a)h(normal)0 3653 y(\(Gaussian\))k
+(random)e(deviate)j(with)e(zero)h(mean)f(and)g(unit)f(standard)h
+(deviation;)j(randomp\(x\))d(pro)s(duces)f(a)0 3766 y(P)m(oisson)27
+b(random)f(deviate)h(whose)f(exp)s(ected)h(n)m(um)m(b)s(er)e(of)h(coun)
+m(ts)h(is)g(X.)f(X)h(ma)m(y)g(b)s(e)e(an)m(y)i(p)s(ositiv)m(e)g(real)g
+(n)m(um)m(b)s(er)0 3878 y(of)k(exp)s(ected)f(coun)m(ts,)h(including)f
+(fractional)i(v)-5 b(alues,)31 b(but)f(the)g(return)g(v)-5
+b(alue)31 b(is)f(an)g(in)m(teger.)0 4039 y(When)d(the)g(random)g
+(functions)f(are)i(used)e(in)h(a)h(v)m(ector)g(expression,)g(b)m(y)f
+(default)h(the)f(same)h(random)e(v)-5 b(alue)28 b(will)0
+4152 y(b)s(e)g(used)f(when)h(ev)-5 b(aluating)30 b(eac)m(h)f(elemen)m
+(t)h(of)f(the)g(v)m(ector.)41 b(If)28 b(di\013eren)m(t)h(random)f(n)m
+(um)m(b)s(ers)f(are)i(desired,)f(then)0 4264 y(the)37
+b(name)g(of)g(a)g(v)m(ector)i(column)e(should)e(b)s(e)i(supplied)e(as)i
+(the)h(single)f(argumen)m(t)g(to)h(the)f(random)f(function)0
+4377 y(\(e.g.,)31 b("\015ux)c(+)h(0.1)h(*)g(random\(\015ux\)",)f(where)
+g("\015ux')g(is)g(the)g(name)h(of)f(a)h(v)m(ector)h(column\).)40
+b(This)27 b(will)i(create)h(a)0 4490 y(v)m(ector)d(of)f(random)f(n)m
+(um)m(b)s(ers)f(that)i(will)g(b)s(e)f(used)f(in)i(sequence)g(when)e(ev)
+-5 b(aluating)27 b(eac)m(h)g(elemen)m(t)g(of)f(the)f(v)m(ector)0
+4603 y(expression.)0 4763 y(An)31 b(alternate)i(syn)m(tax)f(for)f(the)g
+(min)g(and)g(max)g(functions)g(has)g(only)g(a)h(single)g(argumen)m(t)g
+(whic)m(h)f(should)f(b)s(e)h(a)0 4876 y(v)m(ector)g(v)-5
+b(alue)30 b(\(see)g(b)s(elo)m(w\).)41 b(The)29 b(result)g(will)h(b)s(e)
+e(the)i(minim)m(um/maxim)m(um)f(elemen)m(t)h(con)m(tained)h(within)e
+(the)0 4989 y(v)m(ector.)0 5149 y(The)35 b(accum\(x\))i(function)f
+(forms)f(the)h(cum)m(ulativ)m(e)i(sum)d(of)h(x,)h(elemen)m(t)h(b)m(y)e
+(elemen)m(t.)58 b(V)-8 b(ector)38 b(columns)e(are)0 5262
+y(supp)s(orted)h(simply)h(b)m(y)g(p)s(erforming)f(the)i(summation)g
+(pro)s(cess)f(through)f(all)j(the)f(v)-5 b(alues.)65
+b(Null)39 b(v)-5 b(alues)39 b(are)0 5375 y(treated)30
+b(as)f(0.)41 b(The)29 b(seqdi\013\(x\))h(function)e(forms)h(the)g
+(sequen)m(tial)i(di\013erence)e(of)h(x,)f(elemen)m(t)i(b)m(y)e(elemen)m
+(t.)41 b(The)0 5488 y(\014rst)36 b(v)-5 b(alue)38 b(of)f(seqdi\013)g
+(is)g(the)g(\014rst)g(v)-5 b(alue)37 b(of)g(x.)61 b(A)37
+b(single)h(n)m(ull)f(v)-5 b(alue)38 b(in)e(x)h(causes)h(a)f(pair)g(of)g
+(n)m(ulls)g(in)g(the)0 5601 y(output.)55 b(The)35 b(seqdi\013)g(and)g
+(accum)g(functions)g(are)h(functional)f(in)m(v)m(erses,)j(i.e.,)g
+(seqdi\013\(accum\(x\)\))f(==)e(x)g(as)0 5714 y(long)c(as)g(no)f(n)m
+(ull)g(v)-5 b(alues)31 b(are)g(presen)m(t.)p eop end
+%%Page: 137 145
+TeXDict begin 137 144 bop 0 299 a Fh(10.11.)73 b(R)m(O)m(W)31
+b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(137)0
+555 y(In)36 b(the)h(if-then-else)i(expression,)f("b?x:y",)i(b)c(is)h
+(an)g(explicit)h(b)s(o)s(olean)f(v)-5 b(alue)37 b(or)g(expression.)61
+b(There)36 b(is)h(no)0 668 y(automatic)d(t)m(yp)s(e)e(con)m(v)m(ersion)
+h(from)e(n)m(umeric)h(to)g(b)s(o)s(olean)g(v)-5 b(alues,)33
+b(so)f(one)g(needs)f(to)i(use)e("iV)-8 b(al!=0")35 b(instead)0
+781 y(of)30 b(merely)g("iV)-8 b(al")32 b(as)e(the)g(b)s(o)s(olean)g
+(argumen)m(t.)41 b(x)30 b(and)f(y)h(can)g(b)s(e)f(an)m(y)h(scalar)h
+(data)g(t)m(yp)s(e)f(\(including)f(string\).)0 941 y(The)22
+b(angsep)g(function)f(computes)i(the)f(angular)g(separation)h(in)e
+(degrees)i(b)s(et)m(w)m(een)g(2)f(celestial)j(p)s(ositions,)e(where)0
+1054 y(the)36 b(\014rst)f(2)h(parameters)g(giv)m(e)h(the)f(RA-lik)m(e)i
+(and)d(Dec-lik)m(e)j(co)s(ordinates)f(\(in)f(decimal)g(degrees\))h(of)f
+(the)g(\014rst)0 1167 y(p)s(osition,)31 b(and)e(the)i(3rd)f(and)g(4th)g
+(parameters)h(giv)m(e)h(the)e(co)s(ordinates)i(of)e(the)h(second)f(p)s
+(osition.)0 1327 y(The)38 b(substring)f(function)i(strmid\(S,P)-8
+b(,N\))39 b(extracts)g(a)g(substring)f(from)g(S,)g(starting)h(at)g
+(string)g(p)s(osition)f(P)-8 b(,)0 1440 y(with)33 b(a)h(substring)f
+(length)h(N.)g(The)f(\014rst)g(c)m(haracter)j(p)s(osition)d(in)h(S)f
+(is)h(lab)s(eled)g(as)g(1.)51 b(If)33 b(P)g(is)h(0,)h(or)f(refers)f(to)
+0 1553 y(a)i(p)s(osition)g(b)s(ey)m(ond)f(the)h(end)e(of)i(S,)g(then)f
+(the)h(extracted)h(substring)d(will)i(b)s(e)f(NULL.)h(S,)f(P)-8
+b(,)36 b(and)e(N)g(ma)m(y)i(b)s(e)0 1666 y(functions)30
+b(of)g(other)h(columns.)0 1826 y(The)39 b(string)h(searc)m(h)h
+(function)e(strstr\(S,R\))h(searc)m(hes)h(for)f(the)g(\014rst)f(o)s
+(ccurrence)h(of)g(the)g(substring)f(R)h(in)f(S.)0 1939
+y(The)c(result)h(is)f(an)h(in)m(teger,)i(indicating)f(the)e(c)m
+(haracter)i(p)s(osition)f(of)g(the)g(\014rst)e(matc)m(h)j(\(where)e(1)h
+(is)g(the)g(\014rst)0 2052 y(c)m(haracter)c(p)s(osition)e(of)h(S\).)f
+(If)g(no)h(matc)m(h)g(is)f(found,)g(then)g(strstr\(\))g(returns)f(a)i
+(NULL)f(v)-5 b(alue.)0 2212 y(The)38 b(follo)m(wing)i(t)m(yp)s(e)f
+(casting)h(op)s(erators)f(are)g(a)m(v)-5 b(ailable,)44
+b(where)38 b(the)h(inclosing)h(paren)m(theses)f(are)g(required)0
+2325 y(and)30 b(tak)m(en)h(from)f(the)h(C)f(language)h(usage.)42
+b(Also,)31 b(the)g(in)m(teger)g(to)h(real)f(casts)g(v)-5
+b(alues)30 b(to)i(double)e(precision:)764 2545 y Fe("real)46
+b(to)h(integer")189 b(\(int\))46 b(x)239 b(\(INT\))46
+b(x)764 2658 y("integer)f(to)i(real")190 b(\(float\))46
+b(i)143 b(\(FLOAT\))45 b(i)0 2878 y Fj(In)30 b(addition,)g(sev)m(eral)i
+(constan)m(ts)g(are)f(built)f(in)g(for)g(use)g(in)g(n)m(umerical)h
+(expressions:)382 3098 y Fe(#pi)667 b(3.1415...)284 b(#e)620
+b(2.7182...)382 3211 y(#deg)f(#pi/180)380 b(#row)524
+b(current)46 b(row)h(number)382 3324 y(#null)428 b(undefined)45
+b(value)142 b(#snull)428 b(undefined)45 b(string)0 3544
+y Fj(A)40 b(string)f(constan)m(t)i(m)m(ust)e(b)s(e)g(enclosed)h(in)g
+(quotes)g(as)f(in)h('Crab'.)67 b(The)39 b("n)m(ull")i(constan)m(ts)f
+(are)g(useful)f(for)0 3657 y(conditionally)g(setting)g(table)g(v)-5
+b(alues)38 b(to)g(a)g(NULL,)g(or)g(unde\014ned,)f(v)-5
+b(alue)39 b(\(eg.,)i("col1==-99)f(?)62 b(#NULL)38 b(:)0
+3770 y(col1"\).)0 3930 y(There)27 b(is)g(also)i(a)e(function)g(for)h
+(testing)g(if)f(t)m(w)m(o)i(v)-5 b(alues)28 b(are)g(close)g(to)h(eac)m
+(h)f(other,)h(i.e.,)g(if)e(they)h(are)g("near")g(eac)m(h)0
+4043 y(other)c(to)h(within)e(a)h(user)g(sp)s(eci\014ed)f(tolerance.)40
+b(The)24 b(argumen)m(ts,)h(v)-5 b(alue)p 2502 4043 28
+4 v 34 w(1)24 b(and)f(v)-5 b(alue)p 2979 4043 V 33 w(2)25
+b(can)f(b)s(e)f(in)m(teger)i(or)f(real)0 4156 y(and)32
+b(represen)m(t)h(the)g(t)m(w)m(o)h(v)-5 b(alues)33 b(who's)f(pro)m
+(ximit)m(y)i(is)f(b)s(eing)f(tested)h(to)h(b)s(e)e(within)g(the)h(sp)s
+(eci\014ed)f(tolerance,)0 4269 y(also)f(an)g(in)m(teger)g(or)g(real:)
+955 4489 y Fe(near\(value_1,)44 b(value_2,)h(tolerance\))0
+4709 y Fj(When)24 b(a)i(NULL,)e(or)h(unde\014ned,)f(v)-5
+b(alue)25 b(is)g(encoun)m(tered)g(in)g(the)f(FITS)g(table,)j(the)e
+(expression)g(will)g(ev)-5 b(aluate)26 b(to)0 4822 y(NULL)31
+b(unless)f(the)h(unde\014ned)e(v)-5 b(alue)31 b(is)g(not)g(actually)h
+(required)e(for)h(ev)-5 b(aluation,)33 b(e.g.)43 b("TR)m(UE)31
+b(.or.)43 b(NULL")0 4935 y(ev)-5 b(aluates)32 b(to)f(TR)m(UE.)g(The)f
+(follo)m(wing)h(t)m(w)m(o)h(functions)e(allo)m(w)i(some)f(NULL)f
+(detection)i(and)e(handling:)430 5155 y Fe("a)47 b(null)f(value?")667
+b(ISNULL\(x\))430 5268 y("define)45 b(a)j(value)e(for)h(null")190
+b(DEFNULL\(x,y\))0 5488 y Fj(The)36 b(former)h(returns)e(a)i(b)s(o)s
+(olean)g(v)-5 b(alue)37 b(of)g(TR)m(UE)g(if)g(the)g(argumen)m(t)g(x)g
+(is)g(NULL.)g(The)f(later)i("de\014nes")f(a)0 5601 y(v)-5
+b(alue)35 b(to)g(b)s(e)e(substituted)h(for)g(NULL)g(v)-5
+b(alues;)37 b(it)e(returns)e(the)h(v)-5 b(alue)35 b(of)f(x)g(if)g(x)h
+(is)f(not)g(NULL,)h(otherwise)f(it)0 5714 y(returns)29
+b(the)i(v)-5 b(alue)31 b(of)f(y)-8 b(.)p eop end
+%%Page: 138 146
+TeXDict begin 138 145 bop 0 299 a Fj(138)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fd(10.11.2)113 b(Bit)36 b(Masks)0 774 y Fj(Bit)g(masks)f(can)h(b)
+s(e)f(used)f(to)i(select)h(out)e(ro)m(ws)h(from)e(bit)i(columns)f(\(TF)
+m(ORMn)g(=)g(#X\))h(in)f(FITS)f(\014les.)55 b(T)-8 b(o)0
+887 y(represen)m(t)30 b(the)h(mask,)g(binary)-8 b(,)30
+b(o)s(ctal,)i(and)e(hex)g(formats)g(are)h(allo)m(w)m(ed:)811
+1141 y Fe(binary:)142 b(b0110xx1010000101xxxx00)o(01)811
+1254 y(octal:)190 b(o720x1)46 b(->)h(\(b111010000xxx001\))811
+1367 y(hex:)286 b(h0FxD)94 b(->)47 b(\(b00001111xxxx1101\))0
+1621 y Fj(In)22 b(all)i(the)f(represen)m(tations,)j(an)c(x)h(or)g(X)g
+(is)g(allo)m(w)m(ed)i(in)d(the)h(mask)g(as)g(a)h(wild)e(card.)38
+b(Note)25 b(that)e(the)g(x)g(represen)m(ts)0 1734 y(a)k(di\013eren)m(t)
+h(n)m(um)m(b)s(er)e(of)h(wild)f(card)h(bits)g(in)g(eac)m(h)h(represen)m
+(tation.)41 b(All)27 b(represen)m(tations)h(are)g(case)g(insensitiv)m
+(e.)0 1894 y(T)-8 b(o)28 b(construct)g(the)g(b)s(o)s(olean)f
+(expression)h(using)f(the)h(mask)f(as)h(the)g(b)s(o)s(olean)f(equal)h
+(op)s(erator)g(describ)s(ed)f(ab)s(o)m(v)m(e)0 2007 y(on)34
+b(a)h(bit)g(table)h(column.)53 b(F)-8 b(or)35 b(example,)i(if)d(y)m(ou)
+h(had)f(a)h(7)g(bit)g(column)f(named)g(\015ags)h(in)f(a)h(FITS)f(table)
+i(and)0 2119 y(w)m(an)m(ted)31 b(all)g(ro)m(ws)g(ha)m(ving)g(the)f(bit)
+h(pattern)f(0010011,)k(the)c(selection)j(expression)d(w)m(ould)g(b)s
+(e:)1336 2373 y Fe(flags)47 b(==)g(b0010011)191 2486
+y(or)1336 2599 y(flags)g(.eq.)f(b10011)0 2853 y Fj(It)35
+b(is)g(also)h(p)s(ossible)e(to)i(test)g(if)f(a)g(range)g(of)g(bits)g
+(is)g(less)g(than,)h(less)f(than)g(equal,)i(greater)f(than)e(and)h
+(greater)0 2966 y(than)30 b(equal)h(to)g(a)g(particular)g(b)s(o)s
+(olean)f(v)-5 b(alue:)1336 3220 y Fe(flags)47 b(<=)g(bxxx010xx)1336
+3333 y(flags)g(.gt.)f(bxxx100xx)1336 3446 y(flags)h(.le.)f(b1xxxxxxx)0
+3700 y Fj(Notice)32 b(the)f(use)f(of)h(the)f(x)g(bit)h(v)-5
+b(alue)31 b(to)g(limit)g(the)f(range)h(of)g(bits)f(b)s(eing)g
+(compared.)0 3860 y(It)i(is)h(not)f(necessary)h(to)g(sp)s(ecify)f(the)h
+(leading)g(\(most)g(signi\014can)m(t\))h(zero)f(\(0\))g(bits)f(in)g
+(the)h(mask,)g(as)g(sho)m(wn)e(in)0 3973 y(the)g(second)f(expression)g
+(ab)s(o)m(v)m(e.)0 4133 y(Bit)44 b(wise)f(AND,)h(OR)e(and)g(NOT)h(op)s
+(erations)g(are)g(also)h(p)s(ossible)e(on)h(t)m(w)m(o)h(or)f(more)g
+(bit)g(\014elds)f(using)h(the)0 4246 y('&'\(AND\),)35
+b(')p Fc(j)p Fj('\(OR\),)g(and)e(the)h(')10 b(!'\(NOT\))34
+b(op)s(erators.)51 b(All)34 b(of)f(these)h(op)s(erators)g(result)f(in)h
+(a)g(bit)f(\014eld)g(whic)m(h)0 4359 y(can)e(then)f(b)s(e)f(used)h
+(with)g(the)h(equal)g(op)s(erator.)41 b(F)-8 b(or)31
+b(example:)1241 4613 y Fe(\(!flags\))45 b(==)j(b1101100)1241
+4726 y(\(flags)e(&)h(b1000001\))f(==)h(bx000001)0 4979
+y Fj(Bit)35 b(\014elds)f(can)g(b)s(e)f(app)s(ended)g(as)h(w)m(ell)h
+(using)f(the)g('+')g(op)s(erator.)53 b(Strings)33 b(can)i(b)s(e)e
+(concatenated)j(this)e(w)m(a)m(y)-8 b(,)0 5092 y(to)s(o.)0
+5382 y Fd(10.11.3)113 b(V)-9 b(ector)36 b(Columns)0 5601
+y Fj(V)-8 b(ector)37 b(columns)e(can)h(also)g(b)s(e)f(used)f(in)h
+(building)g(the)g(expression.)56 b(No)36 b(sp)s(ecial)g(syn)m(tax)f(is)
+h(required)e(if)i(one)0 5714 y(w)m(an)m(ts)46 b(to)f(op)s(erate)h(on)f
+(all)h(elemen)m(ts)g(of)f(the)h(v)m(ector.)86 b(Simply)44
+b(use)h(the)g(column)g(name)g(as)g(for)g(a)g(scalar)p
+eop end
+%%Page: 139 147
+TeXDict begin 139 146 bop 0 299 a Fh(10.11.)73 b(R)m(O)m(W)31
+b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(139)0
+555 y(column.)42 b(V)-8 b(ector)32 b(columns)f(can)g(b)s(e)f(freely)h
+(in)m(termixed)h(with)e(scalar)i(columns)e(or)h(constan)m(ts)h(in)f
+(virtually)g(all)0 668 y(expressions.)40 b(The)29 b(result)g(will)g(b)s
+(e)g(of)g(the)g(same)h(dimension)e(as)i(the)f(v)m(ector.)42
+b(Tw)m(o)29 b(v)m(ectors)i(in)e(an)g(expression,)0 781
+y(though,)h(need)g(to)i(ha)m(v)m(e)f(the)g(same)g(n)m(um)m(b)s(er)e(of)
+h(elemen)m(ts)i(and)e(ha)m(v)m(e)h(the)g(same)g(dimensions.)0
+941 y(Arithmetic)24 b(and)e(logical)k(op)s(erations)d(are)h(all)g(p)s
+(erformed)d(on)i(an)g(elemen)m(t)h(b)m(y)f(elemen)m(t)i(basis.)38
+b(Comparing)23 b(t)m(w)m(o)0 1054 y(v)m(ector)32 b(columns,)e(eg)h
+("COL1)f(==)g(COL2",)g(th)m(us)g(results)g(in)g(another)g(v)m(ector)i
+(of)e(b)s(o)s(olean)h(v)-5 b(alues)30 b(indicating)0
+1167 y(whic)m(h)g(elemen)m(ts)i(of)e(the)h(t)m(w)m(o)h(v)m(ectors)f
+(are)g(equal.)0 1327 y(Eigh)m(t)g(functions)f(are)h(a)m(v)-5
+b(ailable)33 b(that)e(op)s(erate)g(on)f(a)h(v)m(ector)h(and)d(return)h
+(a)g(scalar)i(result:)191 1570 y Fe("minimum")284 b(MIN\(V\))475
+b("maximum")714 b(MAX\(V\))191 1683 y("average")284 b(AVERAGE\(V\))f
+("median")762 b(MEDIAN\(V\))191 1796 y("summation")188
+b(SUM\(V\))475 b("standard)46 b(deviation")188 b(STDDEV\(V\))191
+1909 y("#)47 b(of)g(values")94 b(NELEM\(V\))379 b("#)48
+b(of)f(non-null)e(values")94 b(NVALID\(V\))0 2151 y Fj(where)40
+b(V)h(represen)m(ts)g(the)g(name)g(of)h(a)f(v)m(ector)h(column)f(or)g
+(a)h(man)m(ually)f(constructed)g(v)m(ector)i(using)d(curly)0
+2264 y(brac)m(k)m(ets)27 b(as)f(describ)s(ed)e(b)s(elo)m(w.)39
+b(The)25 b(\014rst)g(6)h(of)g(these)g(functions)f(ignore)h(an)m(y)g(n)m
+(ull)f(v)-5 b(alues)26 b(in)f(the)h(v)m(ector)h(when)0
+2377 y(computing)k(the)f(result.)41 b(The)30 b(STDDEV\(\))h(function)g
+(computes)f(the)h(sample)g(standard)e(deviation,)j(i.e.)42
+b(it)31 b(is)0 2490 y(prop)s(ortional)f(to)h(1/SQR)-8
+b(T\(N-1\))32 b(instead)f(of)g(1/SQR)-8 b(T\(N\),)31
+b(where)f(N)h(is)f(NV)-10 b(ALID\(V\).)0 2650 y(The)31
+b(SUM)h(function)f(literally)j(sums)d(all)h(the)g(elemen)m(ts)h(in)f
+(x,)g(returning)f(a)h(scalar)h(v)-5 b(alue.)45 b(If)31
+b(V)h(is)g(a)g(b)s(o)s(olean)0 2763 y(v)m(ector,)40 b(SUM)c(returns)f
+(the)h(n)m(um)m(b)s(er)f(of)i(TR)m(UE)f(elemen)m(ts.)60
+b(The)36 b(NELEM)g(function)g(returns)f(the)h(n)m(um)m(b)s(er)0
+2876 y(of)h(elemen)m(ts)g(in)g(v)m(ector)h(V)e(whereas)h(NV)-10
+b(ALID)36 b(return)g(the)h(n)m(um)m(b)s(er)e(of)h(non-n)m(ull)g(elemen)
+m(ts)i(in)e(the)h(v)m(ector.)0 2989 y(\(NELEM)28 b(also)h(op)s(erates)f
+(on)g(bit)f(and)g(string)h(columns,)g(returning)f(their)h(column)f
+(widths.\))40 b(As)27 b(an)h(example,)0 3102 y(to)42
+b(test)g(whether)f(all)h(elemen)m(ts)h(of)f(t)m(w)m(o)g(v)m(ectors)h
+(satisfy)f(a)g(giv)m(en)g(logical)i(comparison,)g(one)e(can)g(use)f
+(the)0 3215 y(expression)668 3457 y Fe(SUM\()47 b(COL1)f(>)i(COL2)f(\))
+g(==)g(NELEM\()f(COL1)h(\))0 3700 y Fj(whic)m(h)32 b(will)g(return)f
+(TR)m(UE)h(if)g(all)h(elemen)m(ts)g(of)f(COL1)g(are)g(greater)h(than)f
+(their)g(corresp)s(onding)f(elemen)m(ts)i(in)0 3813 y(COL2.)0
+3973 y(T)-8 b(o)32 b(sp)s(ecify)f(a)i(single)f(elemen)m(t)h(of)f(a)g(v)
+m(ector,)i(giv)m(e)f(the)f(column)f(name)h(follo)m(w)m(ed)h(b)m(y)f(a)g
+(comma-separated)h(list)0 4086 y(of)c(co)s(ordinates)g(enclosed)h(in)e
+(square)h(brac)m(k)m(ets.)41 b(F)-8 b(or)30 b(example,)g(if)e(a)h(v)m
+(ector)i(column)d(named)h(PHAS)f(exists)h(in)0 4199 y(the)e(table)g(as)
+g(a)g(one)g(dimensional,)h(256)g(comp)s(onen)m(t)f(list)g(of)g(n)m(um)m
+(b)s(ers)e(from)h(whic)m(h)h(y)m(ou)g(w)m(an)m(ted)g(to)g(select)i(the)
+0 4312 y(57th)j(comp)s(onen)m(t)g(for)f(use)g(in)g(the)h(expression,)f
+(then)h(PHAS[57])g(w)m(ould)f(do)h(the)f(tric)m(k.)45
+b(Higher)32 b(dimensional)0 4425 y(arra)m(ys)41 b(of)h(data)f(ma)m(y)h
+(app)s(ear)f(in)f(a)i(column.)73 b(But)41 b(in)g(order)f(to)i(in)m
+(terpret)f(them,)j(the)e(TDIMn)e(k)m(eyw)m(ord)0 4538
+y(m)m(ust)34 b(app)s(ear)g(in)g(the)g(header.)52 b(Assuming)34
+b(that)h(a)f(\(4,4,4,4\))k(arra)m(y)c(is)h(pac)m(k)m(ed)g(in)m(to)g
+(eac)m(h)h(ro)m(w)e(of)g(a)h(column)0 4650 y(named)26
+b(ARRA)-8 b(Y4D,)28 b(the)f(\(1,2,3,4\))i(comp)s(onen)m(t)e(elemen)m(t)
+g(of)g(eac)m(h)g(ro)m(w)g(is)f(accessed)i(b)m(y)e(ARRA)-8
+b(Y4D[1,2,3,4].)0 4763 y(Arra)m(ys)33 b(up)e(to)j(dimension)e(5)h(are)f
+(curren)m(tly)h(supp)s(orted.)46 b(Eac)m(h)33 b(v)m(ector)h(index)e
+(can)h(itself)g(b)s(e)f(an)h(expression,)0 4876 y(although)39
+b(it)g(m)m(ust)g(ev)-5 b(aluate)40 b(to)f(an)g(in)m(teger)h(v)-5
+b(alue)39 b(within)f(the)h(b)s(ounds)d(of)j(the)g(v)m(ector.)67
+b(V)-8 b(ector)40 b(columns)0 4989 y(whic)m(h)31 b(con)m(tain)h(spaces)
+g(or)f(arithmetic)h(op)s(erators)g(m)m(ust)f(ha)m(v)m(e)h(their)f
+(names)g(enclosed)h(in)f("$")h(c)m(haracters)h(as)0 5102
+y(with)d($ARRA)-8 b(Y-4D$[1,2,3,4].)0 5262 y(A)45 b(more)f(C-lik)m(e)i
+(syn)m(tax)g(for)e(sp)s(ecifying)g(v)m(ector)j(indices)d(is)h(also)h(a)
+m(v)-5 b(ailable.)85 b(The)45 b(elemen)m(t)h(used)d(in)i(the)0
+5375 y(preceding)28 b(example)h(alternativ)m(ely)i(could)d(b)s(e)g(sp)s
+(eci\014ed)g(with)f(the)i(syn)m(tax)g(ARRA)-8 b(Y4D[4][3][2][1].)45
+b(Note)30 b(the)0 5488 y(rev)m(erse)40 b(order)f(of)h(indices)f(\(as)h
+(in)f(C\),)h(as)f(w)m(ell)i(as)e(the)h(fact)g(that)g(the)g(v)-5
+b(alues)40 b(are)f(still)i(ones-based)e(\(as)h(in)0 5601
+y(F)-8 b(ortran)39 b({)g(adopted)g(to)g(a)m(v)m(oid)h(am)m(biguit)m(y)g
+(for)f(1D)g(v)m(ectors\).)67 b(With)39 b(this)g(syn)m(tax,)i(one)e(do)s
+(es)f(not)h(need)f(to)0 5714 y(sp)s(ecify)30 b(all)h(of)g(the)f
+(indices.)41 b(T)-8 b(o)31 b(extract)h(a)f(3D)g(slice)g(of)g(this)f(4D)
+h(arra)m(y)-8 b(,)32 b(use)e(ARRA)-8 b(Y4D[4].)p eop
+end
+%%Page: 140 148
+TeXDict begin 140 147 bop 0 299 a Fj(140)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fj(V)g(ariable-length)33 b(v)m(ector)f(columns)e(are)g(not)h
+(supp)s(orted.)0 715 y(V)-8 b(ectors)24 b(can)e(b)s(e)f(man)m(ually)h
+(constructed)h(within)e(the)h(expression)g(using)f(a)h(comma-separated)
+i(list)f(of)f(elemen)m(ts)0 828 y(surrounded)35 b(b)m(y)j(curly)g
+(braces)h(\(')p Fc(fg)p Fj('\).)66 b(F)-8 b(or)38 b(example,)j(')p
+Fc(f)p Fj(1,3,6,1)p Fc(g)p Fj(')h(is)d(a)f(4-elemen)m(t)i(v)m(ector)g
+(con)m(taining)g(the)0 941 y(v)-5 b(alues)26 b(1,)h(3,)g(6,)g(and)e(1.)
+40 b(The)25 b(v)m(ector)i(can)f(con)m(tain)h(only)f(b)s(o)s(olean,)g
+(in)m(teger,)j(and)c(real)h(v)-5 b(alues)26 b(\(or)g(expressions\).)0
+1054 y(The)c(elemen)m(ts)i(will)f(b)s(e)f(promoted)h(to)g(the)g
+(highest)g(data)g(t)m(yp)s(e)g(presen)m(t.)38 b(An)m(y)22
+b(elemen)m(ts)i(whic)m(h)f(are)g(themselv)m(es)0 1167
+y(v)m(ectors,)40 b(will)d(b)s(e)f(expanded)g(out)h(with)g(eac)m(h)g(of)
+g(its)g(elemen)m(ts)i(b)s(ecoming)d(an)h(elemen)m(t)h(in)f(the)g
+(constructed)0 1280 y(v)m(ector.)0 1567 y Fd(10.11.4)113
+b(Go)s(o)s(d)38 b(Time)g(In)m(terv)-6 b(al)37 b(Filtering)0
+1786 y Fj(A)44 b(common)g(\014ltering)h(metho)s(d)e(in)m(v)m(olv)m(es)j
+(selecting)g(ro)m(ws)e(whic)m(h)f(ha)m(v)m(e)j(a)e(time)h(v)-5
+b(alue)44 b(whic)m(h)g(lies)g(within)0 1899 y(what)37
+b(is)g(called)i(a)f(Go)s(o)s(d)f(Time)g(In)m(terv)-5
+b(al)38 b(or)f(GTI.)g(The)g(time)h(in)m(terv)-5 b(als)38
+b(are)g(de\014ned)e(in)h(a)g(separate)i(FITS)0 2012 y(table)i
+(extension)g(whic)m(h)e(con)m(tains)i(2)g(columns)f(giving)g(the)h
+(start)f(and)g(stop)g(time)g(of)g(eac)m(h)i(go)s(o)s(d)e(in)m(terv)-5
+b(al.)0 2124 y(The)34 b(\014ltering)h(op)s(eration)h(accepts)g(only)e
+(those)i(ro)m(ws)e(of)h(the)g(input)f(table)i(whic)m(h)e(ha)m(v)m(e)i
+(an)f(asso)s(ciated)h(time)0 2237 y(whic)m(h)f(falls)i(within)e(one)h
+(of)g(the)g(time)g(in)m(terv)-5 b(als)37 b(de\014ned)e(in)g(the)h(GTI)g
+(extension.)57 b(A)36 b(high)g(lev)m(el)h(function,)0
+2350 y(gti\014lter\(a,b,c,d\),)44 b(is)c(a)m(v)-5 b(ailable)42
+b(whic)m(h)d(ev)-5 b(aluates)41 b(eac)m(h)g(ro)m(w)e(of)h(the)f(input)g
+(table)h(and)f(returns)f(TR)m(UE)i(or)0 2463 y(F)-10
+b(ALSE)30 b(dep)s(ending)f(whether)h(the)g(ro)m(w)h(is)f(inside)g(or)g
+(outside)h(the)g(go)s(o)s(d)f(time)h(in)m(terv)-5 b(al.)42
+b(The)30 b(syn)m(tax)h(is)286 2700 y Fe(gtifilter\()45
+b([)j("gtifile")d([,)i(expr)g([,)g("STARTCOL",)e("STOPCOL")g(])j(])f(])
+g(\))191 2812 y(or)286 2925 y(gtifilter\()e([)j('gtifile')d([,)i(expr)g
+([,)g('STARTCOL',)e('STOPCOL')g(])j(])f(])g(\))0 3162
+y Fj(where)20 b(eac)m(h)h("[]")h(demarks)e(optional)h(parameters.)38
+b(Note)21 b(that)g(the)g(quotes)f(around)g(the)g(gti\014le)i(and)d(ST)
+-8 b(AR)g(T/STOP)0 3275 y(column)33 b(are)h(required.)50
+b(Either)34 b(single)g(or)g(double)f(quotes)h(ma)m(y)g(b)s(e)f(used.)50
+b(In)33 b(cases)h(where)g(this)f(expression)0 3387 y(is)d(en)m(tered)g
+(on)g(the)g(Unix)g(command)g(line,)g(enclose)h(the)f(en)m(tire)h
+(expression)f(in)f(double)h(quotes,)g(and)g(then)f(use)0
+3500 y(single)c(quotes)g(within)e(the)i(expression)f(to)h(enclose)g
+(the)g('gti\014le')h(and)d(other)i(terms.)38 b(It)25
+b(is)f(also)h(usually)f(p)s(ossible)0 3613 y(to)38 b(do)e(the)h(rev)m
+(erse,)j(and)c(enclose)i(the)f(whole)g(expression)g(in)f(single)i
+(quotes)f(and)f(then)h(use)f(double)g(quotes)0 3726 y(within)d(the)g
+(expression.)50 b(The)33 b(gti\014le,)i(if)f(sp)s(eci\014ed,)f(can)h(b)
+s(e)f(blank)g(\(""\))i(whic)m(h)e(will)g(mean)h(to)g(use)f(the)h
+(\014rst)0 3839 y(extension)g(with)g(the)f(name)h("*GTI*")h(in)f(the)f
+(curren)m(t)h(\014le,)h(a)f(plain)f(extension)h(sp)s(eci\014er)f(\(eg,)
+j("+2",)g("[2]",)0 3952 y(or)30 b("[STDGTI]"\))i(whic)m(h)e(will)h(b)s
+(e)f(used)f(to)j(select)g(an)e(extension)h(in)f(the)h(curren)m(t)f
+(\014le,)h(or)f(a)h(regular)g(\014lename)0 4065 y(with)f(or)h(without)f
+(an)h(extension)g(sp)s(eci\014er)f(whic)m(h)g(in)g(the)h(latter)h(case)
+f(will)g(mean)f(to)i(use)e(the)h(\014rst)e(extension)0
+4178 y(with)37 b(an)g(extension)g(name)h("*GTI*".)62
+b(Expr)36 b(can)h(b)s(e)g(an)m(y)g(arithmetic)i(expression,)f
+(including)f(simply)g(the)0 4291 y(time)f(column)g(name.)57
+b(A)36 b(v)m(ector)h(time)g(expression)e(will)h(pro)s(duce)f(a)h(v)m
+(ector)h(b)s(o)s(olean)f(result.)57 b(ST)-8 b(AR)g(TCOL)0
+4404 y(and)27 b(STOPCOL)f(are)i(the)g(names)g(of)g(the)g(ST)-8
+b(AR)g(T/STOP)26 b(columns)i(in)f(the)h(GTI)g(extension.)41
+b(If)27 b(one)h(of)g(them)0 4517 y(is)i(sp)s(eci\014ed,)g(they)h(b)s
+(oth)f(m)m(ust)g(b)s(e.)0 4677 y(In)21 b(its)h(simplest)g(form,)i(no)d
+(parameters)h(need)g(to)h(b)s(e)e(pro)m(vided)g({)h(default)g(v)-5
+b(alues)22 b(will)h(b)s(e)e(used.)37 b(The)21 b(expression)0
+4790 y("gti\014lter\(\)")33 b(is)e(equiv)-5 b(alen)m(t)31
+b(to)334 5026 y Fe(gtifilter\()45 b("",)i(TIME,)f("*START*",)f
+("*STOP*")h(\))0 5262 y Fj(This)31 b(will)g(searc)m(h)h(the)g(curren)m
+(t)f(\014le)g(for)g(a)h(GTI)f(extension,)h(\014lter)g(the)f(TIME)g
+(column)g(in)g(the)h(curren)m(t)f(table,)0 5375 y(using)j(ST)-8
+b(AR)g(T/STOP)34 b(times)i(tak)m(en)f(from)g(columns)f(in)h(the)g(GTI)g
+(extension)g(with)g(names)f(con)m(taining)j(the)0 5488
+y(strings)32 b("ST)-8 b(AR)g(T")33 b(and)e("STOP".)46
+b(The)32 b(wildcards)f(\('*'\))j(allo)m(w)g(sligh)m(t)f(v)-5
+b(ariations)33 b(in)f(naming)g(con)m(v)m(en)m(tions)0
+5601 y(suc)m(h)38 b(as)g("TST)-8 b(AR)g(T")39 b(or)f("ST)-8
+b(AR)g(TTIME".)65 b(The)37 b(same)i(default)g(v)-5 b(alues)38
+b(apply)g(for)g(unsp)s(eci\014ed)f(parame-)0 5714 y(ters)f(when)f(the)h
+(\014rst)f(one)i(or)f(t)m(w)m(o)h(parameters)f(are)h(sp)s(eci\014ed.)56
+b(The)36 b(function)f(automatically)k(searc)m(hes)e(for)p
+eop end
+%%Page: 141 149
+TeXDict begin 141 148 bop 0 299 a Fh(10.11.)73 b(R)m(O)m(W)31
+b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(141)0
+555 y(TIMEZER)m(O/I/F)37 b(k)m(eyw)m(ords)f(in)g(the)h(curren)m(t)f
+(and)g(GTI)g(extensions,)i(applying)f(a)f(relativ)m(e)j(time)e
+(o\013set,)i(if)0 668 y(necessary)-8 b(.)0 958 y Fd(10.11.5)113
+b(Spatial)38 b(Region)g(Filtering)0 1177 y Fj(Another)g(common)g
+(\014ltering)g(metho)s(d)f(selects)i(ro)m(ws)f(based)g(on)f(whether)h
+(the)g(spatial)h(p)s(osition)e(asso)s(ciated)0 1290 y(with)32
+b(eac)m(h)i(ro)m(w)e(is)h(lo)s(cated)h(within)e(a)h(giv)m(en)g
+(2-dimensional)g(region.)48 b(The)32 b(syn)m(tax)h(for)f(this)h
+(high-lev)m(el)h(\014lter)0 1403 y(is)334 1659 y Fe(regfilter\()45
+b("regfilename")f([)k(,)f(Xexpr,)f(Yexpr)h([)g(,)h("wcs)e(cols")h(])g
+(])g(\))0 1915 y Fj(where)22 b(eac)m(h)i("[]")g(demarks)e(optional)i
+(parameters.)38 b(The)22 b(region)h(\014le)g(name)f(is)h(required)f
+(and)g(m)m(ust)g(b)s(e)g(enclosed)0 2028 y(in)34 b(quotes.)51
+b(The)33 b(remaining)h(parameters)h(are)f(optional.)52
+b(There)33 b(are)i(2)f(supp)s(orted)e(formats)i(for)f(the)h(region)0
+2141 y(\014le:)62 b(ASCI)s(I)39 b(\014le)h(or)h(FITS)f(binary)g(table.)
+73 b(The)40 b(region)h(\014le)g(con)m(tains)h(a)f(list)g(of)g(one)g(or)
+g(more)g(geometric)0 2254 y(shap)s(es)30 b(\(circle,)j(ellipse,)g(b)s
+(o)m(x,)e(etc.\))44 b(whic)m(h)31 b(de\014nes)f(a)i(region)g(on)f(the)g
+(celestial)j(sphere)c(or)h(an)g(area)h(within)f(a)0 2367
+y(particular)36 b(2D)g(image.)57 b(The)35 b(region)h(\014le)f(is)g(t)m
+(ypically)j(generated)e(using)f(an)g(image)i(displa)m(y)e(program)g
+(suc)m(h)0 2480 y(as)e(fv/PO)m(W)g(\(distribute)f(b)m(y)h(the)f(HEASAR)
+m(C\),)h(or)g(ds9)f(\(distributed)g(b)m(y)g(the)h(Smithsonian)f
+(Astroph)m(ysical)0 2593 y(Observ)-5 b(atory\).)69 b(Users)39
+b(should)g(refer)g(to)h(the)g(do)s(cumen)m(tation)h(pro)m(vided)e(with)
+g(these)h(programs)f(for)h(more)0 2706 y(details)29 b(on)f(the)g(syn)m
+(tax)h(used)e(in)h(the)h(region)f(\014les.)40 b(The)28
+b(FITS)f(region)i(\014le)f(format)h(is)f(de\014ned)f(in)h(a)g(do)s
+(cumen)m(t)0 2819 y(a)m(v)-5 b(ailable)33 b(from)d(the)g(FITS)g(Supp)s
+(ort)e(O\016ce)j(at)g(h)m(ttp://\014ts.gsfc.nasa.go)m(v/)k(registry/)c
+(region.h)m(tml)0 2979 y(In)21 b(its)h(simplest)g(form,)i(\(e.g.,)h
+(reg\014lter\("region.reg"\))h(\))c(the)g(co)s(ordinates)g(in)g(the)g
+(default)g('X')h(and)e('Y')h(columns)0 3092 y(will)43
+b(b)s(e)g(used)f(to)i(determine)f(if)g(eac)m(h)h(ro)m(w)f(is)g(inside)g
+(or)g(outside)g(the)g(area)h(sp)s(eci\014ed)e(in)h(the)g(region)h
+(\014le.)0 3204 y(Alternate)32 b(p)s(osition)e(column)g(names,)h(or)f
+(expressions,)h(ma)m(y)g(b)s(e)e(en)m(tered)i(if)g(needed,)f(as)h(in)
+382 3461 y Fe(regfilter\("region.reg",)41 b(XPOS,)47
+b(YPOS\))0 3717 y Fj(Region)37 b(\014ltering)f(can)g(b)s(e)f(applied)g
+(most)h(unam)m(biguously)f(if)h(the)g(p)s(ositions)g(in)f(the)h(region)
+g(\014le)g(and)f(in)h(the)0 3830 y(table)g(to)g(b)s(e)e(\014ltered)h
+(are)h(b)s(oth)e(giv)m(e)j(in)e(terms)g(of)g(absolute)h(celestial)i(co)
+s(ordinate)e(units.)54 b(In)35 b(this)g(case)h(the)0
+3943 y(lo)s(cations)26 b(and)d(sizes)i(of)g(the)f(geometric)i(shap)s
+(es)e(in)g(the)g(region)h(\014le)f(are)h(sp)s(eci\014ed)f(in)g(angular)
+g(units)g(on)g(the)g(sky)0 4056 y(\(e.g.,)32 b(p)s(ositions)e(giv)m(en)
+i(in)e(R.A.)g(and)g(Dec.)42 b(and)30 b(sizes)h(in)f(arcseconds)g(or)h
+(arcmin)m(utes\).)41 b(Similarly)-8 b(,)31 b(eac)m(h)h(ro)m(w)0
+4168 y(of)h(the)h(\014ltered)f(table)h(will)f(ha)m(v)m(e)i(a)e
+(celestial)j(co)s(ordinate)e(asso)s(ciated)g(with)f(it.)50
+b(This)32 b(asso)s(ciation)j(is)e(usually)0 4281 y(implemen)m(ted)39
+b(using)e(a)i(set)g(of)f(so-called)i('W)-8 b(orld)39
+b(Co)s(ordinate)g(System')f(\(or)h(W)m(CS\))f(FITS)g(k)m(eyw)m(ords)g
+(that)0 4394 y(de\014ne)27 b(the)g(co)s(ordinate)h(transformation)g
+(that)g(m)m(ust)f(b)s(e)f(applied)h(to)h(the)g(v)-5 b(alues)27
+b(in)g(the)h('X')g(and)e('Y')i(columns)0 4507 y(to)j(calculate)i(the)d
+(co)s(ordinate.)0 4667 y(Alternativ)m(ely)-8 b(,)30 b(one)d(can)g(p)s
+(erform)e(spatial)j(\014ltering)e(using)g(unitless)h('pixel')g(co)s
+(ordinates)h(for)e(the)h(regions)g(and)0 4780 y(ro)m(w)33
+b(p)s(ositions.)49 b(In)33 b(this)g(case)h(the)f(user)g(m)m(ust)g(b)s
+(e)f(careful)h(to)h(ensure)f(that)g(the)h(p)s(ositions)f(in)g(the)g(2)g
+(\014les)h(are)0 4893 y(self-consisten)m(t.)54 b(A)34
+b(t)m(ypical)i(problem)d(is)h(that)h(the)f(region)h(\014le)f(ma)m(y)h
+(b)s(e)e(generated)j(using)d(a)i(binned)d(image,)0 5006
+y(but)g(the)h(un)m(binned)e(co)s(ordinates)i(are)g(giv)m(en)h(in)e(the)
+h(ev)m(en)m(t)i(table.)48 b(The)32 b(R)m(OSA)-8 b(T)33
+b(ev)m(en)m(ts)h(\014les,)g(for)e(example,)0 5119 y(ha)m(v)m(e)f(X)f
+(and)f(Y)g(pixel)h(co)s(ordinates)g(that)h(range)f(from)f(1)h(-)g
+(15360.)42 b(These)30 b(co)s(ordinates)g(are)g(t)m(ypically)h(binned)0
+5232 y(b)m(y)i(a)h(factor)g(of)f(32)h(to)g(pro)s(duce)e(a)i(480x480)i
+(pixel)d(image.)51 b(If)32 b(one)i(then)f(uses)g(a)g(region)h(\014le)f
+(generated)h(from)0 5345 y(this)c(image)i(\(in)f(image)g(pixel)g
+(units\))g(to)g(\014lter)f(the)h(R)m(OSA)-8 b(T)30 b(ev)m(en)m(ts)i
+(\014le,)f(then)f(the)h(X)g(and)f(Y)g(column)h(v)-5 b(alues)0
+5458 y(m)m(ust)30 b(b)s(e)g(con)m(v)m(erted)i(to)f(corresp)s(onding)e
+(pixel)i(units)f(as)g(in:)382 5714 y Fe(regfilter\("rosat.reg",)42
+b(X/32.+.5,)j(Y/32.+.5\))p eop end
+%%Page: 142 150
+TeXDict begin 142 149 bop 0 299 a Fj(142)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fj(Note)46 b(that)f(this)f(binning)f(con)m(v)m(ersion)j(is)e(not)
+h(necessary)g(if)f(the)h(region)g(\014le)f(is)h(sp)s(eci\014ed)e(using)
+h(celestial)0 668 y(co)s(ordinate)h(units)f(instead)g(of)g(pixel)h
+(units)f(b)s(ecause)g(CFITSIO)e(is)j(then)e(able)i(to)g(directly)g
+(compare)g(the)0 781 y(celestial)30 b(co)s(ordinate)f(of)e(eac)m(h)i
+(ro)m(w)f(in)f(the)h(table)g(with)g(the)f(celestial)k(co)s(ordinates)d
+(in)f(the)h(region)g(\014le)g(without)0 894 y(ha)m(ving)j(to)g(kno)m(w)
+f(an)m(ything)h(ab)s(out)f(ho)m(w)h(the)f(image)i(ma)m(y)f(ha)m(v)m(e)g
+(b)s(een)f(binned.)0 1054 y(The)f(last)h("w)m(cs)g(cols")h(parameter)f
+(should)e(rarely)h(b)s(e)g(needed.)40 b(If)29 b(supplied,)f(this)i
+(string)f(con)m(tains)i(the)e(names)0 1167 y(of)37 b(the)g(2)h(columns)
+f(\(space)h(or)f(comma)g(separated\))h(whic)m(h)f(ha)m(v)m(e)h(the)g
+(asso)s(ciated)g(W)m(CS)f(k)m(eyw)m(ords.)61 b(If)37
+b(not)0 1280 y(supplied,)f(the)g(\014lter)g(will)h(scan)f(the)g(X)g
+(and)f(Y)h(expressions)g(for)g(column)f(names.)58 b(If)35
+b(only)h(one)h(is)f(found)e(in)0 1393 y(eac)m(h)e(expression,)e(those)h
+(columns)f(will)h(b)s(e)e(used,)h(otherwise)h(an)f(error)g(will)h(b)s
+(e)f(returned.)0 1553 y(These)g(region)h(shap)s(es)f(are)g(supp)s
+(orted)f(\(names)h(are)h(case)h(insensitiv)m(e\):)334
+1817 y Fe(Point)428 b(\()48 b(X1,)f(Y1)g(\))715 b(<-)48
+b(One)f(pixel)f(square)g(region)334 1930 y(Line)476 b(\()48
+b(X1,)f(Y1,)g(X2,)f(Y2)i(\))333 b(<-)48 b(One)f(pixel)f(wide)h(region)
+334 2043 y(Polygon)332 b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(...)g(\))95
+b(<-)48 b(Rest)e(are)h(interiors)e(with)334 2156 y(Rectangle)236
+b(\()48 b(X1,)f(Y1,)g(X2,)f(Y2,)h(A)h(\))334 b(|)47 b(boundaries)e
+(considered)334 2269 y(Box)524 b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)
+i(\))143 b(V)47 b(within)f(the)h(region)334 2382 y(Diamond)332
+b(\()48 b(Xc,)f(Yc,)g(Wdth,)f(Hght,)g(A)i(\))334 2494
+y(Circle)380 b(\()48 b(Xc,)f(Yc,)g(R)g(\))334 2607 y(Annulus)332
+b(\()48 b(Xc,)f(Yc,)g(Rin,)f(Rout)h(\))334 2720 y(Ellipse)332
+b(\()48 b(Xc,)f(Yc,)g(Rx,)f(Ry,)h(A)h(\))334 2833 y(Elliptannulus)c(\()
+k(Xc,)f(Yc,)g(Rinx,)f(Riny,)g(Routx,)g(Routy,)g(Ain,)h(Aout)g(\))334
+2946 y(Sector)380 b(\()48 b(Xc,)f(Yc,)g(Amin,)f(Amax)h(\))0
+3210 y Fj(where)28 b(\(Xc,Yc\))j(is)d(the)h(co)s(ordinate)h(of)e(the)h
+(shap)s(e's)f(cen)m(ter;)j(\(X#,Y#\))e(are)g(the)g(co)s(ordinates)g(of)
+g(the)g(shap)s(e's)0 3323 y(edges;)39 b(Rxxx)c(are)g(the)h(shap)s(es')f
+(v)-5 b(arious)35 b(Radii)h(or)f(semima)5 b(jor/minor)36
+b(axes;)i(and)d(Axxx)g(are)h(the)g(angles)g(of)0 3436
+y(rotation)d(\(or)e(b)s(ounding)f(angles)i(for)f(Sector\))h(in)f
+(degrees.)44 b(F)-8 b(or)32 b(rotated)h(shap)s(es,)e(the)g(rotation)i
+(angle)f(can)g(b)s(e)0 3549 y(left)g(o\013,)h(indicating)f(no)f
+(rotation.)46 b(Common)31 b(alternate)i(names)e(for)h(the)f(regions)h
+(can)g(also)h(b)s(e)d(used:)43 b(rotb)s(o)m(x)0 3662
+y(=)29 b(b)s(o)m(x;)g(rotrectangle)i(=)e(rectangle;)i(\(rot\)rhom)m
+(bus)e(=)f(\(rot\)diamond;)j(and)d(pie)h(=)f(sector.)42
+b(When)28 b(a)i(shap)s(e's)0 3775 y(name)e(is)g(preceded)f(b)m(y)h(a)g
+(min)m(us)g(sign,)g('-',)i(the)e(de\014ned)e(region)j(is)f(instead)g
+(the)g(area)h(*outside*)g(its)f(b)s(oundary)0 3888 y(\(ie,)36
+b(the)e(region)h(is)f(in)m(v)m(erted\).)53 b(All)34 b(the)g(shap)s(es)f
+(within)h(a)g(single)h(region)f(\014le)h(are)f(OR'd)f(together)j(to)e
+(create)0 4000 y(the)29 b(region,)i(and)d(the)i(order)f(is)g
+(signi\014can)m(t.)41 b(The)29 b(o)m(v)m(erall)i(w)m(a)m(y)g(of)e(lo)s
+(oking)h(at)g(region)g(\014les)f(is)g(that)h(if)f(the)h(\014rst)0
+4113 y(region)f(is)g(an)g(excluded)g(region)g(then)f(a)i(dumm)m(y)d
+(included)h(region)i(of)f(the)g(whole)g(detector)h(is)f(inserted)f(in)h
+(the)0 4226 y(fron)m(t.)40 b(Then)25 b(eac)m(h)j(region)f(sp)s
+(eci\014cation)h(as)f(it)g(is)g(pro)s(cessed)f(o)m(v)m(errides)h(an)m
+(y)g(selections)i(inside)d(of)h(that)g(region)0 4339
+y(sp)s(eci\014ed)36 b(b)m(y)g(previous)g(regions.)59
+b(Another)37 b(w)m(a)m(y)g(of)g(thinking)f(ab)s(out)g(this)g(is)h(that)
+g(if)f(a)h(previous)f(excluded)0 4452 y(region)31 b(is)f(completely)i
+(inside)f(of)f(a)h(subsequen)m(t)e(included)h(region)h(the)g(excluded)f
+(region)h(is)f(ignored.)0 4612 y(The)44 b(p)s(ositional)i(co)s
+(ordinates)g(ma)m(y)f(b)s(e)g(giv)m(en)h(either)f(in)g(pixel)g(units,)j
+(decimal)e(degrees)g(or)f(hh:mm:ss.s,)0 4725 y(dd:mm:ss.s)25
+b(units.)38 b(The)26 b(shap)s(e)f(sizes)i(ma)m(y)f(b)s(e)g(giv)m(en)h
+(in)e(pixels,)j(degrees,)f(arcmin)m(utes,)h(or)e(arcseconds.)40
+b(Lo)s(ok)0 4838 y(at)31 b(examples)g(of)f(region)h(\014le)g(pro)s
+(duced)d(b)m(y)i(fv/PO)m(W)h(or)g(ds9)f(for)g(further)f(details)i(of)g
+(the)f(region)h(\014le)f(format.)0 4998 y(There)h(are)g(three)h(lo)m
+(w-lev)m(el)i(functions)d(that)g(are)h(primarily)f(for)g(use)g(with)g
+(reg\014lter)g(function,)h(but)e(they)i(can)0 5111 y(b)s(e)j(called)i
+(directly)-8 b(.)59 b(They)35 b(return)g(a)h(b)s(o)s(olean)g(true)g(or)
+g(false)h(dep)s(ending)d(on)i(whether)f(a)i(t)m(w)m(o)g(dimensional)0
+5224 y(p)s(oin)m(t)30 b(is)h(in)f(the)g(region)h(or)g(not.)41
+b(The)30 b(p)s(ositional)h(co)s(ordinates)g(m)m(ust)f(b)s(e)g(giv)m(en)
+h(in)f(pixel)h(units:)191 5488 y Fe("point)46 b(in)h(a)h(circular)d
+(region")477 5601 y(circle\(xcntr,ycntr,radius)o(,Xco)o(lumn)o(,Yc)o
+(olum)o(n\))p eop end
+%%Page: 143 151
+TeXDict begin 143 150 bop 0 299 a Fh(10.11.)73 b(R)m(O)m(W)31
+b(FIL)-8 b(TERING)31 b(SPECIFICA)-8 b(TION)1936 b Fj(143)191
+555 y Fe("point)46 b(in)h(an)g(elliptical)e(region")430
+668 y(ellipse\(xcntr,ycntr,xhl)o(f_w)o(dth,)o(yhlf)o(_wd)o(th,r)o(otat)
+o(ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191 894 y("point)h(in)h(a)h
+(rectangular)c(region")620 1007 y(box\(xcntr,ycntr,xfll_wdth,)o(yfll)o
+(_wd)o(th,r)o(otat)o(ion)o(,Xco)o(lumn)o(,Yc)o(olum)o(n\))191
+1233 y(where)334 1346 y(\(xcntr,ycntr\))g(are)j(the)g(\(x,y\))f
+(position)g(of)h(the)g(center)f(of)h(the)g(region)334
+1458 y(\(xhlf_wdth,yhlf_wdth\))42 b(are)47 b(the)g(\(x,y\))f(half)h
+(widths)f(of)h(the)g(region)334 1571 y(\(xfll_wdth,yfll_wdth\))42
+b(are)47 b(the)g(\(x,y\))f(full)h(widths)f(of)h(the)g(region)334
+1684 y(\(radius\))f(is)h(half)f(the)h(diameter)f(of)h(the)g(circle)334
+1797 y(\(rotation\))e(is)i(the)g(angle\(degrees\))d(that)j(the)g
+(region)f(is)h(rotated)f(with)620 1910 y(respect)g(to)h
+(\(xcntr,ycntr\))334 2023 y(\(Xcoord,Ycoord\))d(are)j(the)g(\(x,y\))f
+(coordinates)f(to)i(test,)f(usually)g(column)620 2136
+y(names)334 2249 y(NOTE:)g(each)h(parameter)e(can)i(itself)f(be)i(an)f
+(expression,)d(not)j(merely)f(a)620 2362 y(column)h(name)f(or)h
+(constant.)0 2669 y Fd(10.11.6)113 b(Example)38 b(Ro)m(w)f(Filters)191
+2891 y Fe([)47 b(binary)f(&&)i(mag)f(<=)g(5.0])380 b(-)48
+b(Extract)e(all)h(binary)f(stars)g(brighter)1766 3004
+y(than)94 b(fifth)47 b(magnitude)e(\(note)h(that)1766
+3117 y(the)h(initial)f(space)g(is)h(necessary)e(to)1766
+3230 y(prevent)h(it)h(from)g(being)f(treated)g(as)h(a)1766
+3343 y(binning)f(specification\))191 3569 y([#row)g(>=)h(125)g(&&)h
+(#row)e(<=)h(175])142 b(-)48 b(Extract)e(row)h(numbers)e(125)i(through)
+f(175)191 3794 y([IMAGE[4,5])f(.gt.)h(100])476 b(-)48
+b(Extract)e(all)h(rows)f(that)h(have)g(the)1766 3907
+y(\(4,5\))f(component)g(of)h(the)g(IMAGE)f(column)1766
+4020 y(greater)g(than)g(100)191 4246 y([abs\(sin\(theta)e(*)j(#deg\)\))
+f(<)i(0.5])e(-)i(Extract)e(all)h(rows)f(having)g(the)1766
+4359 y(absolute)f(value)i(of)g(the)g(sine)g(of)g(theta)1766
+4472 y(less)94 b(than)47 b(a)g(half)g(where)f(the)h(angles)1766
+4585 y(are)g(tabulated)e(in)i(degrees)191 4811 y([SUM\()f(SPEC)h(>)g
+(3*BACKGRND)e(\)>=1])94 b(-)48 b(Extract)e(all)h(rows)f(containing)f(a)
+1766 4924 y(spectrum,)g(held)i(in)g(vector)f(column)1766
+5036 y(SPEC,)g(with)h(at)g(least)f(one)h(value)g(3)1766
+5149 y(times)f(greater)g(than)h(the)g(background)1766
+5262 y(level)f(held)h(in)g(a)h(keyword,)d(BACKGRND)191
+5488 y([VCOL=={1,4,2}])759 b(-)48 b(Extract)e(all)h(rows)f(whose)h
+(vector)f(column)1766 5601 y(VCOL)h(contains)e(the)i(3-elements)e(1,)i
+(4,)g(and)1766 5714 y(2.)p eop end
+%%Page: 144 152
+TeXDict begin 144 151 bop 0 299 a Fj(144)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)191
+668 y Fe([@rowFilter.txt])711 b(-)48 b(Extract)e(rows)g(using)h(the)g
+(expression)1766 781 y(contained)e(within)h(the)h(text)g(file)1766
+894 y(rowFilter.txt)191 1120 y([gtifilter\(\)])855 b(-)48
+b(Search)e(the)h(current)f(file)g(for)h(a)h(GTI)239 1233
+y(extension,)92 b(filter)i(the)47 b(TIME)239 1346 y(column)f(in)h(the)g
+(current)f(table,)g(using)239 1458 y(START/STOP)f(times)h(taken)g(from)
+239 1571 y(columns)f(in)j(the)f(GTI)94 b(extension)191
+1797 y([regfilter\("pow.reg"\)])423 b(-)48 b(Extract)e(rows)g(which)h
+(have)f(a)i(coordinate)1766 1910 y(\(as)f(given)f(in)h(the)g(X)h(and)f
+(Y)g(columns\))1766 2023 y(within)f(the)h(spatial)f(region)g(specified)
+1766 2136 y(in)h(the)g(pow.reg)f(region)g(file.)191 2362
+y([regfilter\("pow.reg",)c(Xs,)47 b(Ys\)])f(-)i(Same)f(as)g(above,)f
+(except)g(that)h(the)1766 2475 y(Xs)g(and)g(Ys)g(columns)f(will)h(be)g
+(used)f(to)1766 2588 y(determine)f(the)i(coordinate)e(of)i(each)1766
+2700 y(row)g(in)g(the)g(table.)0 3027 y Ff(10.12)181
+b(Binning)44 b(or)h(Histogramming)i(Sp)t(eci\014cation)0
+3277 y Fj(The)22 b(optional)i(binning)e(sp)s(eci\014er)g(is)h(enclosed)
+h(in)f(square)f(brac)m(k)m(ets)j(and)d(can)h(b)s(e)f(distinguished)g
+(from)h(a)g(general)0 3390 y(ro)m(w)32 b(\014lter)h(sp)s(eci\014cation)
+g(b)m(y)f(the)h(fact)g(that)g(it)g(b)s(egins)f(with)g(the)g(k)m(eyw)m
+(ord)h('bin')f(not)h(immediately)g(follo)m(w)m(ed)0 3503
+y(b)m(y)41 b(an)f(equals)i(sign.)72 b(When)41 b(binning)e(is)i(sp)s
+(eci\014ed,)i(a)e(temp)s(orary)g(N-dimensional)g(FITS)f(primary)g(arra)
+m(y)0 3615 y(is)j(created)h(b)m(y)f(computing)h(the)f(histogram)h(of)f
+(the)g(v)-5 b(alues)44 b(in)e(the)i(sp)s(eci\014ed)e(columns)h(of)g(a)h
+(FITS)e(table)0 3728 y(extension.)f(After)30 b(the)f(histogram)h(is)g
+(computed)f(the)h(input)e(FITS)h(\014le)h(con)m(taining)h(the)e(table)i
+(is)e(then)g(closed)0 3841 y(and)34 b(the)h(temp)s(orary)f(FITS)g
+(primary)g(arra)m(y)h(is)g(op)s(ened)f(and)g(passed)g(to)h(the)g
+(application)h(program.)54 b(Th)m(us,)0 3954 y(the)39
+b(application)h(program)f(nev)m(er)g(sees)g(the)g(original)h(FITS)e
+(table)i(and)e(only)h(sees)h(the)f(image)h(in)e(the)h(new)0
+4067 y(temp)s(orary)32 b(\014le)h(\(whic)m(h)g(has)f(no)h(additional)g
+(extensions\).)49 b(Ob)m(viously)-8 b(,)34 b(the)f(application)h
+(program)e(m)m(ust)h(b)s(e)0 4180 y(exp)s(ecting)e(to)g(op)s(en)f(a)h
+(FITS)e(image)j(and)e(not)g(a)h(FITS)f(table)h(in)f(this)g(case.)0
+4340 y(The)g(data)h(t)m(yp)s(e)f(of)h(the)f(FITS)g(histogram)g(image)i
+(ma)m(y)f(b)s(e)f(sp)s(eci\014ed)f(b)m(y)h(app)s(ending)f('b')h(\(for)h
+(8-bit)g(b)m(yte\),)g('i')0 4453 y(\(for)g(16-bit)g(in)m(tegers\),)h
+('j')f(\(for)g(32-bit)g(in)m(teger\),)i('r')d(\(for)h(32-bit)g
+(\015oating)h(p)s(oin)m(ts\),)e(or)h('d')f(\(for)h(64-bit)g(double)0
+4566 y(precision)j(\015oating)i(p)s(oin)m(t\))e(to)h(the)g('bin')f(k)m
+(eyw)m(ord)h(\(e.g.)54 b('[binr)33 b(X]')i(creates)h(a)f(real)g
+(\015oating)g(p)s(oin)m(t)f(image\).)0 4679 y(If)g(the)i(data)f(t)m(yp)
+s(e)g(is)g(not)h(explicitly)g(sp)s(eci\014ed)e(then)h(a)g(32-bit)i(in)m
+(teger)f(image)g(will)f(b)s(e)g(created)h(b)m(y)e(default,)0
+4792 y(unless)24 b(the)i(w)m(eigh)m(ting)g(option)g(is)f(also)h(sp)s
+(eci\014ed)e(in)h(whic)m(h)g(case)h(the)f(image)i(will)e(ha)m(v)m(e)h
+(a)g(32-bit)g(\015oating)g(p)s(oin)m(t)0 4905 y(data)31
+b(t)m(yp)s(e)g(b)m(y)f(default.)0 5065 y(The)24 b(histogram)g(image)i
+(ma)m(y)f(ha)m(v)m(e)g(from)f(1)g(to)h(4)g(dimensions)e(\(axes\),)k
+(dep)s(ending)c(on)h(the)g(n)m(um)m(b)s(er)f(of)h(columns)0
+5178 y(that)31 b(are)g(sp)s(eci\014ed.)40 b(The)30 b(general)h(form)f
+(of)g(the)h(binning)e(sp)s(eci\014cation)i(is:)48 5389
+y Fe([bin{bijrd})92 b(Xcol=min:max:binsize,)42 b(Ycol=)47
+b(...,)f(Zcol=...,)f(Tcol=...;)h(weight])0 5601 y Fj(in)39
+b(whic)m(h)g(up)f(to)i(4)g(columns,)h(eac)m(h)f(corresp)s(onding)e(to)i
+(an)g(axis)f(of)h(the)f(image,)k(are)d(listed.)67 b(The)39
+b(column)0 5714 y(names)27 b(are)h(case)h(insensitiv)m(e,)g(and)e(the)h
+(column)f(n)m(um)m(b)s(er)f(ma)m(y)i(b)s(e)f(giv)m(en)h(instead)g(of)g
+(the)g(name,)g(preceded)f(b)m(y)p eop end
+%%Page: 145 153
+TeXDict begin 145 152 bop 0 299 a Fh(10.12.)113 b(BINNING)32
+b(OR)e(HISTOGRAMMING)g(SPECIFICA)-8 b(TION)1223 b Fj(145)0
+555 y(a)32 b(p)s(ound)e(sign)i(\(e.g.,)i([bin)d(#4=1:512]\).)47
+b(If)31 b(the)h(column)g(name)g(is)f(not)h(sp)s(eci\014ed,)g(then)f
+(CFITSIO)g(will)h(\014rst)0 668 y(try)37 b(to)h(use)f(the)g('preferred)
+f(column')i(as)f(sp)s(eci\014ed)g(b)m(y)g(the)g(CPREF)g(k)m(eyw)m(ord)h
+(if)f(it)g(exists)h(\(e.g.,)j('CPREF)0 781 y(=)i('DETX,DETY'\),)h
+(otherwise)g(column)f(names)g('X',)h('Y',)g('Z',)f(and)f('T')i(will)f
+(b)s(e)f(assumed)h(for)g(eac)m(h)h(of)0 894 y(the)37
+b(4)h(axes,)i(resp)s(ectiv)m(ely)-8 b(.)62 b(In)37 b(cases)h(where)e
+(the)i(column)f(name)g(could)g(b)s(e)f(confused)h(with)g(an)g
+(arithmetic)0 1007 y(expression,)30 b(enclose)i(the)f(column)f(name)g
+(in)g(paren)m(theses)h(to)g(force)g(the)f(name)h(to)g(b)s(e)f(in)m
+(terpreted)g(literally)-8 b(.)0 1167 y(Eac)m(h)33 b(column)f(name)g(ma)
+m(y)h(b)s(e)f(follo)m(w)m(ed)h(b)m(y)g(an)f(equals)g(sign)h(and)e(then)
+h(the)g(lo)m(w)m(er)i(and)e(upp)s(er)e(range)i(of)h(the)0
+1280 y(histogram,)f(and)e(the)h(size)h(of)f(the)g(histogram)h(bins,)e
+(separated)h(b)m(y)g(colons.)43 b(Spaces)31 b(are)g(allo)m(w)m(ed)i(b)s
+(efore)e(and)0 1393 y(after)e(the)g(equals)g(sign)f(but)g(not)h(within)
+f(the)h('min:max:binsize')g(string.)40 b(The)29 b(min,)f(max)h(and)f
+(binsize)h(v)-5 b(alues)0 1506 y(ma)m(y)32 b(b)s(e)e(in)m(teger)i(or)f
+(\015oating)h(p)s(oin)m(t)f(n)m(um)m(b)s(ers,)f(or)h(they)g(ma)m(y)g(b)
+s(e)g(the)g(names)g(of)g(k)m(eyw)m(ords)g(in)g(the)g(header)g(of)0
+1619 y(the)g(table.)41 b(If)30 b(the)h(latter,)h(then)e(the)g(v)-5
+b(alue)31 b(of)g(that)g(k)m(eyw)m(ord)f(is)h(substituted)f(in)m(to)h
+(the)g(expression.)0 1779 y(Default)37 b(v)-5 b(alues)36
+b(for)g(the)g(min,)h(max)f(and)g(binsize)g(quan)m(tities)h(will)f(b)s
+(e)f(used)h(if)f(not)i(explicitly)g(giv)m(en)g(in)f(the)0
+1892 y(binning)29 b(expression)h(as)h(sho)m(wn)f(in)g(these)h
+(examples:)191 2118 y Fe([bin)47 b(x)g(=)g(:512:2])94
+b(-)47 b(use)g(default)f(minimum)g(value)191 2231 y([bin)h(x)g(=)g
+(1::2])190 b(-)47 b(use)g(default)f(maximum)g(value)191
+2344 y([bin)h(x)g(=)g(1:512])142 b(-)47 b(use)g(default)f(bin)h(size)
+191 2457 y([bin)g(x)g(=)g(1:])286 b(-)47 b(use)g(default)f(maximum)g
+(value)g(and)h(bin)g(size)191 2570 y([bin)g(x)g(=)g(:512])190
+b(-)47 b(use)g(default)f(minimum)g(value)g(and)h(bin)g(size)191
+2682 y([bin)g(x)g(=)g(2])334 b(-)47 b(use)g(default)f(minimum)g(and)h
+(maximum)f(values)191 2795 y([bin)h(x])524 b(-)47 b(use)g(default)f
+(minimum,)g(maximum)g(and)g(bin)h(size)191 2908 y([bin)g(4])524
+b(-)47 b(default)f(2-D)h(image,)f(bin)h(size)g(=)g(4)h(in)f(both)g
+(axes)191 3021 y([bin])619 b(-)47 b(default)f(2-D)h(image)0
+3247 y Fj(CFITSIO)31 b(will)i(use)f(the)h(v)-5 b(alue)33
+b(of)g(the)g(TLMINn,)f(TLMAXn,)h(and)f(TDBINn)h(k)m(eyw)m(ords,)h(if)e
+(they)h(exist,)h(for)0 3360 y(the)j(default)f(min,)i(max,)g(and)e
+(binsize,)i(resp)s(ectiv)m(ely)-8 b(.)61 b(If)36 b(they)h(do)f(not)h
+(exist)g(then)f(CFITSIO)f(will)i(use)f(the)0 3473 y(actual)d(minim)m
+(um)e(and)h(maxim)m(um)g(v)-5 b(alues)32 b(in)g(the)g(column)f(for)h
+(the)g(histogram)h(min)e(and)h(max)g(v)-5 b(alues.)45
+b(The)0 3586 y(default)34 b(binsize)f(will)h(b)s(e)f(set)h(to)h(1,)g
+(or)e(\(max)h(-)g(min\))f(/)h(10.,)i(whic)m(hev)m(er)e(is)g(smaller,)h
+(so)e(that)i(the)e(histogram)0 3699 y(will)e(ha)m(v)m(e)g(at)g(least)h
+(10)f(bins)f(along)h(eac)m(h)h(axis.)0 3859 y(A)41 b(shortcut)g
+(notation)h(is)f(allo)m(w)m(ed)i(if)e(all)h(the)f(columns/axes)h(ha)m
+(v)m(e)g(the)f(same)g(binning)f(sp)s(eci\014cation.)74
+b(In)0 3972 y(this)33 b(case)g(all)h(the)f(column)f(names)h(ma)m(y)g(b)
+s(e)f(listed)h(within)f(paren)m(theses,)i(follo)m(w)m(ed)h(b)m(y)d(the)
+h(\(single\))h(binning)0 4085 y(sp)s(eci\014cation,)d(as)g(in:)191
+4311 y Fe([bin)47 b(\(X,Y\)=1:512:2])191 4424 y([bin)g(\(X,Y\))f(=)h
+(5])0 4650 y Fj(The)31 b(optional)i(w)m(eigh)m(ting)h(factor)e(is)g
+(the)g(last)g(item)h(in)e(the)h(binning)f(sp)s(eci\014er)g(and,)h(if)f
+(presen)m(t,)i(is)e(separated)0 4763 y(from)38 b(the)g(list)h(of)f
+(columns)g(b)m(y)g(a)h(semi-colon.)65 b(As)39 b(the)f(histogram)h(is)f
+(accum)m(ulated,)k(this)c(w)m(eigh)m(t)i(is)e(used)0
+4876 y(to)d(incremen)m(ted)f(the)g(v)-5 b(alue)35 b(of)f(the)g
+(appropriated)f(bin)h(in)f(the)h(histogram.)52 b(If)34
+b(the)g(w)m(eigh)m(ting)i(factor)f(is)f(not)0 4989 y(sp)s(eci\014ed,)24
+b(then)f(the)g(default)g(w)m(eigh)m(t)i(=)d(1)i(is)f(assumed.)37
+b(The)23 b(w)m(eigh)m(ting)i(factor)f(ma)m(y)f(b)s(e)g(a)g(constan)m(t)
+i(in)m(teger)f(or)0 5102 y(\015oating)30 b(p)s(oin)m(t)f(n)m(um)m(b)s
+(er,)f(or)h(the)g(name)g(of)g(a)g(k)m(eyw)m(ord)h(con)m(taining)g(the)g
+(w)m(eigh)m(ting)g(v)-5 b(alue.)41 b(Or)28 b(the)h(w)m(eigh)m(ting)0
+5215 y(factor)g(ma)m(y)g(b)s(e)e(the)h(name)g(of)h(a)f(table)h(column)f
+(in)g(whic)m(h)f(case)j(the)e(v)-5 b(alue)28 b(in)g(that)h(column,)f
+(on)g(a)h(ro)m(w)f(b)m(y)g(ro)m(w)0 5328 y(basis,)i(will)h(b)s(e)f
+(used.)0 5488 y(In)35 b(some)h(cases,)i(the)d(column)h(or)f(k)m(eyw)m
+(ord)h(ma)m(y)g(giv)m(e)h(the)f(recipro)s(cal)g(of)g(the)g(actual)h(w)m
+(eigh)m(t)g(v)-5 b(alue)36 b(that)g(is)0 5601 y(needed.)49
+b(In)32 b(this)h(case,)i(precede)e(the)h(w)m(eigh)m(t)g(k)m(eyw)m(ord)g
+(or)f(column)g(name)g(b)m(y)g(a)g(slash)g('/')h(to)g(tell)g(CFITSIO)0
+5714 y(to)d(use)f(the)h(recipro)s(cal)g(of)f(the)h(v)-5
+b(alue)31 b(when)e(constructing)i(the)g(histogram.)p
+eop end
+%%Page: 146 154
+TeXDict begin 146 153 bop 0 299 a Fj(146)1528 b Fh(CHAPTER)29
+b(10.)113 b(EXTENDED)30 b(FILE)h(NAME)f(SYNT)-8 b(AX)0
+555 y Fj(F)g(or)25 b(complex)g(or)f(commonly)g(used)g(histograms,)i
+(one)e(can)h(also)g(place)g(its)f(description)g(in)m(to)h(a)g(text)g
+(\014le)f(and)g(im-)0 668 y(p)s(ort)e(it)g(in)m(to)h(the)g(binning)e
+(sp)s(eci\014cation)i(using)e(the)i(syn)m(tax)f([bin)g
+(@\014lename.txt].)39 b(The)22 b(\014le's)g(con)m(ten)m(ts)i(can)e(ex-)
+0 781 y(tend)h(o)m(v)m(er)i(m)m(ultiple)f(lines,)h(although)f(it)g(m)m
+(ust)f(still)h(conform)f(to)h(the)g(no-spaces)g(rule)f(for)g(the)h
+(min:max:binsize)0 894 y(syn)m(tax)35 b(and)f(eac)m(h)h(axis)g(sp)s
+(eci\014cation)h(m)m(ust)e(still)h(b)s(e)f(comma-separated.)55
+b(An)m(y)34 b(lines)h(in)f(the)h(external)g(text)0 1007
+y(\014le)27 b(that)g(b)s(egin)g(with)f(2)i(slash)e(c)m(haracters)j
+(\('//'\))g(will)e(b)s(e)f(ignored)h(and)f(ma)m(y)i(b)s(e)e(used)g(to)i
+(add)e(commen)m(ts)i(in)m(to)0 1120 y(the)j(\014le.)0
+1280 y(Examples:)191 1540 y Fe([bini)46 b(detx,)h(dety])762
+b(-)47 b(2-D,)g(16-bit)f(integer)g(histogram)1861 1653
+y(of)i(DETX)e(and)h(DETY)g(columns,)e(using)1861 1766
+y(default)h(values)g(for)h(the)g(histogram)1861 1878
+y(range)g(and)g(binsize)191 2104 y([bin)g(\(detx,)f(dety\)=16;)f
+(/exposure])g(-)i(2-D,)g(32-bit)f(real)h(histogram)e(of)i(DETX)1861
+2217 y(and)g(DETY)g(columns)f(with)g(a)i(bin)f(size)f(=)i(16)1861
+2330 y(in)g(both)e(axes.)h(The)f(histogram)g(values)1861
+2443 y(are)h(divided)f(by)h(the)g(EXPOSURE)f(keyword)1861
+2556 y(value.)191 2782 y([bin)h(time=TSTART:TSTOP:0.1])280
+b(-)47 b(1-D)g(lightcurve,)e(range)h(determined)f(by)1861
+2895 y(the)i(TSTART)f(and)h(TSTOP)g(keywords,)1861 3008
+y(with)g(0.1)g(unit)g(size)f(bins.)191 3233 y([bin)h(pha,)f
+(time=8000.:8100.:0.1])90 b(-)47 b(2-D)g(image)g(using)f(default)g
+(binning)1861 3346 y(of)i(the)e(PHA)h(column)f(for)h(the)g(X)h(axis,)
+1861 3459 y(and)f(1000)g(bins)g(in)g(the)g(range)1861
+3572 y(8000.)g(to)g(8100.)f(for)h(the)g(Y)h(axis.)191
+3798 y([bin)f(@binFilter.txt])616 b(-)47 b(Use)g(the)g(contents)f(of)h
+(the)g(text)f(file)1861 3911 y(binFilter.txt)f(for)h(the)h(binning)1861
+4024 y(specifications.)p eop end
+%%Page: 147 155
+TeXDict begin 147 154 bop 0 1225 a Fg(Chapter)65 b(11)0
+1687 y Fm(T)-19 b(emplate)76 b(Files)0 2180 y Fj(When)38
+b(a)h(new)f(FITS)g(\014le)h(is)g(created)g(with)g(a)f(call)i(to)g
+(\014ts)p 2101 2180 28 4 v 32 w(create)p 2369 2180 V
+35 w(\014le,)g(the)f(name)g(of)g(a)g(template)h(\014le)e(ma)m(y)0
+2293 y(b)s(e)h(supplied)g(in)h(paren)m(theses)g(immediately)h(follo)m
+(wing)g(the)g(name)f(of)g(the)g(new)f(\014le)h(to)h(b)s(e)e(created.)71
+b(This)0 2406 y(template)27 b(is)e(used)g(to)h(de\014ne)f(the)h
+(structure)f(of)h(one)f(or)h(more)g(HDUs)g(in)f(the)h(new)f(\014le.)39
+b(The)25 b(template)i(\014le)e(ma)m(y)0 2518 y(b)s(e)32
+b(another)h(FITS)f(\014le,)i(in)f(whic)m(h)f(case)i(the)f(newly)g
+(created)h(\014le)f(will)g(ha)m(v)m(e)h(exactly)h(the)e(same)g(k)m(eyw)
+m(ords)g(in)0 2631 y(eac)m(h)25 b(HDU)g(as)g(in)f(the)g(template)i
+(FITS)d(\014le,)j(but)d(all)j(the)e(data)h(units)e(will)i(b)s(e)f
+(\014lled)g(with)f(zeros.)40 b(The)24 b(template)0 2744
+y(\014le)i(ma)m(y)h(also)g(b)s(e)e(an)h(ASCI)s(I)e(text)j(\014le,)g
+(where)f(eac)m(h)h(line)f(\(in)g(general\))i(describ)s(es)d(one)h(FITS)
+f(k)m(eyw)m(ord)i(record.)0 2857 y(The)j(format)h(of)f(the)h(ASCI)s(I)e
+(template)i(\014le)g(is)f(describ)s(ed)f(in)i(the)f(follo)m(wing)i
+(sections.)0 3188 y Ff(11.1)136 b(Detailed)46 b(T)-11
+b(emplate)46 b(Line)f(F)-11 b(ormat)0 3438 y Fj(The)30
+b(format)h(of)f(eac)m(h)i(ASCI)s(I)c(template)k(line)f(closely)h(follo)
+m(ws)f(the)g(format)g(of)f(a)h(FITS)f(k)m(eyw)m(ord)g(record:)95
+3682 y Fe(KEYWORD)46 b(=)i(KEYVALUE)d(/)j(COMMENT)0 3926
+y Fj(except)22 b(that)g(free)g(format)f(ma)m(y)h(b)s(e)f(used)f
+(\(e.g.,)25 b(the)d(equals)f(sign)h(ma)m(y)f(app)s(ear)g(at)h(an)m(y)g
+(p)s(osition)f(in)g(the)h(line\))g(and)0 4039 y(T)-8
+b(AB)34 b(c)m(haracters)g(are)g(allo)m(w)m(ed)h(and)e(are)g(treated)h
+(the)g(same)f(as)h(space)f(c)m(haracters.)51 b(The)33
+b(KEYV)-10 b(ALUE)33 b(and)0 4152 y(COMMENT)d(\014elds)g(are)h
+(optional.)43 b(The)30 b(equals)h(sign)f(c)m(haracter)j(is)d(also)i
+(optional,)g(but)e(it)h(is)f(recommended)0 4264 y(that)42
+b(it)f(b)s(e)g(included)f(for)h(clarit)m(y)-8 b(.)75
+b(An)m(y)41 b(template)i(line)e(that)h(b)s(egins)f(with)f(the)i(p)s
+(ound)d('#')i(c)m(haracter)i(is)0 4377 y(ignored)30 b(b)m(y)h(the)f
+(template)i(parser)e(and)g(ma)m(y)h(b)s(e)e(use)h(to)h(insert)g(commen)
+m(ts)g(in)m(to)g(the)g(template)h(\014le)e(itself.)0
+4538 y(The)c(KEYW)m(ORD)g(name)g(\014eld)g(is)g(limited)h(to)g(8)f(c)m
+(haracters)h(in)f(length)h(and)e(only)h(the)g(letters)i(A-Z,)e(digits)h
+(0-9,)0 4650 y(and)h(the)g(h)m(yphen)f(and)h(underscore)g(c)m
+(haracters)h(ma)m(y)g(b)s(e)f(used,)g(without)h(an)m(y)f(em)m(b)s
+(edded)g(spaces.)40 b(Lo)m(w)m(ercase)0 4763 y(letters)22
+b(in)f(the)h(template)g(k)m(eyw)m(ord)g(name)f(will)g(b)s(e)g(con)m(v)m
+(erted)i(to)f(upp)s(ercase.)36 b(Leading)22 b(spaces)f(in)g(the)h
+(template)0 4876 y(line)k(preceding)g(the)f(k)m(eyw)m(ord)h(name)g(are)
+g(generally)h(ignored,)g(except)f(if)g(the)g(\014rst)f(8)h(c)m
+(haracters)h(of)f(a)g(template)0 4989 y(line)f(are)h(all)g(blank,)g
+(then)f(the)g(en)m(tire)h(line)g(is)f(treated)h(as)f(a)h(FITS)e(commen)
+m(t)i(k)m(eyw)m(ord)g(\(with)f(a)h(blank)e(k)m(eyw)m(ord)0
+5102 y(name\))31 b(and)f(is)g(copied)h(v)m(erbatim)g(in)m(to)g(the)g
+(FITS)e(header.)0 5262 y(The)37 b(KEYV)-10 b(ALUE)37
+b(\014eld)g(ma)m(y)h(ha)m(v)m(e)g(an)m(y)g(allo)m(w)m(ed)h(FITS)e(data)
+h(t)m(yp)s(e:)54 b(c)m(haracter)39 b(string,)h(logical,)h(in)m(teger,)0
+5375 y(real,)34 b(complex)f(in)m(teger,)i(or)d(complex)i(real.)47
+b(The)32 b(c)m(haracter)j(string)d(v)-5 b(alues)33 b(need)f(not)h(b)s
+(e)f(enclosed)h(in)f(single)0 5488 y(quote)d(c)m(haracters)h(unless)e
+(they)g(are)h(necessary)g(to)g(distinguish)e(the)i(string)f(from)g(a)h
+(di\013eren)m(t)g(data)g(t)m(yp)s(e)f(\(e.g.)0 5601 y(2.0)h(is)e(a)h
+(real)h(but)e('2.0')i(is)f(a)g(string\).)40 b(The)27
+b(k)m(eyw)m(ord)h(has)f(an)h(unde\014ned)d(\(n)m(ull\))j(v)-5
+b(alue)29 b(if)e(the)h(template)h(record)0 5714 y(only)h(con)m(tains)i
+(blanks)e(follo)m(wing)i(the)e("=")h(or)g(b)s(et)m(w)m(een)g(the)f("=")
+h(and)f(the)g("/")i(commen)m(t)g(\014eld)d(delimiter.)1882
+5942 y(147)p eop end
+%%Page: 148 156
+TeXDict begin 148 155 bop 0 299 a Fj(148)2250 b Fh(CHAPTER)29
+b(11.)72 b(TEMPLA)-8 b(TE)30 b(FILES)0 555 y Fj(String)c(k)m(eyw)m(ord)
+h(v)-5 b(alues)27 b(longer)g(than)f(68)h(c)m(haracters)h(\(the)f(maxim)
+m(um)f(length)h(that)g(will)g(\014t)f(in)g(a)h(single)g(FITS)0
+668 y(k)m(eyw)m(ord)41 b(record\))g(are)g(p)s(ermitted)f(using)g(the)h
+(CFITSIO)e(long)i(string)g(con)m(v)m(en)m(tion.)74 b(They)40
+b(can)h(either)g(b)s(e)0 781 y(sp)s(eci\014ed)28 b(as)i(a)f(single)h
+(long)f(line)h(in)e(the)i(template,)h(or)e(b)m(y)f(using)h(m)m(ultiple)
+h(lines)f(where)f(the)i(con)m(tin)m(uing)g(lines)0 894
+y(con)m(tain)i(the)e('CONTINUE')g(k)m(eyw)m(ord,)h(as)g(in)f(this)g
+(example:)95 1139 y Fe(LONGKEY)46 b(=)i('This)e(is)h(a)h(long)e(string)
+g(value)h(that)f(is)i(contin&')95 1252 y(CONTINUE)94
+b('ued)46 b(over)h(2)g(records')f(/)h(comment)f(field)h(goes)f(here)0
+1497 y Fj(The)29 b(format)h(of)g(template)h(lines)e(with)h(CONTINUE)e
+(k)m(eyw)m(ord)i(is)g(v)m(ery)g(strict:)41 b(3)30 b(spaces)g(m)m(ust)f
+(follo)m(w)i(CON-)0 1610 y(TINUE)f(and)g(the)g(rest)h(of)f(the)h(line)g
+(is)f(copied)h(v)m(erbatim)g(to)g(the)g(FITS)e(\014le.)0
+1771 y(The)i(start)h(of)g(the)f(optional)i(COMMENT)e(\014eld)g(m)m(ust)
+h(b)s(e)e(preceded)i(b)m(y)f("/",)i(whic)m(h)e(is)h(used)f(to)h
+(separate)g(it)0 1883 y(from)e(the)g(k)m(eyw)m(ord)h(v)-5
+b(alue)30 b(\014eld.)41 b(Exceptions)30 b(are)h(if)f(the)h(KEYW)m(ORD)g
+(name)f(\014eld)g(con)m(tains)h(COMMENT,)0 1996 y(HISTOR)-8
+b(Y,)30 b(CONTINUE,)g(or)g(if)g(the)h(\014rst)f(8)g(c)m(haracters)i(of)
+f(the)f(template)i(line)f(are)g(blanks.)0 2157 y(More)c(than)f(one)h
+(Header-Data)i(Unit)e(\(HDU\))g(ma)m(y)g(b)s(e)f(de\014ned)f(in)h(the)h
+(template)h(\014le.)39 b(The)26 b(start)h(of)g(an)f(HDU)0
+2269 y(de\014nition)k(is)g(denoted)h(with)f(a)h(SIMPLE)e(or)i(XTENSION)
+e(template)j(line:)0 2430 y(1\))i(SIMPLE)f(b)s(egins)g(a)h(Primary)g
+(HDU)g(de\014nition.)50 b(SIMPLE)33 b(ma)m(y)h(only)g(app)s(ear)f(as)h
+(the)g(\014rst)f(k)m(eyw)m(ord)h(in)0 2543 y(the)e(template)i(\014le.)
+45 b(If)32 b(the)g(template)i(\014le)e(b)s(egins)f(with)h(XTENSION)f
+(instead)h(of)g(SIMPLE,)g(then)f(a)i(default)0 2655 y(empt)m(y)d
+(Primary)e(HDU)i(is)g(created,)h(and)d(the)i(template)h(is)e(then)g
+(assumed)f(to)i(de\014ne)f(the)h(k)m(eyw)m(ords)f(starting)0
+2768 y(with)h(the)h(\014rst)e(extension)i(follo)m(wing)h(the)f(Primary)
+f(HDU.)0 2928 y(2\))35 b(XTENSION)e(marks)g(the)i(b)s(eginning)e(of)h
+(a)h(new)e(extension)i(HDU)f(de\014nition.)52 b(The)33
+b(previous)h(HDU)h(will)0 3041 y(b)s(e)30 b(closed)h(at)g(this)f(p)s
+(oin)m(t)h(and)e(pro)s(cessing)i(of)f(the)h(next)f(extension)h(b)s
+(egins.)0 3373 y Ff(11.2)136 b(Auto-indexing)45 b(of)g(Keyw)l(ords)0
+3623 y Fj(If)31 b(a)h(template)g(k)m(eyw)m(ord)g(name)f(ends)g(with)g
+(a)g("#")h(c)m(haracter,)i(it)e(is)f(said)g(to)h(b)s(e)f
+('auto-indexed'.)44 b(Eac)m(h)32 b("#")0 3736 y(c)m(haracter)i(will)f
+(b)s(e)f(replaced)i(b)m(y)e(the)h(curren)m(t)g(in)m(teger)h(index)e(v)
+-5 b(alue,)34 b(whic)m(h)f(gets)g(reset)h(=)e(1)h(at)h(the)e(start)i
+(of)0 3849 y(eac)m(h)h(new)f(HDU)g(in)g(the)g(\014le)g(\(or)g(7)h(in)e
+(the)h(sp)s(ecial)h(case)g(of)f(a)g(GR)m(OUP)h(de\014nition\).)51
+b(The)33 b(FIRST)g(indexed)0 3962 y(k)m(eyw)m(ord)c(in)f(eac)m(h)h
+(template)h(HDU)f(de\014nition)f(is)g(used)f(as)i(the)f('incremen)m
+(tor';)j(eac)m(h)e(subsequen)m(t)f(o)s(ccurrence)0 4075
+y(of)k(this)f(SAME)g(k)m(eyw)m(ord)h(will)g(cause)g(the)g(index)f(v)-5
+b(alue)32 b(to)g(b)s(e)f(incremen)m(ted.)44 b(This)31
+b(b)s(eha)m(vior)g(can)h(b)s(e)f(rather)0 4188 y(subtle,)d(as)g
+(illustrated)h(in)e(the)h(follo)m(wing)h(examples)f(in)f(whic)m(h)h
+(the)g(TTYPE)e(k)m(eyw)m(ord)i(is)g(the)g(incremen)m(tor)g(in)0
+4300 y(b)s(oth)i(cases:)95 4546 y Fe(TTYPE#)47 b(=)g(TIME)95
+4659 y(TFORM#)g(=)g(1D)95 4772 y(TTYPE#)g(=)g(RATE)95
+4884 y(TFORM#)g(=)g(1E)0 5130 y Fj(will)26 b(create)i(TTYPE1,)e(TF)m
+(ORM1,)i(TTYPE2,)f(and)e(TF)m(ORM2)i(k)m(eyw)m(ords.)40
+b(But)26 b(if)g(the)g(template)h(lo)s(oks)f(lik)m(e,)95
+5375 y Fe(TTYPE#)47 b(=)g(TIME)95 5488 y(TTYPE#)g(=)g(RATE)95
+5601 y(TFORM#)g(=)g(1D)95 5714 y(TFORM#)g(=)g(1E)p eop
+end
+%%Page: 149 157
+TeXDict begin 149 156 bop 0 299 a Fh(11.3.)73 b(TEMPLA)-8
+b(TE)30 b(P)-8 b(ARSER)30 b(DIRECTIVES)1982 b Fj(149)0
+555 y(this)31 b(results)f(in)h(a)g(FITS)f(\014les)h(with)f(TTYPE1,)h
+(TTYPE2,)g(TF)m(ORM2,)h(and)e(TF)m(ORM2,)i(whic)m(h)f(is)g(probably)0
+668 y(not)g(what)f(w)m(as)h(in)m(tended!)0 1000 y Ff(11.3)136
+b(T)-11 b(emplate)45 b(P)l(arser)h(Directiv)l(es)0 1251
+y Fj(In)29 b(addition)i(to)f(the)g(template)i(lines)e(whic)m(h)g
+(de\014ne)f(individual)h(k)m(eyw)m(ords,)g(the)g(template)i(parser)d
+(recognizes)0 1363 y(3)h(sp)s(ecial)h(directiv)m(es)g(whic)m(h)f(are)g
+(eac)m(h)h(preceded)f(b)m(y)f(the)h(bac)m(kslash)h(c)m(haracter:)90
+b Fe(\\include,)45 b(\\group)p Fj(,)29 b(and)48 1476
+y Fe(\\end)p Fj(.)0 1637 y(The)37 b('include')h(directiv)m(e)i(m)m(ust)
+d(b)s(e)h(follo)m(w)m(ed)h(b)m(y)f(a)g(\014lename.)63
+b(It)38 b(forces)g(the)g(parser)f(to)i(temp)s(orarily)f(stop)0
+1749 y(reading)d(the)g(curren)m(t)g(template)h(\014le)f(and)f(b)s(egin)
+h(reading)g(the)g(include)f(\014le.)55 b(Once)35 b(the)g(parser)f(reac)
+m(hes)i(the)0 1862 y(end)f(of)h(the)g(include)f(\014le)h(it)g(con)m
+(tin)m(ues)g(parsing)g(the)f(curren)m(t)h(template)h(\014le.)56
+b(Include)35 b(\014les)h(can)g(b)s(e)f(nested,)0 1975
+y(and)30 b(HDU)h(de\014nitions)f(can)g(span)g(m)m(ultiple)h(template)h
+(\014les.)0 2135 y(The)f(start)h(of)g(a)g(GR)m(OUP)h(de\014nition)e(is)
+h(denoted)g(with)f(the)h('group')g(directiv)m(e,)h(and)f(the)f(end)h
+(of)f(a)i(GR)m(OUP)0 2248 y(de\014nition)k(is)h(denoted)f(with)g(the)h
+('end')f(directiv)m(e.)63 b(Eac)m(h)39 b(GR)m(OUP)e(con)m(tains)i(0)f
+(or)f(more)h(mem)m(b)s(er)f(blo)s(c)m(ks)0 2361 y(\(HDUs)44
+b(or)f(GR)m(OUPs\).)79 b(Mem)m(b)s(er)42 b(blo)s(c)m(ks)i(of)f(t)m(yp)s
+(e)g(GR)m(OUP)g(can)g(con)m(tain)h(their)f(o)m(wn)g(mem)m(b)s(er)f(blo)
+s(c)m(ks.)0 2474 y(The)32 b(GR)m(OUP)g(de\014nition)g(itself)h(o)s
+(ccupies)g(one)f(FITS)g(\014le)g(HDU)h(of)f(sp)s(ecial)h(t)m(yp)s(e)f
+(\(GR)m(OUP)h(HDU\),)h(so)e(if)h(a)0 2587 y(template)f(sp)s(eci\014es)e
+(1)h(group)e(with)h(1)h(mem)m(b)s(er)f(HDU)h(lik)m(e:)0
+2838 y Fe(\\group)0 2951 y(grpdescr)46 b(=)h('demo')0
+3064 y(xtension)f(bintable)0 3177 y(#)h(this)g(bintable)f(has)h(0)g
+(cols,)f(0)i(rows)0 3290 y(\\end)0 3541 y Fj(then)30
+b(the)h(parser)e(creates)j(a)f(FITS)f(\014le)g(with)g(3)h(HDUs)g(:)0
+3792 y Fe(1\))47 b(dummy)g(PHDU)0 3905 y(2\))g(GROUP)g(HDU)f(\(has)h(1)
+h(member,)d(which)i(is)g(bintable)e(in)j(HDU)f(number)f(3\))0
+4018 y(3\))h(bintable)f(\(member)g(of)h(GROUP)f(in)h(HDU)g(number)f
+(2\))0 4269 y Fj(T)-8 b(ec)m(hnically)32 b(sp)s(eaking,)e(the)f(GR)m
+(OUP)i(HDU)f(is)g(a)g(BINT)-8 b(ABLE)30 b(with)g(6)g(columns.)40
+b(Applications)31 b(can)f(de\014ne)0 4382 y(additional)23
+b(columns)f(in)f(a)i(GR)m(OUP)f(HDU)h(using)f(TF)m(ORMn)f(and)h(TTYPEn)
+f(\(where)g(n)h(is)g(7,)i(8,)h(....\))39 b(k)m(eyw)m(ords)0
+4494 y(or)30 b(their)h(auto-indexing)g(equiv)-5 b(alen)m(ts.)0
+4655 y(F)d(or)26 b(a)f(more)g(complicated)h(example)f(of)g(a)h
+(template)g(\014le)f(using)f(the)h(group)f(directiv)m(es,)k(lo)s(ok)d
+(at)g(the)g(sample.tpl)0 4767 y(\014le)30 b(that)h(is)g(included)e(in)i
+(the)f(CFITSIO)f(distribution.)0 5100 y Ff(11.4)136 b(F)-11
+b(ormal)45 b(T)-11 b(emplate)46 b(Syn)l(tax)0 5350 y
+Fj(The)30 b(template)i(syn)m(tax)f(can)f(formally)h(b)s(e)f(de\014ned)f
+(as)i(follo)m(ws:)191 5601 y Fe(TEMPLATE)45 b(=)j(BLOCK)e([)i(BLOCK)e
+(...)h(])p eop end
+%%Page: 150 158
+TeXDict begin 150 157 bop 0 299 a Fj(150)2250 b Fh(CHAPTER)29
+b(11.)72 b(TEMPLA)-8 b(TE)30 b(FILES)334 555 y Fe(BLOCK)46
+b(=)i({)f(HDU)g(|)h(GROUP)e(})334 781 y(GROUP)g(=)i(\\GROUP)e([)h
+(BLOCK)g(...)g(])g(\\END)430 1007 y(HDU)f(=)i(XTENSION)d([)j(LINE)f
+(...)f(])i({)f(XTENSION)f(|)h(\\GROUP)f(|)i(\\END)f(|)g(EOF)g(})382
+1233 y(LINE)f(=)i([)f(KEYWORD)f([)i(=)f(])h(])f([)g(VALUE)g(])g([)h(/)f
+(COMMENT)f(])191 1458 y(X)h(...)238 b(-)48 b(X)f(can)g(be)g(present)f
+(1)h(or)h(more)e(times)191 1571 y({)h(X)h(|)f(Y)h(})f(-)h(X)f(or)g(Y)
+191 1684 y([)g(X)h(])238 b(-)48 b(X)f(is)g(optional)0
+1937 y Fj(A)m(t)34 b(the)f(topmost)g(lev)m(el,)i(the)e(template)i
+(de\014nes)c(1)j(or)e(more)h(template)h(blo)s(c)m(ks.)49
+b(Blo)s(c)m(ks)34 b(can)f(b)s(e)f(either)h(HDU)0 2050
+y(\(Header)27 b(Data)h(Unit\))g(or)e(a)h(GR)m(OUP)-8
+b(.)28 b(F)-8 b(or)27 b(eac)m(h)g(blo)s(c)m(k)g(the)g(parser)f(creates)
+i(1)f(\(or)g(more)f(for)h(GR)m(OUPs\))g(FITS)0 2163 y(\014le)j(HDUs.)0
+2495 y Ff(11.5)136 b(Errors)0 2745 y Fj(In)24 b(general)h(the)f(\014ts)
+p 692 2745 28 4 v 33 w(execute)p 1019 2745 V 34 w(template\(\))i
+(function)e(tries)h(to)g(b)s(e)f(as)g(atomic)i(as)f(p)s(ossible,)g(so)f
+(either)h(ev)m(erything)0 2858 y(is)f(done)g(or)g(nothing)f(is)h(done.)
+39 b(If)23 b(an)h(error)f(o)s(ccurs)h(during)f(parsing)g(of)h(the)g
+(template,)j(\014ts)p 3125 2858 V 33 w(execute)p 3452
+2858 V 34 w(template\(\))0 2971 y(will)k(\(try)g(to\))h(delete)g(the)f
+(top)g(lev)m(el)h(BLOCK)e(\(with)h(all)g(its)h(c)m(hildren)e(if)h(an)m
+(y\))g(in)g(whic)m(h)f(the)h(error)f(o)s(ccurred,)0 3084
+y(then)g(it)h(will)g(stop)f(reading)h(the)f(template)i(\014le)e(and)g
+(it)h(will)g(return)e(with)h(an)g(error.)0 3417 y Ff(11.6)136
+b(Examples)0 3667 y Fj(1.)54 b(This)34 b(template)i(\014le)f(will)g
+(create)h(a)f(200)h(x)e(300)i(pixel)f(image,)j(with)c(4-b)m(yte)i(in)m
+(teger)g(pixel)f(v)-5 b(alues,)36 b(in)f(the)0 3780 y(primary)29
+b(HDU:)95 4032 y Fe(SIMPLE)47 b(=)g(T)95 4145 y(BITPIX)g(=)g(32)95
+4258 y(NAXIS)g(=)g(2)239 b(/)47 b(number)f(of)h(dimensions)95
+4371 y(NAXIS1)g(=)g(100)95 b(/)47 b(length)f(of)h(first)g(axis)95
+4484 y(NAXIS2)g(=)g(200)95 b(/)47 b(length)f(of)h(second)f(axis)95
+4597 y(OBJECT)h(=)g(NGC)g(253)g(/)g(name)g(of)g(observed)f(object)0
+4850 y Fj(The)35 b(allo)m(w)m(ed)i(v)-5 b(alues)36 b(of)f(BITPIX)g(are)
+h(8,)h(16,)h(32,)g(-32,)g(or)d(-64,)j(represen)m(ting,)f(resp)s(ectiv)m
+(ely)-8 b(,)39 b(8-bit)d(in)m(teger,)0 4962 y(16-bit)c(in)m(teger,)g
+(32-bit)f(in)m(teger,)h(32-bit)g(\015oating)f(p)s(oin)m(t,)g(or)f(64)h
+(bit)g(\015oating)g(p)s(oin)m(t)f(pixels.)0 5123 y(2.)39
+b(T)-8 b(o)23 b(create)h(a)f(FITS)e(table,)26 b(the)c(template)i
+(\014rst)e(needs)g(to)i(include)e(XTENSION)g(=)g(T)-8
+b(ABLE)23 b(or)f(BINT)-8 b(ABLE)0 5235 y(to)31 b(de\014ne)e(whether)g
+(it)h(is)g(an)f(ASCI)s(I)g(or)g(binary)g(table,)i(and)f(NAXIS2)g(to)g
+(de\014ne)f(the)h(n)m(um)m(b)s(er)f(of)h(ro)m(ws)f(in)h(the)0
+5348 y(table.)50 b(Tw)m(o)34 b(template)g(lines)g(are)g(then)f(needed)f
+(to)i(de\014ne)f(the)g(name)h(\(TTYPEn\))e(and)h(FITS)g(data)h(format)0
+5461 y(\(TF)m(ORMn\))d(of)f(the)h(columns,)f(as)h(in)f(this)g(example:)
+95 5714 y Fe(xtension)46 b(=)h(bintable)p eop end
+%%Page: 151 159
+TeXDict begin 151 158 bop 0 299 a Fh(11.6.)73 b(EXAMPLES)2993
+b Fj(151)95 555 y Fe(naxis2)47 b(=)g(40)95 668 y(ttype#)g(=)g(Name)95
+781 y(tform#)g(=)g(10a)95 894 y(ttype#)g(=)g(Npoints)95
+1007 y(tform#)g(=)g(j)95 1120 y(ttype#)g(=)g(Rate)95
+1233 y(tunit#)g(=)g(counts/s)95 1346 y(tform#)g(=)g(e)0
+1605 y Fj(The)26 b(ab)s(o)m(v)m(e)j(example)e(de\014nes)f(a)i(n)m(ull)f
+(primary)f(arra)m(y)h(follo)m(w)m(ed)i(b)m(y)e(a)g(40-ro)m(w)h(binary)e
+(table)i(extension)g(with)f(3)0 1718 y(columns)h(called)h('Name',)h
+('Np)s(oin)m(ts',)f(and)f('Rate',)i(with)e(data)h(formats)f(of)g('10A')
+i(\(ASCI)s(I)d(c)m(haracter)i(string\),)0 1831 y('1J')k(\(in)m(teger\))
+i(and)d('1E')i(\(\015oating)f(p)s(oin)m(t\),)h(resp)s(ectiv)m(ely)-8
+b(.)50 b(Note)34 b(that)f(the)g(other)g(required)f(FITS)g(k)m(eyw)m
+(ords)0 1944 y(\(BITPIX,)37 b(NAXIS,)g(NAXIS1,)h(PCOUNT,)e(GCOUNT,)h
+(TFIELDS,)f(and)g(END\))h(do)g(not)g(need)f(to)h(b)s(e)f(ex-)0
+2057 y(plicitly)j(de\014ned)d(in)i(the)f(template)i(b)s(ecause)f(their)
+g(v)-5 b(alues)38 b(can)g(b)s(e)f(inferred)f(from)i(the)f(other)h(k)m
+(eyw)m(ords)g(in)0 2170 y(the)d(template.)55 b(This)34
+b(example)i(also)g(illustrates)f(that)h(the)f(templates)h(are)f
+(generally)h(case-insensitiv)m(e)h(\(the)0 2283 y(k)m(eyw)m(ord)29
+b(names)g(and)g(TF)m(ORMn)f(v)-5 b(alues)30 b(are)f(con)m(v)m(erted)i
+(to)e(upp)s(er-case)g(in)f(the)h(FITS)g(\014le\))g(and)f(that)i(string)
+0 2396 y(k)m(eyw)m(ord)h(v)-5 b(alues)31 b(generally)g(do)f(not)h(need)
+f(to)h(b)s(e)f(enclosed)h(in)f(quotes.)p eop end
+%%Page: 152 160
+TeXDict begin 152 159 bop 0 299 a Fj(152)2250 b Fh(CHAPTER)29
+b(11.)72 b(TEMPLA)-8 b(TE)30 b(FILES)p eop end
+%%Page: 153 161
+TeXDict begin 153 160 bop 0 1225 a Fg(Chapter)65 b(12)0
+1687 y Fm(Lo)6 b(cal)78 b(FITS)e(Con)-6 b(v)g(en)g(tions)0
+2180 y Fj(CFITSIO)25 b(supp)s(orts)g(sev)m(eral)j(lo)s(cal)f(FITS)f
+(con)m(v)m(en)m(tions)j(whic)m(h)d(are)h(not)g(de\014ned)e(in)h(the)h
+(o\016cial)h(NOST)e(FITS)0 2293 y(standard)k(and)g(whic)m(h)h(are)g
+(not)g(necessarily)g(recognized)h(or)f(supp)s(orted)e(b)m(y)i(other)g
+(FITS)f(soft)m(w)m(are)i(pac)m(k)-5 b(ages.)0 2406 y(Programmers)36
+b(should)f(b)s(e)g(cautious)i(ab)s(out)e(using)h(these)g(features,)i
+(esp)s(ecially)f(if)f(the)g(FITS)f(\014les)h(that)h(are)0
+2518 y(pro)s(duced)31 b(are)i(exp)s(ected)g(to)g(b)s(e)f(pro)s(cessed)g
+(b)m(y)h(other)f(soft)m(w)m(are)i(systems)f(whic)m(h)f(do)h(not)f(use)h
+(the)f(CFITSIO)0 2631 y(in)m(terface.)0 2990 y Ff(12.1)136
+b(64-Bit)45 b(Long)g(In)l(tegers)0 3246 y Fj(CFITSIO)37
+b(supp)s(orts)g(reading)i(and)f(writing)h(FITS)f(images)i(or)f(table)h
+(columns)e(con)m(taining)i(64-bit)h(in)m(teger)0 3359
+y(data)26 b(v)-5 b(alues.)40 b(Supp)s(ort)23 b(for)i(64-bit)i(in)m
+(tegers)g(w)m(as)f(added)e(to)j(the)e(o\016cial)i(FITS)e(Standard)f(in)
+i(Decem)m(b)s(er)g(2005.)0 3472 y(FITS)g(64-bit)i(images)g(ha)m(v)m(e)g
+(BITPIX)e(=)h(64,)h(and)e(the)h(64-bit)h(binary)e(table)i(columns)f(ha)
+m(v)m(e)h(TF)m(ORMn)e(=)h('K'.)0 3584 y(CFITSIO)35 b(also)i(supp)s
+(orts)e(the)i('Q')f(v)-5 b(ariable-length)38 b(arra)m(y)f(table)h
+(column)e(format)h(whic)m(h)f(is)g(analogous)i(to)0 3697
+y(the)31 b('P')f(column)g(format)h(except)g(that)g(the)g(arra)m(y)g
+(descriptor)f(is)h(stored)f(as)h(a)f(pair)h(of)f(64-bit)i(in)m(tegers.)
+0 3858 y(F)-8 b(or)33 b(the)f(con)m(v)m(enience)i(of)f(C)e
+(programmers,)h(the)h(\014tsio.h)f(include)g(\014le)g(de\014nes)f
+(\(with)h(a)h(t)m(yp)s(edef)f(statemen)m(t\))0 3970 y(the)39
+b('LONGLONG')g(datat)m(yp)s(e)h(to)f(b)s(e)f(equiv)-5
+b(alen)m(t)40 b(to)f(an)g(appropriate)g(64-bit)h(in)m(teger)g(datat)m
+(yp)s(e)f(on)g(eac)m(h)0 4083 y(platform.)g(Since)27
+b(there)f(is)g(curren)m(tly)g(no)g(univ)m(ersal)h(standard)e(for)h(the)
+g(name)g(of)h(the)f(64-bit)h(in)m(teger)h(datat)m(yp)s(e)0
+4196 y(\(it)33 b(migh)m(t)f(b)s(e)f(de\014ned)g(as)h('long)g(long',)i
+('long',)f(or)f(')p 1832 4196 28 4 v 1865 4196 V 66 w(in)m(t64')h(dep)s
+(ending)d(on)i(the)g(platform\))g(C)g(programmers)0 4309
+y(ma)m(y)24 b(prefer)f(to)i(use)e(the)h('LONGLONG')h(datat)m(yp)s(e)f
+(when)f(declaring)i(or)e(allo)s(cating)j(64-bit)f(in)m(teger)h(quan)m
+(tities)0 4422 y(when)33 b(writing)h(co)s(de)g(whic)m(h)f(needs)h(to)h
+(run)d(on)i(m)m(ultiple)g(platforms.)52 b(Note)35 b(that)f(CFITSIO)f
+(will)h(implicitly)0 4535 y(con)m(v)m(ert)h(the)e(datat)m(yp)s(e)h
+(when)f(reading)g(or)g(writing)h(FITS)e(64-bit)j(in)m(teger)f(images)h
+(and)d(columns)h(with)g(data)0 4648 y(arra)m(ys)40 b(of)h(a)f
+(di\013eren)m(t)h(in)m(teger)g(or)f(\015oating)h(p)s(oin)m(t)f(datat)m
+(yp)s(e,)k(but)c(there)g(is)g(an)g(increased)g(risk)g(of)g(loss)h(of)0
+4761 y(n)m(umerical)31 b(precision)f(or)h(n)m(umerical)g(o)m(v)m
+(er\015o)m(w)h(in)e(this)g(case.)0 5120 y Ff(12.2)136
+b(Long)44 b(String)i(Keyw)l(ord)f(V)-11 b(alues.)0 5375
+y Fj(The)43 b(length)i(of)f(a)g(standard)g(FITS)f(string)h(k)m(eyw)m
+(ord)g(is)g(limited)h(to)g(68)f(c)m(haracters)i(b)s(ecause)e(it)g(m)m
+(ust)g(\014t)0 5488 y(en)m(tirely)35 b(within)e(a)h(single)h(FITS)e
+(header)g(k)m(eyw)m(ord)i(record.)50 b(In)33 b(some)i(instances)f(it)g
+(is)g(necessary)g(to)h(enco)s(de)0 5601 y(strings)29
+b(longer)i(than)e(this)g(limit,)i(so)f(CFITSIO)e(supp)s(orts)g(a)h(lo)s
+(cal)i(con)m(v)m(en)m(tion)h(in)d(whic)m(h)h(the)f(string)h(v)-5
+b(alue)30 b(is)0 5714 y(con)m(tin)m(ued)36 b(o)m(v)m(er)g(m)m(ultiple)f
+(k)m(eyw)m(ords.)55 b(This)34 b(con)m(tin)m(uation)i(con)m(v)m(en)m
+(tion)h(uses)e(an)f(amp)s(ersand)g(c)m(haracter)i(at)1882
+5942 y(153)p eop end
+%%Page: 154 162
+TeXDict begin 154 161 bop 0 299 a Fj(154)1741 b Fh(CHAPTER)30
+b(12.)112 b(LOCAL)29 b(FITS)h(CONVENTIONS)0 555 y Fj(the)c(end)f(of)h
+(eac)m(h)g(substring)f(to)h(indicate)h(that)f(it)h(is)e(con)m(tin)m
+(ued)i(on)e(the)h(next)g(k)m(eyw)m(ord,)h(and)e(the)h(con)m(tin)m
+(uation)0 668 y(k)m(eyw)m(ords)40 b(all)h(ha)m(v)m(e)g(the)f(name)g
+(CONTINUE)f(without)h(an)g(equal)g(sign)g(in)g(column)g(9.)69
+b(The)40 b(string)f(v)-5 b(alue)0 781 y(ma)m(y)33 b(b)s(e)f(con)m(tin)m
+(ued)h(in)g(this)f(w)m(a)m(y)h(o)m(v)m(er)h(as)f(man)m(y)g(additional)g
+(CONTINUE)f(k)m(eyw)m(ords)h(as)f(is)h(required.)46 b(The)0
+894 y(follo)m(wing)37 b(lines)e(illustrate)h(this)f(con)m(tin)m(uation)
+i(con)m(v)m(en)m(tion)h(whic)m(h)c(is)i(used)e(in)h(the)g(v)-5
+b(alue)36 b(of)f(the)g(STRKEY)0 1007 y(k)m(eyw)m(ord:)0
+1297 y Fe(LONGSTRN=)45 b('OGIP)i(1.0')189 b(/)48 b(The)f(OGIP)f(Long)h
+(String)f(Convention)f(may)i(be)g(used.)0 1410 y(STRKEY)94
+b(=)47 b('This)g(is)g(a)g(very)g(long)g(string)f(keyword&')93
+b(/)47 b(Optional)f(Comment)0 1523 y(CONTINUE)93 b(')48
+b(value)e(that)h(is)g(continued)e(over)i(3)g(keywords)f(in)h(the)g(&)95
+b(')0 1636 y(CONTINUE)e('FITS)47 b(header.')e(/)j(This)e(is)h(another)f
+(optional)g(comment.)0 1926 y Fj(It)29 b(is)g(recommended)f(that)h(the)
+g(LONGSTRN)f(k)m(eyw)m(ord,)i(as)f(sho)m(wn)f(here,)h(alw)m(a)m(ys)i(b)
+s(e)d(included)g(in)g(an)m(y)h(HDU)0 2039 y(that)i(uses)f(this)g
+(longstring)h(con)m(v)m(en)m(tion)i(as)e(a)f(w)m(arning)h(to)g(an)m(y)g
+(soft)m(w)m(are)g(that)g(m)m(ust)g(read)f(the)h(k)m(eyw)m(ords.)41
+b(A)0 2152 y(routine)d(called)g(\014ts)p 712 2152 28
+4 v 33 w(write)p 947 2152 V 33 w(k)m(ey)p 1113 2152 V
+33 w(longw)m(arn)g(has)f(b)s(een)g(pro)m(vided)g(in)h(CFITSIO)d(to)k
+(write)e(this)h(k)m(eyw)m(ord)g(if)f(it)0 2265 y(do)s(es)30
+b(not)h(already)g(exist.)0 2425 y(This)f(long)h(string)f(con)m(v)m(en)m
+(tion)i(is)f(supp)s(orted)d(b)m(y)j(the)f(follo)m(wing)i(CFITSIO)d
+(routines:)191 2716 y Fe(fits_write_key_longstr)89 b(-)48
+b(write)e(a)i(long)e(string)g(keyword)g(value)191 2829
+y(fits_insert_key_longstr)41 b(-)48 b(insert)e(a)h(long)g(string)f
+(keyword)g(value)191 2942 y(fits_modify_key_longstr)41
+b(-)48 b(modify)e(a)h(long)g(string)f(keyword)g(value)191
+3054 y(fits_update_key_longstr)41 b(-)48 b(modify)e(a)h(long)g(string)f
+(keyword)g(value)191 3167 y(fits_read_key_longstr)137
+b(-)48 b(read)94 b(a)48 b(long)e(string)g(keyword)g(value)191
+3280 y(fits_delete_key)425 b(-)48 b(delete)e(a)h(keyword)0
+3571 y Fj(The)36 b(\014ts)p 320 3571 V 32 w(read)p 524
+3571 V 33 w(k)m(ey)p 690 3571 V 34 w(longstr)g(routine)h(is)f(unique)f
+(among)i(all)h(the)e(CFITSIO)f(routines)h(in)g(that)h(it)g(in)m
+(ternally)0 3684 y(allo)s(cates)f(memory)d(for)h(the)f(long)h(string)g
+(v)-5 b(alue;)36 b(all)e(the)g(other)g(CFITSIO)e(routines)h(that)h
+(deal)g(with)g(arra)m(ys)0 3797 y(require)39 b(that)h(the)g(calling)h
+(program)e(pre-allo)s(cate)j(adequate)e(space)g(to)g(hold)f(the)h(arra)
+m(y)g(of)f(data.)69 b(Conse-)0 3909 y(quen)m(tly)-8 b(,)31
+b(programs)f(whic)m(h)g(use)g(the)g(\014ts)p 1443 3909
+V 32 w(read)p 1647 3909 V 33 w(k)m(ey)p 1813 3909 V 34
+w(longstr)g(routine)g(m)m(ust)g(b)s(e)g(careful)g(to)h(free)g(the)f
+(allo)s(cated)0 4022 y(memory)g(for)g(the)h(string)f(when)g(it)h(is)f
+(no)g(longer)h(needed.)0 4183 y(The)f(follo)m(wing)i(2)e(routines)h
+(also)g(ha)m(v)m(e)h(limited)f(supp)s(ort)d(for)i(this)h(long)g(string)
+f(con)m(v)m(en)m(tion,)286 4473 y Fe(fits_modify_key_str)43
+b(-)k(modify)f(an)i(existing)d(string)h(keyword)g(value)286
+4586 y(fits_update_key_str)d(-)k(update)f(a)i(string)e(keyword)g(value)
+0 4876 y Fj(in)24 b(that)h(they)f(will)h(correctly)g(o)m(v)m(erwrite)h
+(an)e(existing)h(long)g(string)f(v)-5 b(alue,)27 b(but)c(the)h(new)g
+(string)g(v)-5 b(alue)25 b(is)f(limited)0 4989 y(to)31
+b(a)g(maxim)m(um)f(of)h(68)g(c)m(haracters)h(in)e(length.)0
+5149 y(The)f(more)h(commonly)h(used)e(CFITSIO)f(routines)i(to)g(write)g
+(string)g(v)-5 b(alued)30 b(k)m(eyw)m(ords)g(\(\014ts)p
+3254 5149 V 33 w(up)s(date)p 3563 5149 V 32 w(k)m(ey)h(and)0
+5262 y(\014ts)p 127 5262 V 32 w(write)p 361 5262 V 33
+w(k)m(ey\))j(do)e(not)h(supp)s(ort)d(this)i(long)h(string)g(con)m(v)m
+(en)m(tion)h(and)e(only)g(supp)s(ort)f(strings)h(up)f(to)i(68)g(c)m
+(har-)0 5375 y(acters)g(in)f(length.)48 b(This)31 b(has)h(b)s(een)g
+(done)g(delib)s(erately)h(to)g(prev)m(en)m(t)g(programs)f(from)g(inadv)
+m(erten)m(tly)i(writing)0 5488 y(k)m(eyw)m(ords)25 b(using)f(this)h
+(non-standard)e(con)m(v)m(en)m(tion)k(without)e(the)g(explicit)h(in)m
+(ten)m(t)g(of)f(the)f(programmer)h(or)f(user.)0 5601
+y(The)36 b(\014ts)p 320 5601 V 32 w(write)p 554 5601
+V 33 w(k)m(ey)p 720 5601 V 34 w(longstr)h(routine)f(m)m(ust)h(b)s(e)f
+(called)i(instead)e(to)i(write)e(long)h(strings.)59 b(This)36
+b(routine)h(can)0 5714 y(also)31 b(b)s(e)f(used)g(to)h(write)f
+(ordinary)g(string)g(v)-5 b(alues)31 b(less)g(than)f(68)h(c)m
+(haracters)h(in)e(length.)p eop end
+%%Page: 155 163
+TeXDict begin 155 162 bop 0 299 a Fh(12.3.)73 b(ARRA)-8
+b(YS)30 b(OF)h(FIXED-LENGTH)g(STRINGS)e(IN)h(BINAR)-8
+b(Y)32 b(T)-8 b(ABLES)871 b Fj(155)0 555 y Ff(12.3)136
+b(Arra)l(ys)45 b(of)g(Fixed-Length)g(Strings)g(in)g(Binary)f(T)-11
+b(ables)0 820 y Fj(CFITSIO)25 b(supp)s(orts)g(2)i(w)m(a)m(ys)g(to)g(sp)
+s(ecify)f(that)i(a)f(c)m(haracter)h(column)e(in)g(a)h(binary)f(table)i
+(con)m(tains)f(an)g(arra)m(y)g(of)0 933 y(\014xed-length)32
+b(strings.)46 b(The)32 b(\014rst)f(w)m(a)m(y)-8 b(,)34
+b(whic)m(h)e(is)g(o\016cially)i(supp)s(orted)c(b)m(y)i(the)h(FITS)e
+(Standard)g(do)s(cumen)m(t,)0 1046 y(uses)38 b(the)g(TDIMn)g(k)m(eyw)m
+(ord.)65 b(F)-8 b(or)39 b(example,)i(if)d(TF)m(ORMn)g(=)g('60A')h(and)f
+(TDIMn)g(=)g('\(12,5\)')i(then)e(that)0 1159 y(column)30
+b(will)h(b)s(e)f(in)m(terpreted)g(as)h(con)m(taining)h(an)e(arra)m(y)h
+(of)g(5)f(strings,)h(eac)m(h)g(12)g(c)m(haracters)h(long.)0
+1319 y(CFITSIO)j(also)j(supp)s(orts)c(a)j(lo)s(cal)h(con)m(v)m(en)m
+(tion)h(for)d(the)h(format)g(of)g(the)f(TF)m(ORMn)h(k)m(eyw)m(ord)g(v)
+-5 b(alue)37 b(of)g(the)0 1432 y(form)42 b('rAw')g(where)g('r')g(is)h
+(an)f(in)m(teger)i(sp)s(ecifying)e(the)g(total)j(width)c(in)h(c)m
+(haracters)i(of)f(the)f(column,)k(and)0 1545 y('w')36
+b(is)g(an)g(in)m(teger)h(sp)s(ecifying)f(the)g(\(\014xed\))g(length)h
+(of)f(an)g(individual)f(unit)h(string)f(within)h(the)g(v)m(ector.)59
+b(F)-8 b(or)0 1658 y(example,)29 b(TF)m(ORM1)f(=)f('120A10')j(w)m(ould)
+d(indicate)h(that)g(the)f(binary)g(table)h(column)f(is)g(120)i(c)m
+(haracters)f(wide)0 1771 y(and)42 b(consists)h(of)f(12)h(10-c)m
+(haracter)i(length)e(strings.)77 b(This)41 b(con)m(v)m(en)m(tion)k(is)d
+(recognized)i(b)m(y)e(the)g(CFITSIO)0 1884 y(routines)26
+b(that)h(read)e(or)h(write)h(strings)e(in)h(binary)f(tables.)40
+b(The)26 b(Binary)g(T)-8 b(able)27 b(de\014nition)e(do)s(cumen)m(t)h
+(sp)s(eci\014es)0 1996 y(that)i(other)f(optional)h(c)m(haracters)h(ma)m
+(y)e(follo)m(w)i(the)e(data)h(t)m(yp)s(e)f(co)s(de)g(in)g(the)g(TF)m
+(ORM)h(k)m(eyw)m(ord,)g(so)g(this)f(lo)s(cal)0 2109 y(con)m(v)m(en)m
+(tion)f(is)d(in)h(compliance)h(with)e(the)h(FITS)e(standard)h(although)
+h(other)g(FITS)f(readers)g(ma)m(y)h(not)g(recognize)0
+2222 y(this)30 b(con)m(v)m(en)m(tion.)0 2382 y(The)25
+b(Binary)h(T)-8 b(able)27 b(de\014nition)e(do)s(cumen)m(t)h(that)h(w)m
+(as)f(appro)m(v)m(ed)g(b)m(y)g(the)g(IA)m(U)g(in)g(1994)i(con)m(tains)f
+(an)e(app)s(endix)0 2495 y(describing)d(an)h(alternate)h(con)m(v)m(en)m
+(tion)h(for)e(sp)s(ecifying)f(arra)m(ys)h(of)g(\014xed)f(or)h(v)-5
+b(ariable)24 b(length)f(strings)f(in)h(a)g(binary)0 2608
+y(table)35 b(c)m(haracter)g(column)f(\(with)g(the)h(form)e
+('rA:SSTRw/nnn\)'.)50 b(This)33 b(app)s(endix)f(w)m(as)j(not)f
+(o\016cially)i(v)m(oted)0 2721 y(on)30 b(b)m(y)h(the)f(IA)m(U)h(and)f
+(hence)g(is)h(still)g(pro)m(visional.)42 b(CFITSIO)29
+b(do)s(es)h(not)g(curren)m(tly)h(supp)s(ort)d(this)j(prop)s(osal.)0
+3129 y Ff(12.4)136 b(Keyw)l(ord)45 b(Units)h(Strings)0
+3394 y Fj(One)37 b(limitation)j(of)d(the)h(curren)m(t)g(FITS)e
+(Standard)h(is)h(that)g(it)g(do)s(es)f(not)h(de\014ne)f(a)h(sp)s
+(eci\014c)f(con)m(v)m(en)m(tion)j(for)0 3507 y(recording)30
+b(the)g(ph)m(ysical)h(units)f(of)g(a)g(k)m(eyw)m(ord)h(v)-5
+b(alue.)41 b(The)30 b(TUNITn)f(k)m(eyw)m(ord)h(can)g(b)s(e)g(used)f(to)
+i(sp)s(ecify)f(the)0 3620 y(ph)m(ysical)36 b(units)f(of)g(the)h(v)-5
+b(alues)36 b(in)f(a)g(table)i(column,)f(but)f(there)g(is)h(no)f
+(analogous)i(con)m(v)m(en)m(tion)g(for)e(k)m(eyw)m(ord)0
+3732 y(v)-5 b(alues.)42 b(The)30 b(commen)m(t)h(\014eld)g(of)f(the)h(k)
+m(eyw)m(ord)g(is)g(often)g(used)f(for)g(this)g(purp)s(ose,)g(but)f(the)
+i(units)f(are)h(usually)0 3845 y(not)g(sp)s(eci\014ed)e(in)h(a)h(w)m
+(ell)g(de\014ned)f(format)g(that)h(FITS)f(readers)g(can)h(easily)g
+(recognize)h(and)e(extract.)0 4006 y(T)-8 b(o)27 b(solv)m(e)i(this)d
+(problem,)i(CFITSIO)d(uses)i(a)g(lo)s(cal)h(con)m(v)m(en)m(tion)h(in)e
+(whic)m(h)f(the)i(k)m(eyw)m(ord)f(units)f(are)i(enclosed)f(in)0
+4118 y(square)20 b(brac)m(k)m(ets)j(as)e(the)f(\014rst)g(tok)m(en)i(in)
+f(the)f(k)m(eyw)m(ord)i(commen)m(t)f(\014eld;)j(more)d(sp)s
+(eci\014cally)-8 b(,)24 b(the)d(op)s(ening)f(square)0
+4231 y(brac)m(k)m(et)28 b(immediately)g(follo)m(ws)f(the)g(slash)f('/')
+h(commen)m(t)h(\014eld)e(delimiter)h(and)f(a)g(single)h(space)g(c)m
+(haracter.)41 b(The)0 4344 y(follo)m(wing)32 b(examples)f(illustrate)g
+(k)m(eyw)m(ords)g(that)g(use)f(this)g(con)m(v)m(en)m(tion:)0
+4667 y Fe(EXPOSURE=)713 b(1800.0)47 b(/)g([s])g(elapsed)f(exposure)f
+(time)0 4780 y(V_HELIO)h(=)763 b(16.23)47 b(/)g([km)g(s**\(-1\)])e
+(heliocentric)g(velocity)0 4893 y(LAMBDA)94 b(=)763 b(5400.)47
+b(/)g([angstrom])e(central)h(wavelength)0 5005 y(FLUX)190
+b(=)47 b(4.9033487787637465E-30)42 b(/)47 b([J/cm**2/s])e(average)h
+(flux)0 5328 y Fj(In)28 b(general,)h(the)g(units)e(named)h(in)g(the)h
+(IA)m(U\(1988\))i(St)m(yle)e(Guide)f(are)h(recommended,)f(with)g(the)h
+(main)f(excep-)0 5441 y(tion)j(that)g(the)f(preferred)g(unit)f(for)i
+(angle)g(is)f('deg')i(for)e(degrees.)0 5601 y(The)38
+b(\014ts)p 322 5601 28 4 v 33 w(read)p 527 5601 V 33
+w(k)m(ey)p 693 5601 V 33 w(unit)h(and)f(\014ts)p 1234
+5601 V 32 w(write)p 1468 5601 V 33 w(k)m(ey)p 1634 5601
+V 34 w(unit)g(routines)h(in)g(CFITSIO)e(read)i(and)f(write,)k(resp)s
+(ectiv)m(ely)-8 b(,)0 5714 y(the)31 b(k)m(eyw)m(ord)f(unit)g(strings)h
+(in)f(an)g(existing)h(k)m(eyw)m(ord.)p eop end
+%%Page: 156 164
+TeXDict begin 156 163 bop 0 299 a Fj(156)1741 b Fh(CHAPTER)30
+b(12.)112 b(LOCAL)29 b(FITS)h(CONVENTIONS)0 555 y Ff(12.5)136
+b(HIERAR)l(CH)46 b(Con)l(v)l(en)l(tion)g(for)f(Extended)h(Keyw)l(ord)f
+(Names)0 805 y Fj(CFITSIO)c(supp)s(orts)g(the)i(HIERAR)m(CH)g(k)m(eyw)m
+(ord)g(con)m(v)m(en)m(tion)i(whic)m(h)e(allo)m(ws)h(k)m(eyw)m(ord)f
+(names)g(that)h(are)0 918 y(longer)34 b(then)e(8)i(c)m(haracters)g(and)
+f(ma)m(y)h(con)m(tain)g(the)f(full)g(range)g(of)h(prin)m(table)f(ASCI)s
+(I)e(text)j(c)m(haracters.)51 b(This)0 1031 y(con)m(v)m(en)m(tion)39
+b(w)m(as)f(dev)m(elop)s(ed)f(at)h(the)f(Europ)s(ean)f(Southern)g
+(Observ)-5 b(atory)37 b(\(ESO\))f(to)i(supp)s(ort)d(hierarc)m(hical)0
+1144 y(FITS)30 b(k)m(eyw)m(ord)g(suc)m(h)h(as:)0 1395
+y Fe(HIERARCH)46 b(ESO)g(INS)h(FOCU)g(POS)g(=)g(-0.00002500)e(/)j
+(Focus)e(position)0 1646 y Fj(Basically)-8 b(,)55 b(this)47
+b(con)m(v)m(en)m(tion)j(uses)d(the)h(FITS)f(k)m(eyw)m(ord)h('HIERAR)m
+(CH')h(to)f(indicate)h(that)f(this)f(con)m(v)m(en-)0
+1759 y(tion)e(is)f(b)s(eing)g(used,)j(then)d(the)g(actual)i(k)m(eyw)m
+(ord)e(name)h(\()p Fe('ESO)i(INS)f(FOCU)h(POS')c Fj(in)h(this)g
+(example\))h(b)s(e-)0 1872 y(gins)40 b(in)f(column)g(10)i(and)e(can)h
+(con)m(tain)g(an)m(y)g(prin)m(table)g(ASCI)s(I)e(text)j(c)m(haracters,)
+i(including)d(spaces.)68 b(The)0 1985 y(equals)44 b(sign)h(marks)e(the)
+h(end)g(of)g(the)g(k)m(eyw)m(ord)h(name)f(and)f(is)i(follo)m(w)m(ed)g
+(b)m(y)f(the)g(usual)g(v)-5 b(alue)45 b(and)e(com-)0
+2098 y(men)m(t)31 b(\014elds)f(just)g(as)h(in)f(standard)g(FITS)g(k)m
+(eyw)m(ords.)41 b(F)-8 b(urther)30 b(details)i(of)f(this)f(con)m(v)m
+(en)m(tion)j(are)e(describ)s(ed)e(at)0 2211 y(h)m
+(ttp://arcdev.hq.eso.org/dicb/dicd/dic-1-1.4.)q(h)m(tml)36
+b(\(searc)m(h)c(for)e(HIERAR)m(CH\).)0 2371 y(This)43
+b(con)m(v)m(en)m(tion)k(allo)m(ws)f(a)e(m)m(uc)m(h)h(broader)e(range)i
+(of)f(k)m(eyw)m(ord)h(names)f(than)h(is)f(allo)m(w)m(ed)i(b)m(y)e(the)h
+(FITS)0 2484 y(Standard.)40 b(Here)30 b(are)h(more)g(examples)g(of)f
+(suc)m(h)g(k)m(eyw)m(ords:)0 2735 y Fe(HIERARCH)46 b(LongKeyword)e(=)k
+(47.5)e(/)i(Keyword)e(has)h(>)g(8)g(characters,)e(and)i(mixed)f(case)0
+2848 y(HIERARCH)g(XTE$TEMP)f(=)j(98.6)e(/)i(Keyword)d(contains)h(the)h
+('$')g(character)0 2961 y(HIERARCH)f(Earth)g(is)h(a)h(star)e(=)i(F)f(/)
+h(Keyword)d(contains)h(embedded)f(spaces)0 3212 y Fj(CFITSIO)40
+b(will)i(transparen)m(tly)g(read)g(and)f(write)g(these)i(k)m(eyw)m
+(ords,)i(so)d(application)h(programs)e(do)g(not)h(in)0
+3325 y(general)33 b(need)f(to)h(kno)m(w)f(an)m(ything)h(ab)s(out)f(the)
+g(sp)s(eci\014c)g(implemen)m(tation)i(details)f(of)g(the)f(HIERAR)m(CH)
+g(con-)0 3438 y(v)m(en)m(tion.)50 b(In)32 b(particular,)j(application)f
+(programs)e(do)h(not)h(need)e(to)i(sp)s(ecify)f(the)g(`HIERAR)m(CH')h
+(part)f(of)g(the)0 3551 y(k)m(eyw)m(ord)g(name)f(when)g(reading)g(or)g
+(writing)h(k)m(eyw)m(ords)f(\(although)h(it)g(ma)m(y)g(b)s(e)f
+(included)f(if)i(desired\).)46 b(When)0 3664 y(writing)35
+b(a)g(k)m(eyw)m(ord,)h(CFITSIO)d(\014rst)h(c)m(hec)m(ks)i(to)f(see)g
+(if)g(the)g(k)m(eyw)m(ord)g(name)f(is)h(legal)h(as)f(a)g(standard)f
+(FITS)0 3776 y(k)m(eyw)m(ord)k(\(no)g(more)f(than)h(8)g(c)m(haracters)h
+(long)f(and)f(con)m(taining)i(only)e(letters,)k(digits,)f(or)e(a)g(min)
+m(us)e(sign)i(or)0 3889 y(underscore\).)68 b(If)39 b(so)h(it)g(writes)g
+(it)g(as)f(a)h(standard)f(FITS)g(k)m(eyw)m(ord,)k(otherwise)d(it)g
+(uses)f(the)h(hierarc)m(h)f(con-)0 4002 y(v)m(en)m(tion)34
+b(to)f(write)g(the)f(k)m(eyw)m(ord.)48 b(The)32 b(maxim)m(um)g(k)m(eyw)
+m(ord)h(name)f(length)h(is)g(67)g(c)m(haracters,)i(whic)m(h)d(lea)m(v)m
+(es)0 4115 y(only)c(1)h(space)g(for)f(the)h(v)-5 b(alue)29
+b(\014eld.)39 b(A)29 b(more)f(practical)i(limit)f(is)g(ab)s(out)f(40)h
+(c)m(haracters,)i(whic)m(h)d(lea)m(v)m(es)i(enough)0
+4228 y(ro)s(om)e(for)h(most)f(k)m(eyw)m(ord)h(v)-5 b(alues.)41
+b(CFITSIO)27 b(returns)g(an)h(error)h(if)f(there)h(is)f(not)h(enough)f
+(ro)s(om)h(for)f(b)s(oth)g(the)0 4341 y(k)m(eyw)m(ord)k(name)f(and)f
+(the)i(k)m(eyw)m(ord)f(v)-5 b(alue)32 b(on)f(the)h(80-c)m(haracter)h
+(card,)f(except)g(for)f(string-v)-5 b(alued)32 b(k)m(eyw)m(ords)0
+4454 y(whic)m(h)h(are)g(simply)f(truncated)h(so)g(that)h(the)f(closing)
+h(quote)g(c)m(haracter)g(falls)f(in)g(column)g(80.)49
+b(In)32 b(the)h(curren)m(t)0 4567 y(implemen)m(tation,)e(CFITSIO)c
+(preserv)m(es)i(the)g(case)h(of)f(the)g(letters)h(when)e(writing)h(the)
+g(k)m(eyw)m(ord)g(name,)g(but)f(it)0 4680 y(is)d(case-insensitiv)m(e)i
+(when)d(reading)h(or)g(searc)m(hing)h(for)f(a)g(k)m(eyw)m(ord.)40
+b(The)24 b(curren)m(t)h(implemen)m(tation)h(allo)m(ws)h(an)m(y)0
+4793 y(ASCI)s(I)i(text)j(c)m(haracter)h(\(ASCI)s(I)c(32)j(to)f(ASCI)s
+(I)f(126\))i(in)f(the)g(k)m(eyw)m(ord)g(name)g(except)h(for)e(the)h
+('=')g(c)m(haracter.)0 4906 y(A)f(space)h(is)g(also)g(required)f(on)g
+(either)h(side)f(of)h(the)f(equal)h(sign.)0 5238 y Ff(12.6)136
+b(Tile-Compressed)46 b(Image)g(F)-11 b(ormat)0 5488 y
+Fj(CFITSIO)36 b(supp)s(orts)f(a)j(con)m(v)m(en)m(tion)i(for)d
+(compressing)h(n-dimensional)f(images)h(and)f(storing)h(the)g
+(resulting)0 5601 y(b)m(yte)i(stream)g(in)f(a)h(v)-5
+b(ariable-length)41 b(column)e(in)g(a)h(FITS)f(binary)f(table.)69
+b(The)39 b(general)i(principle)e(used)f(in)0 5714 y(this)c(con)m(v)m
+(en)m(tion)j(is)d(to)h(\014rst)f(divide)g(the)h(n-dimensional)f(image)i
+(in)m(to)f(a)g(rectangular)g(grid)f(of)h(subimages)f(or)p
+eop end
+%%Page: 157 165
+TeXDict begin 157 164 bop 0 299 a Fh(12.6.)73 b(TILE-COMPRESSED)28
+b(IMA)m(GE)j(F)m(ORMA)-8 b(T)1838 b Fj(157)0 555 y(`tiles'.)57
+b(Eac)m(h)35 b(tile)i(is)e(then)g(compressed)g(as)g(a)h(con)m(tin)m
+(uous)g(blo)s(c)m(k)f(of)h(data,)h(and)e(the)g(resulting)g(compressed)0
+668 y(b)m(yte)i(stream)h(is)f(stored)g(in)f(a)h(ro)m(w)g(of)g(a)h(v)-5
+b(ariable)37 b(length)g(column)g(in)g(a)g(FITS)f(binary)g(table.)61
+b(By)37 b(dividing)0 781 y(the)j(image)g(in)m(to)g(tiles)h(it)f(is)f
+(generally)i(p)s(ossible)e(to)h(extract)h(and)d(uncompress)g
+(subsections)i(of)f(the)h(image)0 894 y(without)d(ha)m(ving)h(to)g
+(uncompress)e(the)h(whole)g(image.)62 b(The)37 b(default)g(tiling)h
+(pattern)g(treats)g(eac)m(h)g(ro)m(w)f(of)h(a)0 1007
+y(2-dimensional)e(image)g(\(or)f(higher)f(dimensional)h(cub)s(e\))g(as)
+g(a)g(tile,)j(suc)m(h)c(that)i(eac)m(h)g(tile)g(con)m(tains)g(NAXIS1)0
+1120 y(pixels)29 b(\(except)h(the)f(default)g(with)g(the)g(HCOMPRESS)e
+(algorithm)j(is)f(to)h(compress)f(the)g(whole)g(2D)h(image)g(as)0
+1233 y(a)35 b(single)g(tile\).)56 b(An)m(y)34 b(other)h(rectangular)h
+(tiling)g(pattern)f(ma)m(y)g(also)h(b)s(e)e(de\014ned.)52
+b(In)34 b(the)h(case)h(of)f(relativ)m(ely)0 1346 y(small)25
+b(images)h(it)f(ma)m(y)g(b)s(e)f(su\016cien)m(t)h(to)h(compress)e(the)h
+(en)m(tire)g(image)h(as)f(a)g(single)h(tile,)h(resulting)d(in)h(an)f
+(output)0 1458 y(binary)29 b(table)i(with)f(1)g(ro)m(w.)41
+b(In)29 b(the)h(case)h(of)f(3-dimensional)h(data)g(cub)s(es,)e(it)i(ma)
+m(y)f(b)s(e)f(adv)-5 b(an)m(tageous)32 b(to)f(treat)0
+1571 y(eac)m(h)i(plane)f(of)g(the)g(cub)s(e)f(as)h(a)g(separate)h(tile)
+g(if)f(application)h(soft)m(w)m(are)h(t)m(ypically)f(needs)f(to)g
+(access)i(the)e(cub)s(e)0 1684 y(on)e(a)h(plane)f(b)m(y)h(plane)f
+(basis.)0 1844 y(See)41 b(section)g(5.6)h(\\Image)f(Compression")f(for)
+g(more)h(information)g(on)f(using)g(this)g(tile-compressed)i(image)0
+1957 y(format.)p eop end
+%%Page: 158 166
+TeXDict begin 158 165 bop 0 299 a Fj(158)1741 b Fh(CHAPTER)30
+b(12.)112 b(LOCAL)29 b(FITS)h(CONVENTIONS)p eop end
+%%Page: 159 167
+TeXDict begin 159 166 bop 0 1225 a Fg(Chapter)65 b(13)0
+1687 y Fm(Optimizing)76 b(Programs)0 2180 y Fj(CFITSIO)22
+b(has)h(b)s(een)f(carefully)i(designed)f(to)h(obtain)g(the)f(highest)h
+(p)s(ossible)e(sp)s(eed)h(when)f(reading)h(and)g(writing)0
+2293 y(FITS)33 b(\014les.)51 b(In)33 b(order)h(to)g(ac)m(hiev)m(e)i
+(the)e(b)s(est)g(p)s(erformance,)g(ho)m(w)m(ev)m(er,)i(application)g
+(programmers)d(m)m(ust)h(b)s(e)0 2406 y(careful)24 b(to)h(call)g(the)f
+(CFITSIO)f(routines)g(appropriately)i(and)e(in)h(an)f(e\016cien)m(t)j
+(sequence;)h(inappropriate)c(usage)0 2518 y(of)31 b(CFITSIO)d(routines)
+j(can)f(greatly)i(slo)m(w)f(do)m(wn)f(the)h(execution)g(sp)s(eed)f(of)g
+(a)h(program.)0 2679 y(The)f(maxim)m(um)h(p)s(ossible)f(I/O)h(sp)s(eed)
+f(of)h(CFITSIO)e(dep)s(ends)g(of)i(course)g(on)f(the)h(t)m(yp)s(e)g(of)
+g(computer)g(system)0 2791 y(that)g(it)f(is)g(running)e(on.)41
+b(As)30 b(a)g(rough)g(guide,)g(the)g(curren)m(t)g(generation)h(of)f(w)m
+(orkstations)h(can)g(ac)m(hiev)m(e)h(sp)s(eeds)0 2904
+y(of)j(2)g({)g(10)g(MB/s)h(when)e(reading)h(or)f(writing)h(FITS)f
+(images)i(and)e(similar,)i(or)f(sligh)m(tly)h(slo)m(w)m(er)g(sp)s(eeds)
+d(with)0 3017 y(FITS)c(binary)h(tables.)41 b(Reading)31
+b(of)f(FITS)g(\014les)g(can)h(o)s(ccur)f(at)h(ev)m(en)f(higher)g(rates)
+h(\(30MB/s)i(or)d(more\))h(if)f(the)0 3130 y(FITS)c(\014le)h(is)f
+(still)i(cac)m(hed)g(in)e(system)h(memory)f(follo)m(wing)j(a)e
+(previous)f(read)g(or)h(write)g(op)s(eration)g(on)g(the)g(same)0
+3243 y(\014le.)44 b(T)-8 b(o)32 b(more)g(accurately)h(predict)e(the)h
+(b)s(est)f(p)s(erformance)g(that)h(is)f(p)s(ossible)g(on)h(an)m(y)g
+(particular)f(system,)i(a)0 3356 y(diagnostic)h(program)f(called)h
+(\\sp)s(eed.c")f(is)g(included)f(with)h(the)g(CFITSIO)e(distribution)h
+(whic)m(h)h(can)g(b)s(e)f(run)0 3469 y(to)f(appro)m(ximately)h(measure)
+e(the)h(maxim)m(um)f(p)s(ossible)g(sp)s(eed)f(of)i(writing)f(and)g
+(reading)h(a)f(test)i(FITS)d(\014le.)0 3629 y(The)k(follo)m(wing)h(2)g
+(sections)g(pro)m(vide)g(some)f(bac)m(kground)g(on)h(ho)m(w)f(CFITSIO)f
+(in)m(ternally)i(manages)g(the)f(data)0 3742 y(I/O)g(and)g(describ)s
+(es)f(some)i(strategies)h(that)f(ma)m(y)g(b)s(e)e(used)h(to)h(optimize)
+g(the)g(pro)s(cessing)f(sp)s(eed)f(of)h(soft)m(w)m(are)0
+3855 y(that)e(uses)f(CFITSIO.)0 4271 y Ff(13.1)136 b(Ho)l(w)45
+b(CFITSIO)f(Manages)i(Data)g(I/O)0 4538 y Fj(Man)m(y)22
+b(CFITSIO)e(op)s(erations)i(in)m(v)m(olv)m(e)i(transferring)d(only)h(a)
+g(small)g(n)m(um)m(b)s(er)f(of)h(b)m(ytes)g(to)g(or)g(from)f(the)h
+(FITS)f(\014le)0 4650 y(\(e.g,)31 b(reading)e(a)g(k)m(eyw)m(ord,)h(or)f
+(writing)g(a)g(ro)m(w)g(in)f(a)h(table\);)i(it)f(w)m(ould)e(b)s(e)g(v)m
+(ery)i(ine\016cien)m(t)g(to)f(ph)m(ysically)h(read)0
+4763 y(or)i(write)h(suc)m(h)f(small)g(blo)s(c)m(ks)h(of)f(data)h
+(directly)g(in)f(the)g(FITS)g(\014le)g(on)g(disk,)h(therefore)f
+(CFITSIO)f(main)m(tains)0 4876 y(a)38 b(set)g(of)g(in)m(ternal)h
+(Input{Output)c(\(IO\))j(bu\013ers)f(in)g(RAM)h(memory)g(that)g(eac)m
+(h)h(con)m(tain)g(one)f(FITS)f(blo)s(c)m(k)0 4989 y(\(2880)27
+b(b)m(ytes\))f(of)f(data.)40 b(Whenev)m(er)25 b(CFITSIO)f(needs)g(to)i
+(access)g(data)g(in)f(the)g(FITS)f(\014le,)j(it)e(\014rst)f(transfers)h
+(the)0 5102 y(FITS)30 b(blo)s(c)m(k)h(con)m(taining)h(those)f(b)m(ytes)
+g(in)m(to)g(one)g(of)f(the)h(IO)f(bu\013ers)f(in)h(memory)-8
+b(.)42 b(The)30 b(next)g(time)h(CFITSIO)0 5215 y(needs)36
+b(to)g(access)i(b)m(ytes)e(in)g(the)g(same)h(blo)s(c)m(k)f(it)h(can)f
+(then)g(go)h(to)f(the)h(fast)f(IO)f(bu\013er)g(rather)h(than)g(using)g
+(a)0 5328 y(m)m(uc)m(h)c(slo)m(w)m(er)i(system)e(disk)g(access)h
+(routine.)46 b(The)32 b(n)m(um)m(b)s(er)f(of)h(a)m(v)-5
+b(ailable)35 b(IO)d(bu\013ers)f(is)h(determined)g(b)m(y)g(the)0
+5441 y(NIOBUF)f(parameter)g(\(in)f(\014tsio2.h\))h(and)f(is)h(curren)m
+(tly)f(set)h(to)g(40)g(b)m(y)g(default.)0 5601 y(Whenev)m(er)24
+b(CFITSIO)f(reads)g(or)h(writes)g(data)g(it)h(\014rst)e(c)m(hec)m(ks)i
+(to)g(see)f(if)g(that)g(blo)s(c)m(k)h(of)f(the)g(FITS)f(\014le)g(is)h
+(already)0 5714 y(loaded)33 b(in)m(to)g(one)f(of)g(the)g(IO)g
+(bu\013ers.)44 b(If)32 b(not,)h(and)e(if)h(there)g(is)g(an)g(empt)m(y)h
+(IO)e(bu\013er)g(a)m(v)-5 b(ailable,)35 b(then)d(it)h(will)1882
+5942 y(159)p eop end
+%%Page: 160 168
+TeXDict begin 160 167 bop 0 299 a Fj(160)1876 b Fh(CHAPTER)30
+b(13.)112 b(OPTIMIZING)29 b(PR)m(OGRAMS)0 555 y Fj(load)k(that)h(blo)s
+(c)m(k)f(in)m(to)g(the)g(IO)g(bu\013er)e(\(when)h(reading)h(a)g(FITS)f
+(\014le\))h(or)g(will)g(initialize)i(a)e(new)f(blo)s(c)m(k)i(\(when)0
+668 y(writing)j(to)h(a)g(FITS)f(\014le\).)62 b(If)37
+b(all)h(the)g(IO)e(bu\013ers)h(are)g(already)h(full,)h(it)f(m)m(ust)g
+(decide)f(whic)m(h)g(one)h(to)g(reuse)0 781 y(\(generally)c(the)f(one)g
+(that)g(has)f(b)s(een)g(accessed)i(least)f(recen)m(tly\),)i(and)d
+(\015ush)f(the)i(con)m(ten)m(ts)h(bac)m(k)g(to)f(disk)f(if)g(it)0
+894 y(has)e(b)s(een)g(mo)s(di\014ed)f(b)s(efore)h(loading)h(the)g(new)f
+(blo)s(c)m(k.)0 1054 y(The)g(one)g(ma)5 b(jor)30 b(exception)i(to)f
+(the)f(ab)s(o)m(v)m(e)h(pro)s(cess)f(o)s(ccurs)g(whenev)m(er)g(a)g
+(large)i(con)m(tiguous)f(set)g(of)f(b)m(ytes)h(are)0
+1167 y(accessed,)37 b(as)d(migh)m(t)i(o)s(ccur)e(when)f(reading)i(or)f
+(writing)g(a)h(FITS)f(image.)54 b(In)34 b(this)g(case)h(CFITSIO)e(b)m
+(ypasses)0 1280 y(the)i(in)m(ternal)h(IO)f(bu\013ers)f(and)g(simply)h
+(reads)g(or)g(writes)h(the)f(desired)g(b)m(ytes)g(directly)h(in)f(the)g
+(disk)g(\014le)g(with)0 1393 y(a)i(single)g(call)g(to)g(a)g(lo)m(w-lev)
+m(el)i(\014le)d(read)g(or)h(write)f(routine.)58 b(The)36
+b(minim)m(um)g(threshold)f(for)h(the)h(n)m(um)m(b)s(er)e(of)0
+1506 y(b)m(ytes)40 b(to)g(read)f(or)g(write)g(this)h(w)m(a)m(y)g(is)f
+(set)h(b)m(y)f(the)g(MINDIRECT)g(parameter)h(and)e(is)i(curren)m(tly)f
+(set)h(to)g(3)0 1619 y(FITS)28 b(blo)s(c)m(ks)g(=)g(8640)i(b)m(ytes.)41
+b(This)28 b(is)g(the)g(most)h(e\016cien)m(t)h(w)m(a)m(y)f(to)g(read)g
+(or)f(write)h(large)g(c)m(h)m(unks)f(of)g(data)i(and)0
+1732 y(can)37 b(ac)m(hiev)m(e)i(IO)d(transfer)g(rates)h(of)g(5)g({)g
+(10MB/s)i(or)d(greater.)61 b(Note)38 b(that)f(this)g(fast)g(direct)g
+(IO)f(pro)s(cess)g(is)0 1844 y(not)29 b(applicable)g(when)e(accessing)j
+(columns)f(of)f(data)h(in)f(a)h(FITS)f(table)h(b)s(ecause)g(the)f(b)m
+(ytes)h(are)g(generally)h(not)0 1957 y(con)m(tiguous)g(since)f(they)g
+(are)h(in)m(terlea)m(v)m(ed)h(b)m(y)e(the)g(other)g(columns)g(of)g
+(data)g(in)g(the)g(table.)41 b(This)28 b(explains)h(wh)m(y)0
+2070 y(the)i(sp)s(eed)e(for)h(accessing)i(FITS)e(tables)h(is)f
+(generally)i(slo)m(w)m(er)f(than)g(accessing)g(FITS)f(images.)0
+2230 y(Giv)m(en)i(this)g(bac)m(kground)f(information,)h(the)g(general)g
+(strategy)h(for)e(e\016cien)m(tly)i(accessing)g(FITS)e(\014les)g
+(should)0 2343 y(b)s(e)e(apparen)m(t:)41 b(when)28 b(dealing)j(with)e
+(FITS)g(images,)i(read)e(or)h(write)g(large)g(c)m(h)m(unks)g(of)g(data)
+g(at)g(a)g(time)g(so)g(that)0 2456 y(the)25 b(direct)g(IO)f(mec)m
+(hanism)g(will)h(b)s(e)f(in)m(v)m(ok)m(ed;)k(when)c(accessing)i(FITS)e
+(headers)g(or)g(FITS)g(tables,)j(on)d(the)h(other)0 2569
+y(hand,)35 b(once)g(a)g(particular)g(FITS)f(blo)s(c)m(k)i(has)e(b)s
+(een)g(loading)i(in)m(to)f(one)g(of)g(the)g(IO)f(bu\013ers,)h(try)g(to)
+g(access)h(all)0 2682 y(the)30 b(needed)g(information)g(in)g(that)g
+(blo)s(c)m(k)h(b)s(efore)f(it)g(gets)h(\015ushed)d(out)j(of)f(the)g(IO)
+f(bu\013er.)40 b(It)30 b(is)g(imp)s(ortan)m(t)g(to)0
+2795 y(a)m(v)m(oid)e(the)f(situation)g(where)f(the)h(same)g(FITS)e(blo)
+s(c)m(k)i(is)g(b)s(eing)f(read)g(then)g(\015ushed)f(from)h(a)h(IO)f
+(bu\013er)f(m)m(ultiple)0 2908 y(times.)0 3068 y(The)30
+b(follo)m(wing)i(section)f(giv)m(es)h(more)e(sp)s(eci\014c)h
+(suggestions)g(for)f(optimizing)i(the)e(use)g(of)h(CFITSIO.)0
+3411 y Ff(13.2)136 b(Optimization)46 b(Strategies)0 3663
+y Fj(1.)d(Because)32 b(the)f(data)g(in)g(FITS)f(\014les)h(is)g(alw)m(a)
+m(ys)h(stored)f(in)g("big-endian")h(b)m(yte)f(order,)g(where)f(the)h
+(\014rst)f(b)m(yte)0 3776 y(of)g(n)m(umeric)h(v)-5 b(alues)30
+b(con)m(tains)i(the)e(most)h(signi\014can)m(t)g(bits)f(and)g(the)g
+(last)i(b)m(yte)e(con)m(tains)i(the)e(least)i(signi\014can)m(t)0
+3889 y(bits,)e(CFITSIO)f(m)m(ust)h(sw)m(ap)g(the)g(order)f(of)h(the)h
+(b)m(ytes)f(when)f(reading)h(or)g(writing)g(FITS)g(\014les)g(when)f
+(running)0 4002 y(on)k(little-endian)i(mac)m(hines)f(\(e.g.,)i(Lin)m
+(ux)d(and)g(Microsoft)i(Windo)m(ws)e(op)s(erating)h(systems)g(running)d
+(on)j(PCs)0 4115 y(with)c(x86)h(CPUs\).)0 4275 y(On)i(fairly)h(new)f
+(CPUs)g(that)i(supp)s(ort)d("SSSE3")h(mac)m(hine)h(instructions)g
+(\(e.g.,)i(starting)f(with)e(In)m(tel)i(Core)f(2)0 4388
+y(CPUs)21 b(in)h(2007,)j(and)d(in)f(AMD)i(CPUs)e(b)s(eginning)g(in)h
+(2011\))i(signi\014can)m(tly)f(faster)f(4-b)m(yte)h(and)e(8-b)m(yte)i
+(sw)m(apping)0 4501 y(algorithms)k(are)g(a)m(v)-5 b(ailable.)42
+b(These)26 b(faster)h(b)m(yte)g(sw)m(apping)f(functions)g(are)h(not)g
+(used)e(b)m(y)i(default)f(in)g(CFITSIO)0 4614 y(\(b)s(ecause)c(of)f
+(the)h(p)s(oten)m(tial)g(co)s(de)g(p)s(ortablilit)m(y)g(issues\),)i
+(but)c(users)h(can)g(enable)h(them)f(on)h(supp)s(orted)d(platforms)0
+4727 y(b)m(y)38 b(adding)f(the)h(appropriate)f(compiler)i(\015ags)e
+(\(-mssse3)i(with)e(gcc)i(or)f(icc)g(on)g(lin)m(ux\))g(when)e
+(compiling)j(the)0 4840 y(sw)m(appro)s(c.c)30 b(source)g(\014le,)g
+(whic)m(h)g(will)g(allo)m(w)i(the)e(compiler)g(to)h(generate)h(co)s(de)
+e(using)f(the)h(SSSE3)f(instruction)0 4952 y(set.)41
+b(A)28 b(con)m(v)m(enien)m(t)i(w)m(a)m(y)f(to)g(do)g(this)f(is)g(to)h
+(con\014gure)f(the)g(CFITSIO)f(library)h(with)g(the)g(follo)m(wing)i
+(command:)95 5220 y Fe(>)96 b(./configure)44 b(--enable-ssse3)0
+5488 y Fj(Note,)37 b(ho)m(w)m(ev)m(er,)h(that)d(a)g(binary)f
+(executable)j(\014le)e(that)g(is)g(created)h(using)e(these)h(faster)g
+(functions)g(will)g(only)0 5601 y(run)c(on)h(mac)m(hines)g(that)h(supp)
+s(ort)d(the)i(SSSE3)f(mac)m(hine)i(instructions.)45 b(It)33
+b(will)f(crash)g(on)g(mac)m(hines)g(that)h(do)0 5714
+y(not)e(supp)s(ort)d(them.)p eop end
+%%Page: 161 169
+TeXDict begin 161 168 bop 0 299 a Fh(13.2.)73 b(OPTIMIZA)-8
+b(TION)29 b(STRA)-8 b(TEGIES)2186 b Fj(161)0 555 y(F)-8
+b(or)36 b(faster)f(2-b)m(yte)i(sw)m(aps)e(on)g(virtually)g(all)h
+(x86-64)h(CPUs)e(\(ev)m(en)h(those)g(that)f(do)g(not)h(supp)s(ort)d
+(SSSE3\),)j(a)0 668 y(v)-5 b(arian)m(t)26 b(using)e(only)g(SSE2)g
+(instructions)h(exists.)39 b(SSE2)24 b(is)h(enabled)f(b)m(y)h(default)g
+(on)f(x86)p 3066 668 28 4 v 34 w(64)h(CPUs)f(with)h(64-bit)0
+781 y(op)s(erating)30 b(systems)f(\(and)g(is)g(also)i(automatically)h
+(enabled)d(b)m(y)g(the)g({enable-ssse3)i(\015ag\).)41
+b(When)30 b(running)d(on)0 894 y(x86)p 143 894 V 34 w(64)k(CPUs)g(with)
+f(32-bit)i(op)s(erating)g(systems,)f(these)g(faster)h(2-b)m(yte)g(sw)m
+(apping)f(algorithms)g(are)h(not)f(used)0 1007 y(b)m(y)f(default)h(in)f
+(CFITSIO,)f(but)h(can)g(b)s(e)g(enabled)g(explicitly)i(with:)0
+1233 y Fe(./configure)45 b(--enable-sse2)0 1460 y Fj(Preliminary)f
+(testing)h(indicates)g(that)g(these)f(SSSE3)f(and)g(SSE2)g(based)h(b)m
+(yte-sw)m(apping)h(algorithms)g(can)0 1573 y(b)s(o)s(ost)31
+b(the)h(CFITSIO)e(p)s(erformance)h(when)f(reading)i(or)f(writing)h
+(FITS)f(images)h(b)m(y)g(20\045)g(-)g(30\045)g(or)f(more.)45
+b(It)0 1686 y(is)36 b(imp)s(ortan)m(t)g(to)g(note,)i(ho)m(w)m(ev)m(er,)
+h(that)d(compiler)g(optimization)i(m)m(ust)e(b)s(e)f(turned)f(on)i
+(\(e.g.,)j(b)m(y)d(using)f(the)0 1799 y(-O1)f(or)g(-O2)g(\015ags)g(in)g
+(gcc\))h(when)e(building)g(programs)h(that)g(use)g(these)g(fast)g(b)m
+(yte-sw)m(apping)h(algorithms)f(in)0 1912 y(order)d(to)h(reap)f(the)h
+(full)f(b)s(ene\014t)g(of)g(the)h(SSSE3)e(and)h(SSE2)g(instructions;)h
+(without)f(optimization,)j(the)e(co)s(de)0 2025 y(ma)m(y)f(actually)h
+(run)d(slo)m(w)m(er)i(than)f(when)g(using)g(more)g(traditional)i(b)m
+(yte-sw)m(apping)f(tec)m(hniques.)0 2185 y(2.)54 b(When)34
+b(dealing)h(with)g(a)g(FITS)e(primary)h(arra)m(y)h(or)g(IMA)m(GE)g
+(extension,)i(it)e(is)f(more)h(e\016cien)m(t)h(to)f(read)g(or)0
+2298 y(write)c(large)g(c)m(h)m(unks)f(of)g(the)h(image)g(at)h(a)e(time)
+h(\(at)h(least)f(3)g(FITS)f(blo)s(c)m(ks)g(=)g(8640)i(b)m(ytes\))f(so)g
+(that)g(the)f(direct)0 2411 y(IO)j(mec)m(hanism)h(will)f(b)s(e)g(used)g
+(as)g(describ)s(ed)g(in)g(the)g(previous)g(section.)51
+b(Smaller)34 b(c)m(h)m(unks)f(of)g(data)h(are)g(read)0
+2524 y(or)d(written)g(via)h(the)f(IO)f(bu\013ers,)g(whic)m(h)h(is)g
+(somewhat)g(less)g(e\016cien)m(t)i(b)s(ecause)e(of)g(the)g(extra)h(cop)
+m(y)f(op)s(eration)0 2636 y(and)26 b(additional)h(b)s(o)s(okk)m(eeping)
+g(steps)g(that)g(are)g(required.)39 b(In)26 b(principle)g(it)h(is)g
+(more)f(e\016cien)m(t)i(to)g(read)e(or)h(write)0 2749
+y(as)i(big)g(an)g(arra)m(y)h(of)f(image)h(pixels)f(at)h(one)f(time)g
+(as)h(p)s(ossible,)f(ho)m(w)m(ev)m(er,)h(if)f(the)h(arra)m(y)f(b)s
+(ecomes)g(so)g(large)h(that)0 2862 y(the)i(op)s(erating)g(system)f
+(cannot)h(store)g(it)g(all)h(in)e(RAM,)h(then)f(the)h(p)s(erformance)f
+(ma)m(y)h(b)s(e)f(degraded)g(b)s(ecause)0 2975 y(of)g(the)f(increased)h
+(sw)m(apping)f(of)g(virtual)h(memory)f(to)h(disk.)0 3135
+y(3.)51 b(When)33 b(dealing)i(with)e(FITS)g(tables,)j(the)e(most)g(imp)
+s(ortan)m(t)g(e\016ciency)g(factor)h(in)e(the)h(soft)m(w)m(are)h
+(design)f(is)0 3248 y(to)j(read)f(or)g(write)g(the)g(data)h(in)f(the)g
+(FITS)g(\014le)g(in)g(a)g(single)h(pass)f(through)f(the)h(\014le.)58
+b(An)36 b(example)h(of)f(p)s(o)s(or)0 3361 y(program)g(design)h(w)m
+(ould)f(b)s(e)g(to)h(read)g(a)f(large,)k(3-column)d(table)g(b)m(y)g
+(sequen)m(tially)h(reading)f(the)f(en)m(tire)i(\014rst)0
+3474 y(column,)25 b(then)f(going)h(bac)m(k)f(to)h(read)e(the)h(2nd)g
+(column,)h(and)e(\014nally)h(the)g(3rd)f(column;)j(this)e(ob)m(viously)
+g(requires)0 3587 y(3)j(passes)g(through)g(the)g(\014le)g(whic)m(h)g
+(could)g(triple)g(the)h(execution)g(time)g(of)f(an)g(IO)f(limited)i
+(program.)40 b(F)-8 b(or)27 b(small)0 3700 y(tables)k(this)f(is)h(not)f
+(imp)s(ortan)m(t,)h(but)f(when)f(reading)h(m)m(ulti-megab)m(yte)j
+(sized)e(tables)g(these)g(ine\016ciencies)h(can)0 3813
+y(b)s(ecome)d(signi\014can)m(t.)41 b(The)28 b(more)h(e\016cien)m(t)h
+(pro)s(cedure)d(in)i(this)f(case)i(is)e(to)i(read)e(or)h(write)g(only)f
+(as)h(man)m(y)g(ro)m(ws)0 3926 y(of)j(the)g(table)g(as)g(will)g(\014t)g
+(in)m(to)g(the)g(a)m(v)-5 b(ailable)34 b(in)m(ternal)e(IO)f(bu\013ers,)
+h(then)f(access)i(all)f(the)g(necessary)g(columns)0 4039
+y(of)f(data)h(within)e(that)i(range)f(of)g(ro)m(ws.)43
+b(Then)29 b(after)j(the)f(program)g(is)g(completely)h(\014nished)e
+(with)g(the)i(data)f(in)0 4152 y(those)i(ro)m(ws)e(it)i(can)f(mo)m(v)m
+(e)i(on)e(to)g(the)h(next)f(range)g(of)g(ro)m(ws)g(that)h(will)f(\014t)
+g(in)g(the)g(bu\013ers,)f(con)m(tin)m(uing)i(in)f(this)0
+4264 y(w)m(a)m(y)c(un)m(til)f(the)f(en)m(tire)i(\014le)f(has)f(b)s(een)
+g(pro)s(cessed.)39 b(By)27 b(using)f(this)h(pro)s(cedure)e(of)i
+(accessing)h(all)g(the)e(columns)h(of)0 4377 y(a)j(table)g(in)f
+(parallel)h(rather)f(than)g(sequen)m(tially)-8 b(,)32
+b(eac)m(h)e(blo)s(c)m(k)g(of)g(the)f(FITS)g(\014le)g(will)g(only)h(b)s
+(e)e(read)i(or)f(written)0 4490 y(once.)0 4650 y(The)g(optimal)h(n)m
+(um)m(b)s(er)e(of)i(ro)m(ws)f(to)i(read)e(or)g(write)h(at)g(one)g(time)
+g(in)f(a)h(giv)m(en)g(table)h(dep)s(ends)c(on)j(the)f(width)g(of)0
+4763 y(the)c(table)h(ro)m(w)f(and)f(on)h(the)g(n)m(um)m(b)s(er)e(of)i
+(IO)g(bu\013ers)e(that)j(ha)m(v)m(e)g(b)s(een)e(allo)s(cated)j(in)e
+(CFITSIO.)e(The)h(CFITSIO)0 4876 y(Iterator)h(routine)f(will)g
+(automatically)j(use)c(the)h(optimal-sized)i(bu\013er,)e(but)g(there)g
+(is)g(also)g(a)h(CFITSIO)d(routine)0 4989 y(that)31 b(will)g(return)f
+(the)h(optimal)h(n)m(um)m(b)s(er)d(of)i(ro)m(ws)g(for)f(a)h(giv)m(en)h
+(table:)43 b(\014ts)p 2629 4989 V 32 w(get)p 2781 4989
+V 34 w(ro)m(wsize.)g(It)31 b(is)g(not)g(critical)h(to)0
+5102 y(use)h(exactly)j(the)e(v)-5 b(alue)34 b(of)g(nro)m(ws)f(returned)
+f(b)m(y)i(this)g(routine,)g(as)g(long)h(as)f(one)g(do)s(es)f(not)h
+(exceed)h(it.)51 b(Using)0 5215 y(a)37 b(v)m(ery)g(small)g(v)-5
+b(alue)37 b(ho)m(w)m(ev)m(er)h(can)f(also)g(lead)g(to)h(p)s(o)s(or)d(p)
+s(erformance)h(b)s(ecause)g(of)h(the)g(o)m(v)m(erhead)h(from)e(the)0
+5328 y(larger)31 b(n)m(um)m(b)s(er)e(of)i(subroutine)e(calls.)0
+5488 y(The)36 b(optimal)h(n)m(um)m(b)s(er)e(of)h(ro)m(ws)g(returned)f
+(b)m(y)i(\014ts)p 1829 5488 V 32 w(get)p 1981 5488 V
+34 w(ro)m(wsize)g(is)g(v)-5 b(alid)36 b(only)g(as)h(long)g(as)f(the)h
+(application)0 5601 y(program)27 b(is)g(only)g(reading)h(or)f(writing)g
+(data)h(in)f(the)g(sp)s(eci\014ed)f(table.)41 b(An)m(y)27
+b(other)g(calls)i(to)f(access)g(data)g(in)f(the)0 5714
+y(table)i(header)f(w)m(ould)f(cause)i(additional)g(blo)s(c)m(ks)f(of)g
+(data)g(to)h(b)s(e)e(loaded)i(in)m(to)g(the)f(IO)f(bu\013ers)g
+(displacing)h(data)p eop end
+%%Page: 162 170
+TeXDict begin 162 169 bop 0 299 a Fj(162)1876 b Fh(CHAPTER)30
+b(13.)112 b(OPTIMIZING)29 b(PR)m(OGRAMS)0 555 y Fj(from)34
+b(the)h(original)h(table,)h(and)d(should)f(b)s(e)h(a)m(v)m(oided)i
+(during)e(the)h(critical)h(p)s(erio)s(d)e(while)g(the)h(table)h(is)e(b)
+s(eing)0 668 y(read)c(or)h(written.)0 828 y(4.)39 b(Use)25
+b(the)g(CFITSIO)e(Iterator)j(routine.)39 b(This)24 b(routine)h(pro)m
+(vides)f(a)i(more)e(`ob)5 b(ject)26 b(orien)m(ted')g(w)m(a)m(y)g(of)f
+(reading)0 941 y(and)34 b(writing)g(FITS)g(\014les)g(whic)m(h)h
+(automatically)i(uses)d(the)g(most)h(appropriate)g(data)g(bu\013er)e
+(size)i(to)h(ac)m(hiev)m(e)0 1054 y(the)31 b(maxim)m(um)f(I/O)g
+(throughput.)0 1214 y(5.)39 b(Use)24 b(binary)f(table)h(extensions)g
+(rather)f(than)h(ASCI)s(I)e(table)i(extensions)g(for)f(b)s(etter)h
+(e\016ciency)h(when)d(dealing)0 1327 y(with)37 b(tabular)h(data.)62
+b(The)37 b(I/O)g(to)h(ASCI)s(I)e(tables)i(is)g(slo)m(w)m(er)g(b)s
+(ecause)g(of)f(the)h(o)m(v)m(erhead)h(in)e(formatting)h(or)0
+1440 y(parsing)32 b(the)g(ASCI)s(I)f(data)i(\014elds)f(and)g(b)s
+(ecause)g(ASCI)s(I)f(tables)i(are)g(ab)s(out)f(t)m(wice)i(as)f(large)g
+(as)g(binary)e(tables)0 1553 y(that)g(ha)m(v)m(e)h(the)e(same)h
+(information)g(con)m(ten)m(t.)0 1713 y(6.)64 b(Design)39
+b(soft)m(w)m(are)g(so)g(that)f(it)h(reads)f(the)g(FITS)f(header)h(k)m
+(eyw)m(ords)g(in)g(the)g(same)h(order)e(in)h(whic)m(h)g(they)0
+1826 y(o)s(ccur)28 b(in)h(the)g(\014le.)40 b(When)28
+b(reading)h(k)m(eyw)m(ords,)h(CFITSIO)d(searc)m(hes)i(forw)m(ard)g
+(starting)g(from)f(the)h(p)s(osition)g(of)0 1939 y(the)g(last)i(k)m
+(eyw)m(ord)e(that)h(w)m(as)g(read.)40 b(If)29 b(it)g(reac)m(hes)i(the)e
+(end)g(of)g(the)h(header)f(without)g(\014nding)f(the)h(k)m(eyw)m(ord,)h
+(it)0 2052 y(then)j(go)s(es)h(bac)m(k)g(to)h(the)e(start)h(of)g(the)g
+(header)f(and)g(con)m(tin)m(ues)h(the)g(searc)m(h)g(do)m(wn)f(to)h(the)
+g(p)s(osition)f(where)g(it)0 2165 y(started.)41 b(In)30
+b(practice,)i(as)e(long)h(as)g(the)f(en)m(tire)i(FITS)d(header)h(can)h
+(\014t)f(at)h(one)g(time)g(in)f(the)g(a)m(v)-5 b(ailable)33
+b(in)m(ternal)0 2278 y(IO)23 b(bu\013ers,)i(then)e(the)i(header)e(k)m
+(eyw)m(ord)i(access)g(will)f(b)s(e)g(relativ)m(ely)i(fast)e(and)g(it)g
+(mak)m(es)h(little)h(di\013erence)e(whic)m(h)0 2391 y(order)30
+b(they)g(are)h(accessed.)0 2551 y(7.)40 b(Av)m(oid)29
+b(the)e(use)h(of)f(scaling)i(\(b)m(y)f(using)f(the)h(BSCALE)e(and)h
+(BZER)m(O)h(or)f(TSCAL)g(and)g(TZER)m(O)f(k)m(eyw)m(ords\))0
+2664 y(in)35 b(FITS)f(\014les)g(since)i(the)f(scaling)h(op)s(erations)f
+(add)f(to)i(the)f(pro)s(cessing)f(time)i(needed)e(to)i(read)f(or)g
+(write)g(the)0 2777 y(data.)k(In)24 b(some)h(cases)h(it)f(ma)m(y)g(b)s
+(e)f(more)g(e\016cien)m(t)i(to)g(temp)s(orarily)e(turn)g(o\013)h(the)f
+(scaling)i(\(using)e(\014ts)p 3490 2777 28 4 v 33 w(set)p
+3634 2777 V 33 w(bscale)0 2889 y(or)30 b(\014ts)p 238
+2889 V 33 w(set)p 382 2889 V 33 w(tscale\))j(and)c(then)h(read)h(or)f
+(write)h(the)f(ra)m(w)h(unscaled)f(v)-5 b(alues)31 b(in)f(the)g(FITS)g
+(\014le.)0 3050 y(8.)77 b(Av)m(oid)43 b(using)f(the)h(`implicit)g(data)
+h(t)m(yp)s(e)e(con)m(v)m(ersion')i(capabilit)m(y)g(in)e(CFITSIO.)f(F)-8
+b(or)44 b(instance,)i(when)0 3163 y(reading)28 b(a)g(FITS)f(image)i
+(with)e(BITPIX)h(=)f(-32)i(\(32-bit)g(\015oating)g(p)s(oin)m(t)f
+(pixels\),)h(read)e(the)h(data)g(in)m(to)h(a)f(single)0
+3275 y(precision)40 b(\015oating)h(p)s(oin)m(t)f(data)h(arra)m(y)f(in)g
+(the)g(program.)69 b(F)-8 b(orcing)41 b(CFITSIO)e(to)i(con)m(v)m(ert)g
+(the)f(data)h(to)g(a)0 3388 y(di\013eren)m(t)31 b(data)g(t)m(yp)s(e)f
+(can)h(slo)m(w)g(the)g(program.)0 3548 y(9.)57 b(Where)36
+b(feasible,)i(design)e(FITS)f(binary)g(tables)h(using)f(v)m(ector)j
+(column)d(elemen)m(ts)i(so)f(that)g(the)g(data)h(are)0
+3661 y(written)30 b(as)g(a)g(con)m(tiguous)h(set)f(of)g(b)m(ytes,)g
+(rather)g(than)f(as)h(single)g(elemen)m(ts)h(in)f(m)m(ultiple)g(ro)m
+(ws.)41 b(F)-8 b(or)30 b(example,)0 3774 y(it)36 b(is)g(faster)g(to)g
+(access)h(the)f(data)h(in)e(a)h(table)h(that)f(con)m(tains)h(a)f
+(single)g(ro)m(w)g(and)f(2)h(columns)f(with)h(TF)m(ORM)0
+3887 y(k)m(eyw)m(ords)d(equal)h(to)g('10000E')h(and)e('10000J',)j(than)
+d(it)g(is)g(to)h(access)g(the)g(same)f(amoun)m(t)h(of)f(data)h(in)f(a)g
+(table)0 4000 y(with)40 b(10000)j(ro)m(ws)d(whic)m(h)h(has)f(columns)g
+(with)g(the)h(TF)m(ORM)g(k)m(eyw)m(ords)g(equal)g(to)g('1E')h(and)e
+('1J'.)h(In)f(the)0 4113 y(former)27 b(case)i(the)f(10000)i(\015oating)
+f(p)s(oin)m(t)f(v)-5 b(alues)28 b(in)g(the)g(\014rst)f(column)h(are)g
+(all)h(written)f(in)f(a)h(con)m(tiguous)h(blo)s(c)m(k)0
+4226 y(of)d(the)f(\014le)h(whic)m(h)f(can)h(b)s(e)f(read)g(or)g
+(written)h(quic)m(kly)-8 b(,)28 b(whereas)d(in)g(the)h(second)f(case)i
+(eac)m(h)g(\015oating)f(p)s(oin)m(t)f(v)-5 b(alue)0 4339
+y(in)34 b(the)g(\014rst)f(column)g(is)h(in)m(terlea)m(v)m(ed)j(with)c
+(the)h(in)m(teger)i(v)-5 b(alue)34 b(in)g(the)g(second)g(column)f(of)h
+(the)g(same)h(ro)m(w)f(so)0 4452 y(CFITSIO)29 b(has)h(to)h(explicitly)h
+(mo)m(v)m(e)g(to)f(the)g(p)s(osition)f(of)h(eac)m(h)g(elemen)m(t)h(to)f
+(b)s(e)f(read)g(or)g(written.)0 4612 y(10.)45 b(Av)m(oid)33
+b(the)f(use)f(of)h(v)-5 b(ariable)32 b(length)g(v)m(ector)h(columns)f
+(in)f(binary)g(tables,)i(since)f(an)m(y)g(reading)f(or)h(writing)0
+4725 y(of)h(these)g(data)g(requires)f(that)h(CFITSIO)f(\014rst)f(lo)s
+(ok)j(up)d(or)i(compute)g(the)f(starting)i(address)e(of)g(eac)m(h)i(ro)
+m(w)f(of)0 4838 y(data)e(in)f(the)h(heap.)40 b(In)30
+b(practice,)i(this)e(is)g(probably)g(not)h(a)f(signi\014can)m(t)i
+(e\016ciency)f(issue.)0 4998 y(11.)73 b(When)40 b(cop)m(ying)i(data)g
+(from)e(one)h(FITS)f(table)i(to)f(another,)j(it)e(is)e(faster)i(to)f
+(transfer)g(the)f(ra)m(w)h(b)m(ytes)0 5111 y(instead)28
+b(of)h(reading)f(then)g(writing)g(eac)m(h)h(column)f(of)g(the)g(table.)
+41 b(The)28 b(CFITSIO)e(routines)i(\014ts)p 3349 5111
+V 33 w(read)p 3554 5111 V 32 w(tblb)m(ytes)0 5224 y(and)36
+b(\014ts)p 310 5224 V 32 w(write)p 544 5224 V 33 w(tblb)m(ytes)i(will)f
+(p)s(erform)e(lo)m(w-lev)m(el)k(reads)e(or)f(writes)h(of)g(an)m(y)g
+(con)m(tiguous)g(range)g(of)g(b)m(ytes)g(in)0 5337 y(a)d(table)g
+(extension.)51 b(These)33 b(routines)h(can)f(b)s(e)g(used)g(to)h(read)f
+(or)h(write)g(a)f(whole)h(ro)m(w)g(\(or)g(m)m(ultiple)g(ro)m(ws)f(for)0
+5450 y(ev)m(en)e(greater)h(e\016ciency\))h(of)e(a)g(table)h(with)e(a)h
+(single)h(function)e(call.)43 b(These)31 b(routines)g(are)g(fast)g(b)s
+(ecause)g(they)0 5562 y(b)m(ypass)36 b(all)h(the)g(usual)f(data)h
+(scaling,)i(error)d(c)m(hec)m(king)i(and)e(mac)m(hine)h(dep)s(enden)m
+(t)e(data)i(con)m(v)m(ersion)h(that)f(is)0 5675 y(normally)g(done)g(b)m
+(y)f(CFITSIO,)g(and)g(they)h(allo)m(w)h(the)g(program)e(to)i(write)f
+(the)g(data)g(to)h(the)f(output)f(\014le)h(in)p eop end
+%%Page: 163 171
+TeXDict begin 163 170 bop 0 299 a Fh(13.2.)73 b(OPTIMIZA)-8
+b(TION)29 b(STRA)-8 b(TEGIES)2186 b Fj(163)0 555 y(exactly)30
+b(the)e(same)h(b)m(yte)g(order.)40 b(F)-8 b(or)29 b(these)f(same)h
+(reasons,)g(these)g(routines)f(can)g(corrupt)g(the)g(FITS)g(data)h
+(\014le)0 668 y(if)36 b(used)e(incorrectly)j(b)s(ecause)f(no)f(v)-5
+b(alidation)37 b(or)f(mac)m(hine)g(dep)s(enden)m(t)e(con)m(v)m(ersion)j
+(is)f(p)s(erformed)e(b)m(y)h(these)0 781 y(routines.)55
+b(These)35 b(routines)g(are)h(only)f(recommended)g(for)g(optimizing)h
+(critical)h(pieces)f(of)g(co)s(de)f(and)g(should)0 894
+y(only)e(b)s(e)g(used)g(b)m(y)g(programmers)g(who)g(thoroughly)g
+(understand)e(the)j(in)m(ternal)g(format)g(of)f(the)h(FITS)e(tables)0
+1007 y(they)f(are)f(reading)h(or)f(writing.)0 1167 y(12.)41
+b(Another)30 b(strategy)g(for)g(impro)m(ving)f(the)h(sp)s(eed)e(of)i
+(writing)g(a)f(FITS)g(table,)i(similar)f(to)g(the)f(previous)g(one,)0
+1280 y(is)j(to)g(directly)h(construct)f(the)f(en)m(tire)i(b)m(yte)f
+(stream)g(for)g(a)g(whole)g(table)g(ro)m(w)g(\(or)g(m)m(ultiple)h(ro)m
+(ws\))f(within)f(the)0 1393 y(application)g(program)e(and)g(then)h
+(write)g(it)g(to)g(the)g(FITS)f(\014le)h(with)f(\014ts)p
+2520 1393 28 4 v 32 w(write)p 2754 1393 V 33 w(tblb)m(ytes.)41
+b(This)29 b(a)m(v)m(oids)i(all)g(the)0 1506 y(o)m(v)m(erhead)f
+(normally)g(presen)m(t)f(in)g(the)h(column-orien)m(ted)g(CFITSIO)e
+(write)h(routines.)40 b(This)29 b(tec)m(hnique)h(should)0
+1619 y(only)35 b(b)s(e)e(used)h(for)g(critical)i(applications)g(b)s
+(ecause)e(it)h(mak)m(es)h(the)e(co)s(de)h(more)f(di\016cult)h(to)g
+(understand)e(and)0 1732 y(main)m(tain,)38 b(and)d(it)h(mak)m(es)g(the)
+g(co)s(de)f(more)h(system)g(dep)s(enden)m(t)e(\(e.g.,)39
+b(do)c(the)h(b)m(ytes)g(need)f(to)h(b)s(e)f(sw)m(app)s(ed)0
+1844 y(b)s(efore)30 b(writing)g(to)h(the)g(FITS)f(\014le?\).)0
+2005 y(13.)40 b(Finally)-8 b(,)29 b(external)e(factors)g(suc)m(h)e(as)i
+(the)f(sp)s(eed)f(of)i(the)f(data)h(storage)g(device,)h(the)f(size)g
+(of)f(the)g(data)h(cac)m(he,)0 2118 y(the)34 b(amoun)m(t)h(of)f(disk)g
+(fragmen)m(tation,)j(and)c(the)i(amoun)m(t)f(of)h(RAM)f(a)m(v)-5
+b(ailable)37 b(on)d(the)g(system)g(can)h(all)g(ha)m(v)m(e)0
+2230 y(a)k(signi\014can)m(t)g(impact)g(on)f(o)m(v)m(erall)j(I/O)d
+(e\016ciency)-8 b(.)66 b(F)-8 b(or)39 b(critical)h(applications,)i(the)
+c(en)m(tire)i(hardw)m(are)e(and)0 2343 y(soft)m(w)m(are)32
+b(system)e(should)g(b)s(e)f(review)m(ed)i(to)h(iden)m(tify)e(an)m(y)h
+(p)s(oten)m(tial)h(I/O)e(b)s(ottlenec)m(ks.)p eop end
+%%Page: 164 172
+TeXDict begin 164 171 bop 0 299 a Fj(164)1876 b Fh(CHAPTER)30
+b(13.)112 b(OPTIMIZING)29 b(PR)m(OGRAMS)p eop end
+%%Page: 165 173
+TeXDict begin 165 172 bop 0 1225 a Fg(App)5 b(endix)64
+b(A)0 1687 y Fm(Index)77 b(of)h(Routines)50 2154 y Fj(\014ts)p
+177 2154 28 4 v 32 w(add)p 356 2154 V 32 w(group)p 616
+2154 V 33 w(mem)m(b)s(er)245 b(88)50 2267 y(\014ts)p
+177 2267 V 32 w(ascii)p 380 2267 V 34 w(tform)579 b(66)50
+2380 y(\014ts)p 177 2380 V 32 w(binary)p 465 2380 V 32
+w(tform)496 b(66)50 2493 y(\014ts)p 177 2493 V 32 w(calculator)617
+b(57)50 2606 y(\014ts)p 177 2606 V 32 w(calculator)p
+596 2606 V 35 w(rng)450 b(57)50 2719 y(\014ts)p 177 2719
+V 32 w(calc)p 359 2719 V 35 w(binning)520 b(58)50 2832
+y(\014ts)p 177 2832 V 32 w(calc)p 359 2832 V 35 w(ro)m(ws)639
+b(56)50 2945 y(\014ts)p 177 2945 V 32 w(c)m(hange)p 478
+2945 V 34 w(group)473 b(86)50 3057 y(\014ts)p 177 3057
+V 32 w(clear)p 395 3057 V 34 w(errmark)467 b(30)50 3170
+y(\014ts)p 177 3170 V 32 w(clear)p 395 3170 V 34 w(errmsg)515
+b(30)50 3283 y(\014ts)p 177 3283 V 32 w(close)p 395 3283
+V 34 w(\014le)668 b(33)50 3396 y(\014ts)p 177 3396 V
+32 w(compact)p 541 3396 V 34 w(group)410 b(87)50 3509
+y(\014ts)p 177 3509 V 32 w(compare)p 542 3509 V 34 w(str)530
+b(63)50 3622 y(\014ts)p 177 3622 V 32 w(compress)p 569
+3622 V 33 w(heap)379 b(111)50 3735 y(\014ts)p 177 3735
+V 32 w(con)m(v)m(ert)p 498 3735 V 35 w(hdr2str)244 b(37,)31
+b(82)50 3848 y(\014ts)p 177 3848 V 32 w(cop)m(y)p 390
+3848 V 34 w(cell2image)383 b(41)50 3961 y(\014ts)p 177
+3961 V 32 w(cop)m(y)p 390 3961 V 34 w(col)679 b(53)50
+4074 y(\014ts)p 177 4074 V 32 w(cop)m(y)p 390 4074 V
+34 w(data)613 b(96)50 4187 y(\014ts)p 177 4187 V 32 w(cop)m(y)p
+390 4187 V 34 w(\014le)673 b(34)50 4299 y(\014ts)p 177
+4299 V 32 w(cop)m(y)p 390 4299 V 34 w(group)561 b(87)50
+4412 y(\014ts)p 177 4412 V 32 w(cop)m(y)p 390 4412 V
+34 w(hdu)636 b(34)50 4525 y(\014ts)p 177 4525 V 32 w(cop)m(y)p
+390 4525 V 34 w(header)526 b(34)50 4638 y(\014ts)p 177
+4638 V 32 w(cop)m(y)p 390 4638 V 34 w(image2cell)383
+b(41)50 4751 y(\014ts)p 177 4751 V 32 w(cop)m(y)p 390
+4751 V 34 w(image)p 655 4751 V 34 w(section)252 b(44)50
+4864 y(\014ts)p 177 4864 V 32 w(cop)m(y)p 390 4864 V
+34 w(k)m(ey)611 b(101)50 4977 y(\014ts)p 177 4977 V 32
+w(cop)m(y)p 390 4977 V 34 w(mem)m(b)s(er)470 b(89)50
+5090 y(\014ts)p 177 5090 V 32 w(cop)m(y)p 390 5090 V
+34 w(pixlist2image)268 b(58)50 5203 y(\014ts)p 177 5203
+V 32 w(cop)m(y)p 390 5203 V 34 w(ro)m(ws)609 b(53)50
+5316 y(\014ts)p 177 5316 V 32 w(create)p 445 5316 V 35
+w(disk\014le)457 b(32)50 5429 y(\014ts)p 177 5429 V 32
+w(create)p 445 5429 V 35 w(\014le)617 b(32)50 5541 y(\014ts)p
+177 5541 V 32 w(create)p 445 5541 V 35 w(group)505 b(86)50
+5654 y(\014ts)p 177 5654 V 32 w(create)p 445 5654 V 35
+w(hdu)580 b(95)1419 2154 y(\014ts)p 1546 2154 V 32 w(create)p
+1814 2154 V 35 w(img)565 b(41)1419 2267 y(\014ts)p 1546
+2267 V 32 w(create)p 1814 2267 V 35 w(mem\014le)403 b(92)1419
+2380 y(\014ts)p 1546 2380 V 32 w(create)p 1814 2380 V
+35 w(tbl)600 b(49)1419 2493 y(\014ts)p 1546 2493 V 32
+w(create)p 1814 2493 V 35 w(template)364 b(92)1419 2606
+y(\014ts)p 1546 2606 V 32 w(date2str)659 b(61)1419 2719
+y(\014ts)p 1546 2719 V 32 w(deco)s(de)p 1848 2719 V 33
+w(c)m(hksum)380 b(61)1419 2832 y(\014ts)p 1546 2832 V
+32 w(deco)s(de)p 1848 2832 V 33 w(tdim)492 b(51)1419
+2945 y(\014ts)p 1546 2945 V 32 w(delete)p 1809 2945 V
+34 w(col)607 b(52)1419 3057 y(\014ts)p 1546 3057 V 32
+w(delete)p 1809 3057 V 34 w(\014le)601 b(33)1419 3170
+y(\014ts)p 1546 3170 V 32 w(delete)p 1809 3170 V 34 w(hdu)564
+b(35)1419 3283 y(\014ts)p 1546 3283 V 32 w(delete)p 1809
+3283 V 34 w(k)m(ey)584 b(39)1419 3396 y(\014ts)p 1546
+3396 V 32 w(delete)p 1809 3396 V 34 w(record)469 b(39)1419
+3509 y(\014ts)p 1546 3509 V 32 w(delete)p 1809 3509 V
+34 w(ro)m(wlist)452 b(52)1419 3622 y(\014ts)p 1546 3622
+V 32 w(delete)p 1809 3622 V 34 w(ro)m(wrange)356 b(52)1419
+3735 y(\014ts)p 1546 3735 V 32 w(delete)p 1809 3735 V
+34 w(ro)m(ws)537 b(52)1419 3848 y(\014ts)p 1546 3848
+V 32 w(delete)p 1809 3848 V 34 w(str)610 b(39)1419 3961
+y(\014ts)p 1546 3961 V 32 w(enco)s(de)p 1848 3961 V 33
+w(c)m(hksum)380 b(61)1419 4074 y(\014ts)p 1546 4074 V
+32 w(\014le)p 1694 4074 V 33 w(exists)613 b(94)1419 4187
+y(\014ts)p 1546 4187 V 32 w(\014le)p 1694 4187 V 33 w(mo)s(de)618
+b(33)1419 4299 y(\014ts)p 1546 4299 V 32 w(\014le)p 1694
+4299 V 33 w(name)j(33)1419 4412 y(\014ts)p 1546 4412
+V 32 w(\014nd)p 1731 4412 V 32 w(\014rst)p 1921 4412
+V 32 w(ro)m(w)463 b(56)1419 4525 y(\014ts)p 1546 4525
+V 32 w(\014nd)p 1731 4525 V 32 w(nextk)m(ey)490 b(37)1419
+4638 y(\014ts)p 1546 4638 V 32 w(\014nd)p 1731 4638 V
+32 w(ro)m(ws)617 b(56)1419 4751 y(\014ts)p 1546 4751
+V 32 w(\015ush)p 1767 4751 V 32 w(bu\013er)530 b(94)1419
+4864 y(\014ts)p 1546 4864 V 32 w(\015ush)p 1767 4864
+V 32 w(\014le)645 b(94)1419 4977 y(\014ts)p 1546 4977
+V 32 w(free)p 1722 4977 V 33 w(memory)438 b(103)1419
+5090 y(\014ts)p 1546 5090 V 32 w(get)p 1698 5090 V 34
+w(acolparms)383 b(110)1419 5203 y(\014ts)p 1546 5203
+V 32 w(get)p 1698 5203 V 34 w(b)s(colparms)374 b(110)1419
+5316 y(\014ts)p 1546 5316 V 32 w(get)p 1698 5316 V 34
+w(c)m(hksum)529 b(60)1419 5429 y(\014ts)p 1546 5429 V
+32 w(get)p 1698 5429 V 34 w(col)p 1842 5429 V 34 w(displa)m(y)p
+2154 5429 V 33 w(width)145 b(51)1419 5541 y(\014ts)p
+1546 5541 V 32 w(get)p 1698 5541 V 34 w(colname)506 b(49)1419
+5654 y(\014ts)p 1546 5654 V 32 w(get)p 1698 5654 V 34
+w(coln)m(um)543 b(49)2765 2154 y(\014ts)p 2892 2154 V
+33 w(get)p 3045 2154 V 34 w(colt)m(yp)s(e)650 b(50)2765
+2267 y(\014ts)p 2892 2267 V 33 w(get)p 3045 2267 V 34
+w(compression)p 3560 2267 V 32 w(t)m(yp)s(e)247 b(46)2765
+2380 y(\014ts)p 2892 2380 V 33 w(get)p 3045 2380 V 34
+w(eqcolt)m(yp)s(e)562 b(50)2765 2493 y(\014ts)p 2892
+2493 V 33 w(get)p 3045 2493 V 34 w(errstatus)584 b(29)2765
+2606 y(\014ts)p 2892 2606 V 33 w(get)p 3045 2606 V 34
+w(hdrp)s(os)661 b(97)2765 2719 y(\014ts)p 2892 2719 V
+33 w(get)p 3045 2719 V 34 w(hdrspace)584 b(35)2765 2832
+y(\014ts)p 2892 2832 V 33 w(get)p 3045 2832 V 34 w(hdu)p
+3232 2832 V 31 w(n)m(um)575 b(34)2765 2945 y(\014ts)p
+2892 2945 V 33 w(get)p 3045 2945 V 34 w(hdu)p 3232 2945
+V 31 w(t)m(yp)s(e)h(34)2765 3057 y(\014ts)p 2892 3057
+V 33 w(get)p 3045 3057 V 34 w(hduaddr)598 b(95)2765 3170
+y(\014ts)p 2892 3170 V 33 w(get)p 3045 3170 V 34 w(hduaddrll)548
+b(95)2765 3283 y(\014ts)p 2892 3283 V 33 w(get)p 3045
+3283 V 34 w(img)p 3225 3283 V 33 w(dim)603 b(41)2765
+3396 y(\014ts)p 2892 3396 V 33 w(get)p 3045 3396 V 34
+w(img)p 3225 3396 V 33 w(equivt)m(yp)s(e)369 b(40)2765
+3509 y(\014ts)p 2892 3509 V 33 w(get)p 3045 3509 V 34
+w(img)p 3225 3509 V 33 w(param)502 b(41)2765 3622 y(\014ts)p
+2892 3622 V 33 w(get)p 3045 3622 V 34 w(img)p 3225 3622
+V 33 w(size)614 b(41)2765 3735 y(\014ts)p 2892 3735 V
+33 w(get)p 3045 3735 V 34 w(img)p 3225 3735 V 33 w(t)m(yp)s(e)581
+b(40)2765 3848 y(\014ts)p 2892 3848 V 33 w(get)p 3045
+3848 V 34 w(in)m(tt)m(yp)s(e)652 b(65)2765 3961 y(\014ts)p
+2892 3961 V 33 w(get)p 3045 3961 V 34 w(k)m(eyclass)619
+b(65)2765 4074 y(\014ts)p 2892 4074 V 33 w(get)p 3045
+4074 V 34 w(k)m(eyname)589 b(64)2765 4187 y(\014ts)p
+2892 4187 V 33 w(get)p 3045 4187 V 34 w(k)m(eyt)m(yp)s(e)627
+b(64)2765 4299 y(\014ts)p 2892 4299 V 33 w(get)p 3045
+4299 V 34 w(noise)p 3276 4299 V 33 w(bits)557 b(46)2765
+4412 y(\014ts)p 2892 4412 V 33 w(get)p 3045 4412 V 34
+w(n)m(um)p 3254 4412 V 32 w(cols)581 b(49)2765 4525 y(\014ts)p
+2892 4525 V 33 w(get)p 3045 4525 V 34 w(n)m(um)p 3254
+4525 V 32 w(groups)463 b(89)2765 4638 y(\014ts)p 2892
+4638 V 33 w(get)p 3045 4638 V 34 w(n)m(um)p 3254 4638
+V 32 w(hdus)538 b(34)2765 4751 y(\014ts)p 2892 4751 V
+33 w(get)p 3045 4751 V 34 w(n)m(um)p 3254 4751 V 32 w(mem)m(b)s(ers)372
+b(88)2765 4864 y(\014ts)p 2892 4864 V 33 w(get)p 3045
+4864 V 34 w(n)m(um)p 3254 4864 V 32 w(ro)m(ws)547 b(49)2765
+4977 y(\014ts)p 2892 4977 V 33 w(get)p 3045 4977 V 34
+w(ro)m(wsize)603 b(111)2765 5090 y(\014ts)p 2892 5090
+V 33 w(get)p 3045 5090 V 34 w(system)p 3350 5090 V 33
+w(time)454 b(61)2765 5203 y(\014ts)p 2892 5203 V 33 w(get)p
+3045 5203 V 34 w(tile)p 3204 5203 V 34 w(dim)623 b(46)2765
+5316 y(\014ts)p 2892 5316 V 33 w(get)p 3045 5316 V 34
+w(tb)s(col)735 b(66)2765 5429 y(\014ts)p 2892 5429 V
+33 w(get)p 3045 5429 V 34 w(v)m(ersion)656 b(62)2765
+5541 y(\014ts)p 2892 5541 V 33 w(hdr2str)651 b(37,)32
+b(82)2765 5654 y(\014ts)p 2892 5654 V 33 w(insert)p 3148
+5654 V 32 w(atbl)677 b(96)1882 5942 y(165)p eop end
+%%Page: 166 174
+TeXDict begin 166 173 bop 0 299 a Fj(166)2084 b Fh(APPENDIX)31
+b(A.)61 b(INDEX)31 b(OF)f(R)m(OUTINES)50 543 y Fj(\014ts)p
+177 543 28 4 v 32 w(insert)p 432 543 V 33 w(btbl)541
+b(96)50 656 y(\014ts)p 177 656 V 32 w(insert)p 432 656
+V 33 w(col)593 b(52)50 769 y(\014ts)p 177 769 V 32 w(insert)p
+432 769 V 33 w(cols)557 b(52)50 882 y(\014ts)p 177 882
+V 32 w(insert)p 432 882 V 33 w(group)475 b(86)50 995
+y(\014ts)p 177 995 V 32 w(insert)p 432 995 V 33 w(img)557
+b(95)50 1107 y(\014ts)p 177 1107 V 32 w(insert)p 432
+1107 V 33 w(k)m(ey)p 598 1107 V 34 w(n)m(ull)342 b(102)50
+1220 y(\014ts)p 177 1220 V 32 w(insert)p 432 1220 V 33
+w(k)m(ey)p 598 1220 V 34 w(TYP)295 b(102)50 1333 y(\014ts)p
+177 1333 V 32 w(insert)p 432 1333 V 33 w(record)410 b(102)50
+1446 y(\014ts)p 177 1446 V 32 w(insert)p 432 1446 V 33
+w(ro)m(ws)523 b(52)50 1559 y(\014ts)p 177 1559 V 32 w(is)p
+270 1559 V 33 w(reen)m(tran)m(t)502 b(71)50 1672 y(\014ts)p
+177 1672 V 32 w(iterate)p 465 1672 V 35 w(data)492 b(79)50
+1785 y(\014ts)p 177 1785 V 32 w(mak)m(e)p 415 1785 V
+34 w(hist)572 b(59)50 1898 y(\014ts)p 177 1898 V 32 w(mak)m(e)p
+415 1898 V 34 w(k)m(eyn)535 b(64)50 2011 y(\014ts)p 177
+2011 V 32 w(mak)m(e)p 415 2011 V 34 w(nk)m(ey)g(64)50
+2124 y(\014ts)p 177 2124 V 32 w(merge)p 446 2124 V 34
+w(groups)424 b(87)50 2237 y(\014ts)p 177 2237 V 32 w(mo)s(dify)p
+485 2237 V 32 w(card)434 b(104)50 2349 y(\014ts)p 177
+2349 V 32 w(mo)s(dify)p 485 2349 V 32 w(commen)m(t)291
+b(39)50 2462 y(\014ts)p 177 2462 V 32 w(mo)s(dify)p 485
+2462 V 32 w(k)m(ey)p 650 2462 V 34 w(n)m(ull)f(105)50
+2575 y(\014ts)p 177 2575 V 32 w(mo)s(dify)p 485 2575
+V 32 w(k)m(ey)p 650 2575 V 34 w(TYP)243 b(104)50 2688
+y(\014ts)p 177 2688 V 32 w(mo)s(dify)p 485 2688 V 32
+w(name)439 b(39)50 2801 y(\014ts)p 177 2801 V 32 w(mo)s(dify)p
+485 2801 V 32 w(record)358 b(104)50 2914 y(\014ts)p 177
+2914 V 32 w(mo)s(dify)p 485 2914 V 32 w(v)m(ector)p 758
+2914 V 35 w(len)259 b(53)50 3027 y(\014ts)p 177 3027
+V 32 w(mo)m(v)-5 b(abs)p 502 3027 V 33 w(hdu)480 b(33)50
+3140 y(\014ts)p 177 3140 V 32 w(mo)m(vnam)p 547 3140
+V 33 w(hdu)435 b(33)50 3253 y(\014ts)p 177 3253 V 32
+w(mo)m(vrel)p 476 3253 V 34 w(hdu)505 b(33)50 3366 y(\014ts)p
+177 3366 V 32 w(n)m(ull)p 358 3366 V 33 w(c)m(hec)m(k)564
+b(64)50 3479 y(\014ts)p 177 3479 V 32 w(op)s(en)p 399
+3479 V 32 w(data)d(30)50 3591 y(\014ts)p 177 3591 V 32
+w(op)s(en)p 399 3591 V 32 w(disk\014le)461 b(30)50 3704
+y(\014ts)p 177 3704 V 32 w(op)s(en)p 399 3704 V 32 w(\014le)621
+b(30)50 3817 y(\014ts)p 177 3817 V 32 w(op)s(en)p 399
+3817 V 32 w(image)506 b(30)50 3930 y(\014ts)p 177 3930
+V 32 w(op)s(en)p 399 3930 V 32 w(table)541 b(30)50 4043
+y(\014ts)p 177 4043 V 32 w(op)s(en)p 399 4043 V 32 w(group)509
+b(88)50 4156 y(\014ts)p 177 4156 V 32 w(op)s(en)p 399
+4156 V 32 w(mem)m(b)s(er)418 b(89)50 4269 y(\014ts)p
+177 4269 V 32 w(op)s(en)p 399 4269 V 32 w(mem\014le)429
+b(91)50 4382 y(\014ts)p 177 4382 V 32 w(parse)p 417 4382
+V 33 w(extn)m(um)420 b(93)50 4495 y(\014ts)p 177 4495
+V 32 w(parse)p 417 4495 V 33 w(input)p 663 4495 V 32
+w(\014lename)145 b(93)50 4608 y(\014ts)p 177 4608 V 32
+w(parse)p 417 4608 V 33 w(input)p 663 4608 V 32 w(url)361
+b(93)50 4721 y(\014ts)p 177 4721 V 32 w(parse)p 417 4721
+V 33 w(range)501 b(71)50 4833 y(\014ts)p 177 4833 V 32
+w(parse)p 417 4833 V 33 w(ro)s(otname)342 b(94)50 4946
+y(\014ts)p 177 4946 V 32 w(parse)p 417 4946 V 33 w(template)371
+b(67)50 5059 y(\014ts)p 177 5059 V 32 w(parse)p 417 5059
+V 33 w(v)-5 b(alue)514 b(64)50 5172 y(\014ts)p 177 5172
+V 32 w(pix)p 333 5172 V 33 w(to)p 446 5172 V 33 w(w)m(orld)469
+b(83)50 5285 y(\014ts)p 177 5285 V 32 w(read)p 381 5285
+V 33 w(2d)p 510 5285 V 33 w(TYP)384 b(110)50 5398 y(\014ts)p
+177 5398 V 32 w(read)p 381 5398 V 33 w(3d)p 510 5398
+V 33 w(TYP)g(110)50 5511 y(\014ts)p 177 5511 V 32 w(read)p
+381 5511 V 33 w(atblhdr)460 b(99)50 5624 y(\014ts)p 177
+5624 V 32 w(read)p 381 5624 V 33 w(btblhdr)454 b(99)50
+5737 y(\014ts)p 177 5737 V 32 w(read)p 381 5737 V 33
+w(card)582 b(36)50 5850 y(\014ts)p 177 5850 V 32 w(read)p
+381 5850 V 33 w(col)644 b(55)1374 543 y(\014ts)p 1501
+543 V 32 w(read)p 1705 543 V 33 w(col)p 1848 543 V 34
+w(bit)p 1993 543 V 639 w(116)1374 656 y(\014ts)p 1501
+656 V 32 w(read)p 1705 656 V 33 w(col)p 1848 656 V 34
+w(TYP)554 b(114)1374 769 y(\014ts)p 1501 769 V 32 w(read)p
+1705 769 V 33 w(coln)m(ull)680 b(55)1374 882 y(\014ts)p
+1501 882 V 32 w(read)p 1705 882 V 33 w(coln)m(ull)p 1997
+882 V 34 w(TYP)405 b(114)1374 995 y(\014ts)p 1501 995
+V 32 w(read)p 1705 995 V 33 w(descript)580 b(116)1374
+1107 y(\014ts)p 1501 1107 V 32 w(read)p 1705 1107 V 33
+w(descripts)544 b(116)1374 1220 y(\014ts)p 1501 1220
+V 32 w(read)p 1705 1220 V 33 w(errmsg)670 b(30)1374 1333
+y(\014ts)p 1501 1333 V 32 w(read)p 1705 1333 V 33 w(ext)816
+b(96)1374 1446 y(\014ts)p 1501 1446 V 32 w(read)p 1705
+1446 V 33 w(grppar)p 2002 1446 V 32 w(TYP)402 b(109)1374
+1559 y(\014ts)p 1501 1559 V 32 w(read)p 1705 1559 V 33
+w(img)748 b(109)1374 1672 y(\014ts)p 1501 1672 V 32 w(read)p
+1705 1672 V 33 w(img)p 1884 1672 V 33 w(co)s(ord)540
+b(83)1374 1785 y(\014ts)p 1501 1785 V 32 w(read)p 1705
+1785 V 33 w(img)p 1884 1785 V 33 w(TYP)519 b(109)1374
+1898 y(\014ts)p 1501 1898 V 32 w(read)p 1705 1898 V 33
+w(imghdr)655 b(99)1374 2011 y(\014ts)p 1501 2011 V 32
+w(read)p 1705 2011 V 33 w(imgn)m(ull)599 b(109)1374 2124
+y(\014ts)p 1501 2124 V 32 w(read)p 1705 2124 V 33 w(imgn)m(ull)p
+2033 2124 V 33 w(TYP)370 b(109)1374 2237 y(\014ts)p 1501
+2237 V 32 w(read)p 1705 2237 V 33 w(k)m(ey)806 b(36)1374
+2349 y(\014ts)p 1501 2349 V 32 w(read)p 1705 2349 V 33
+w(k)m(ey)p 1871 2349 V 33 w(longstr)455 b(103)1374 2462
+y(\014ts)p 1501 2462 V 32 w(read)p 1705 2462 V 33 w(k)m(ey)p
+1871 2462 V 33 w(triple)516 b(104)1374 2575 y(\014ts)p
+1501 2575 V 32 w(read)p 1705 2575 V 33 w(k)m(ey)p 1871
+2575 V 33 w(unit)611 b(37)1374 2688 y(\014ts)p 1501 2688
+V 32 w(read)p 1705 2688 V 33 w(k)m(ey)p 1871 2688 V 33
+w(TYP)532 b(103)1374 2801 y(\014ts)p 1501 2801 V 32 w(read)p
+1705 2801 V 33 w(k)m(eyn)755 b(36)1374 2914 y(\014ts)p
+1501 2914 V 32 w(read)p 1705 2914 V 33 w(k)m(eys)p 1907
+2914 V 33 w(TYP)496 b(103)1374 3027 y(\014ts)p 1501 3027
+V 32 w(read)p 1705 3027 V 33 w(k)m(eyw)m(ord)611 b(36)1374
+3140 y(\014ts)p 1501 3140 V 32 w(read)p 1705 3140 V 33
+w(pix)815 b(43)1374 3253 y(\014ts)p 1501 3253 V 32 w(read)p
+1705 3253 V 33 w(pixn)m(ull)666 b(43)1374 3366 y(\014ts)p
+1501 3366 V 32 w(read)p 1705 3366 V 33 w(record)691 b(36)1374
+3479 y(\014ts)p 1501 3479 V 32 w(read)p 1705 3479 V 33
+w(str)832 b(36)1374 3591 y(\014ts)p 1501 3591 V 32 w(read)p
+1705 3591 V 33 w(subset)p 1987 3591 V 32 w(TYP)250 b(110)32
+b(115)1374 3704 y(\014ts)p 1501 3704 V 32 w(read)p 1705
+3704 V 33 w(subsetn)m(ull)p 2136 3704 V 32 w(TYP)101
+b(110)32 b(115)1374 3817 y(\014ts)p 1501 3817 V 32 w(read)p
+1705 3817 V 33 w(tbl)p 1849 3817 V 33 w(co)s(ord)575
+b(83)1374 3930 y(\014ts)p 1501 3930 V 32 w(read)p 1705
+3930 V 33 w(tblb)m(ytes)h(112)1374 4043 y(\014ts)p 1501
+4043 V 32 w(read)p 1705 4043 V 33 w(tdim)752 b(51)1374
+4156 y(\014ts)p 1501 4156 V 32 w(read)p 1705 4156 V 33
+w(w)m(cstab)669 b(82)1374 4269 y(\014ts)p 1501 4269 V
+32 w(rebin)p 1736 4269 V 32 w(w)m(cs)770 b(59)1374 4382
+y(\014ts)p 1501 4382 V 32 w(remo)m(v)m(e)p 1812 4382
+V 34 w(group)603 b(87)1374 4495 y(\014ts)p 1501 4495
+V 32 w(remo)m(v)m(e)p 1812 4495 V 34 w(mem)m(b)s(er)512
+b(90)1374 4608 y(\014ts)p 1501 4608 V 32 w(reop)s(en)p
+1799 4608 V 32 w(\014le)730 b(92)1374 4721 y(\014ts)p
+1501 4721 V 32 w(rep)s(ort)p 1779 4721 V 32 w(error)673
+b(30)1374 4833 y(\014ts)p 1501 4833 V 32 w(resize)p 1750
+4833 V 34 w(img)747 b(96)1374 4946 y(\014ts)p 1501 4946
+V 32 w(rms)p 1681 4946 V 32 w(\015oat)788 b(71)1374 5059
+y(\014ts)p 1501 5059 V 32 w(rms)p 1681 5059 V 32 w(short)761
+b(71)1374 5172 y(\014ts)p 1501 5172 V 32 w(select)p 1749
+5172 V 35 w(ro)m(ws)713 b(56)1374 5285 y(\014ts)p 1501
+5285 V 32 w(set)p 1644 5285 V 34 w(atbln)m(ull)649 b(106)1374
+5398 y(\014ts)p 1501 5398 V 32 w(set)p 1644 5398 V 34
+w(bscale)717 b(106)1374 5511 y(\014ts)p 1501 5511 V 32
+w(set)p 1644 5511 V 34 w(btbln)m(ull)643 b(106)1374 5624
+y(\014ts)p 1501 5624 V 32 w(set)p 1644 5624 V 34 w(compression)p
+2159 5624 V 32 w(t)m(yp)s(e)312 b(46)1374 5737 y(\014ts)p
+1501 5737 V 32 w(set)p 1644 5737 V 34 w(hdrsize)720 b(97)1374
+5850 y(\014ts)p 1501 5850 V 32 w(set)p 1644 5850 V 34
+w(hdustruc)648 b(97)2883 543 y(\014ts)p 3010 543 V 33
+w(set)p 3154 543 V 33 w(imgn)m(ull)408 b(106)2883 656
+y(\014ts)p 3010 656 V 33 w(set)p 3154 656 V 33 w(noise)p
+3384 656 V 33 w(bits)372 b(46)2883 769 y(\014ts)p 3010
+769 V 33 w(set)p 3154 769 V 33 w(tile)p 3312 769 V 34
+w(dim)438 b(46)2883 882 y(\014ts)p 3010 882 V 33 w(set)p
+3154 882 V 33 w(tscale)482 b(106)2883 995 y(\014ts)p
+3010 995 V 33 w(split)p 3215 995 V 32 w(names)441 b(63)2883
+1107 y(\014ts)p 3010 1107 V 33 w(str2date)570 b(61)2883
+1220 y(\014ts)p 3010 1220 V 33 w(str2time)565 b(61)2883
+1333 y(\014ts)p 3010 1333 V 33 w(test)p 3189 1333 V 33
+w(expr)539 b(57)2883 1446 y(\014ts)p 3010 1446 V 33 w(test)p
+3189 1446 V 33 w(heap)481 b(111)2883 1559 y(\014ts)p
+3010 1559 V 33 w(test)p 3189 1559 V 33 w(k)m(eyw)m(ord)386
+b(63)2883 1672 y(\014ts)p 3010 1672 V 33 w(test)p 3189
+1672 V 33 w(record)466 b(63)2883 1785 y(\014ts)p 3010
+1785 V 33 w(time2str)565 b(61)2883 1898 y(\014ts)p 3010
+1898 V 33 w(transfer)p 3350 1898 V 32 w(mem)m(b)s(er)235
+b(89)2883 2011 y(\014ts)p 3010 2011 V 33 w(translate)p
+3391 2011 V 33 w(k)m(eyw)m(ord)184 b(69)2883 2124 y(\014ts)p
+3010 2124 V 33 w(up)s(date)p 3319 2124 V 31 w(card)414
+b(39)2883 2237 y(\014ts)p 3010 2237 V 33 w(up)s(date)p
+3319 2237 V 31 w(c)m(hksum)287 b(60)2883 2349 y(\014ts)p
+3010 2349 V 33 w(up)s(date)p 3319 2349 V 31 w(k)m(ey)453
+b(38)2883 2462 y(\014ts)p 3010 2462 V 33 w(up)s(date)p
+3319 2462 V 31 w(k)m(ey)p 3483 2462 V 34 w(longstr)100
+b(105)2883 2575 y(\014ts)p 3010 2575 V 33 w(up)s(date)p
+3319 2575 V 31 w(k)m(ey)p 3483 2575 V 34 w(n)m(ull)270
+b(38)2883 2688 y(\014ts)p 3010 2688 V 33 w(up)s(date)p
+3319 2688 V 31 w(k)m(ey)p 3483 2688 V 34 w(TYP)177 b(105)2883
+2801 y(\014ts)p 3010 2801 V 33 w(upp)s(ercase)500 b(63)2883
+2914 y(\014ts)p 3010 2914 V 33 w(url)p 3155 2914 V 32
+w(t)m(yp)s(e)575 b(33)2883 3027 y(\014ts)p 3010 3027
+V 33 w(v)m(erify)p 3265 3027 V 33 w(c)m(hksum)339 b(60)2883
+3140 y(\014ts)p 3010 3140 V 33 w(v)m(erify)p 3265 3140
+V 33 w(group)410 b(88)2883 3253 y(\014ts)p 3010 3253
+V 33 w(w)m(orld)p 3263 3253 V 32 w(to)p 3375 3253 V 34
+w(pix)403 b(83)2883 3366 y(\014ts)p 3010 3366 V 33 w(write)p
+3245 3366 V 33 w(2d)p 3374 3366 V 32 w(TYP)288 b(109)2883
+3479 y(\014ts)p 3010 3479 V 33 w(write)p 3245 3479 V
+33 w(3d)p 3374 3479 V 32 w(TYP)g(109)2883 3591 y(\014ts)p
+3010 3591 V 33 w(write)p 3245 3591 V 33 w(atblhdr)364
+b(98)2883 3704 y(\014ts)p 3010 3704 V 33 w(write)p 3245
+3704 V 33 w(btblhdr)358 b(99)2883 3817 y(\014ts)p 3010
+3817 V 33 w(write)p 3245 3817 V 33 w(c)m(hksum)h(60)2883
+3930 y(\014ts)p 3010 3930 V 33 w(write)p 3245 3930 V
+33 w(col)548 b(54)2883 4043 y(\014ts)p 3010 4043 V 33
+w(write)p 3245 4043 V 33 w(col)p 3388 4043 V 33 w(bit)358
+b(113)2883 4156 y(\014ts)p 3010 4156 V 33 w(write)p 3245
+4156 V 33 w(col)p 3388 4156 V 33 w(TYP)273 b(112)2883
+4269 y(\014ts)p 3010 4269 V 33 w(write)p 3245 4269 V
+33 w(col)p 3388 4269 V 33 w(n)m(ull)366 b(54)2883 4382
+y(\014ts)p 3010 4382 V 33 w(write)p 3245 4382 V 33 w(coln)m(ull)399
+b(54)2883 4495 y(\014ts)p 3010 4495 V 33 w(write)p 3245
+4495 V 33 w(coln)m(ull)p 3537 4495 V 33 w(TYP)124 b(112)2883
+4608 y(\014ts)p 3010 4608 V 33 w(write)p 3245 4608 V
+33 w(commen)m(t)298 b(38)2883 4721 y(\014ts)p 3010 4721
+V 33 w(write)p 3245 4721 V 33 w(date)487 b(38)2883 4833
+y(\014ts)p 3010 4833 V 33 w(write)p 3245 4833 V 33 w(descript)298
+b(113)2883 4946 y(\014ts)p 3010 4946 V 33 w(write)p 3245
+4946 V 33 w(errmark)341 b(30)2883 5059 y(\014ts)p 3010
+5059 V 33 w(write)p 3245 5059 V 33 w(errmsg)389 b(62)2883
+5172 y(\014ts)p 3010 5172 V 33 w(write)p 3245 5172 V
+33 w(ext)535 b(96)2883 5285 y(\014ts)p 3010 5285 V 33
+w(write)p 3245 5285 V 33 w(exthdr)397 b(98)2883 5398
+y(\014ts)p 3010 5398 V 33 w(write)p 3245 5398 V 33 w(grphdr)388
+b(98)2883 5511 y(\014ts)p 3010 5511 V 33 w(write)p 3245
+5511 V 33 w(grppar)p 3542 5511 V 31 w(TYP)121 b(108)2883
+5624 y(\014ts)p 3010 5624 V 33 w(write)p 3245 5624 V
+33 w(hdu)505 b(34)2883 5737 y(\014ts)p 3010 5737 V 33
+w(write)p 3245 5737 V 33 w(history)382 b(38)2883 5850
+y(\014ts)p 3010 5850 V 33 w(write)p 3245 5850 V 33 w(img)466
+b(108)p eop end
+%%Page: 167 175
+TeXDict begin 167 174 bop 3764 299 a Fj(167)50 543 y(\014ts)p
+177 543 28 4 v 32 w(write)p 411 543 V 33 w(img)p 590
+543 V 33 w(n)m(ull)300 b(108)50 656 y(\014ts)p 177 656
+V 32 w(write)p 411 656 V 33 w(img)p 590 656 V 33 w(TYP)253
+b(108)50 769 y(\014ts)p 177 769 V 32 w(write)p 411 769
+V 33 w(imghdr)389 b(98)50 882 y(\014ts)p 177 882 V 32
+w(write)p 411 882 V 33 w(imgn)m(ull)333 b(108)50 995
+y(\014ts)p 177 995 V 32 w(write)p 411 995 V 33 w(imgn)m(ull)p
+739 995 V 33 w(TYP)104 b(108)50 1107 y(\014ts)p 177 1107
+V 32 w(write)p 411 1107 V 33 w(k)m(ey)540 b(38)50 1220
+y(\014ts)p 177 1220 V 32 w(write)p 411 1220 V 33 w(k)m(ey)p
+577 1220 V 34 w(longstr)188 b(100)50 1333 y(\014ts)p
+177 1333 V 32 w(write)p 411 1333 V 33 w(k)m(ey)p 577
+1333 V 34 w(longw)m(arn)100 b(100)50 1446 y(\014ts)p
+177 1446 V 32 w(write)p 411 1446 V 33 w(k)m(ey)p 577
+1446 V 34 w(n)m(ull)357 b(38)50 1559 y(\014ts)p 177 1559
+V 32 w(write)p 411 1559 V 33 w(k)m(ey)p 577 1559 V 34
+w(template)114 b(101)50 1672 y(\014ts)p 177 1672 V 32
+w(write)p 411 1672 V 33 w(k)m(ey)p 577 1672 V 34 w(triple)249
+b(101)50 1785 y(\014ts)p 177 1785 V 32 w(write)p 411
+1785 V 33 w(k)m(ey)p 577 1785 V 34 w(unit)344 b(39)50
+1898 y(\014ts)p 177 1898 V 32 w(write)p 411 1898 V 33
+w(k)m(ey)p 577 1898 V 34 w(TYP)265 b(100)50 2011 y(\014ts)p
+177 2011 V 32 w(write)p 411 2011 V 33 w(k)m(eys)p 613
+2011 V 34 w(TYP)229 b(101)50 2124 y(\014ts)p 177 2124
+V 32 w(write)p 411 2124 V 33 w(k)m(eys)p 613 2124 V 34
+w(histo)278 b(59)50 2237 y(\014ts)p 177 2237 V 32 w(write)p
+411 2237 V 33 w(n)m(ull)p 593 2237 V 33 w(img)345 b(43)50
+2349 y(\014ts)p 177 2349 V 32 w(write)p 411 2349 V 33
+w(n)m(ullro)m(ws)f(54)50 2462 y(\014ts)p 177 2462 V 32
+w(write)p 411 2462 V 33 w(pix)549 b(42)50 2575 y(\014ts)p
+177 2575 V 32 w(write)p 411 2575 V 33 w(pixn)m(ull)400
+b(42)50 2688 y(\014ts)p 177 2688 V 32 w(write)p 411 2688
+V 33 w(record)425 b(39)50 2801 y(\014ts)p 177 2801 V
+32 w(write)p 411 2801 V 33 w(subset)f(42)50 2914 y(\014ts)p
+177 2914 V 32 w(write)p 411 2914 V 33 w(subset)p 693
+2914 V 32 w(TYP)151 b(109)50 3027 y(\014ts)p 177 3027
+V 32 w(write)p 411 3027 V 33 w(tblb)m(ytes)310 b(112)50
+3140 y(\014ts)p 177 3140 V 32 w(write)p 411 3140 V 33
+w(tdim)486 b(51)50 3253 y(\014ts)p 177 3253 V 32 w(write)p
+411 3253 V 33 w(theap)406 b(111)p eop end
+%%Page: 168 176
+TeXDict begin 168 175 bop 0 299 a Fj(168)2084 b Fh(APPENDIX)31
+b(A.)61 b(INDEX)31 b(OF)f(R)m(OUTINES)50 543 y Fj(\013asfm)276
+b(66)50 656 y(\013bnfm)255 b(66)50 769 y(\013calc)311
+b(57)50 882 y(\013calc)p 258 882 28 4 v 34 w(rng)145
+b(57)50 995 y(\013clos)315 b(33)50 1107 y(\013cmph)197
+b(111)50 1220 y(\013cmps)258 b(63)50 1333 y(\013cmrk)j(30)50
+1446 y(\013cmsg)j(30)50 1559 y(\013cop)m(y)280 b(34)50
+1672 y(\013cp)s(cl)302 b(53)50 1785 y(\013cp)s(dt)281
+b(96)50 1898 y(\013cp\015)319 b(34)50 2011 y(\013cphd)268
+b(34)50 2124 y(\013cpimg)224 b(44)50 2237 y(\013cpky)k(101)50
+2349 y(\013cprw)268 b(53)50 2462 y(\013crhd)283 b(95)50
+2575 y(\013crim)h(41)50 2688 y(\013cro)m(w)277 b(56)50
+2801 y(\013crtb)299 b(49)50 2914 y(\013dcol)h(52)50 3027
+y(\013delt)310 b(33)50 3140 y(\013dhdu)257 b(35)50 3253
+y(\013dk)m(ey)277 b(39)50 3366 y(\013dkinit)226 b(32)50
+3479 y(\013dk)m(op)s(en)175 b(30)50 3591 y(\013dopn)263
+b(30)50 3704 y(\013drec)294 b(39)50 3817 y(\013dro)m(w)266
+b(52)50 3930 y(\013drrg)293 b(52)50 4043 y(\013drws)272
+b(52)50 4156 y(\013dstr)303 b(39)50 4269 y(\013dsum)247
+b(61)50 4382 y(\013dt2s)294 b(61)50 4495 y(\013dtdm)248
+b(51)50 4608 y(\013dt)m(yp)279 b(64)50 4721 y(\013eqt)m(y)293
+b(50)50 4833 y(\013esum)258 b(61)50 4946 y(\013exest)k(94)50
+5059 y(\013extn)287 b(93)50 5172 y(\013\013rw)306 b(56)50
+5285 y(\013\015md)283 b(33)50 5398 y(\013\015nm)g(33)50
+5511 y(\013\015sh)323 b(94)50 5624 y(\013\015us)g(94)50
+5737 y(\013free)271 b(103)50 5850 y(\013fro)m(w)289 b(56)785
+543 y(\013g2d)p 984 543 V 191 w(110)785 656 y(\013g3d)p
+984 656 V 191 w(110)785 769 y(\013gab)s(c)193 b(66)785
+882 y(\013gacl)177 b(110)785 995 y(\013gb)s(cl)168 b(110)785
+1107 y(\013gcdw)175 b(51)785 1220 y(\013gcf)264 b(55)785
+1333 y(\013gcf)p 956 1333 V 219 w(114)785 1446 y(\013gc)m(ks)211
+b(60)785 1559 y(\013gcnn)190 b(49)785 1672 y(\013gcno)196
+b(49)785 1785 y(\013gcrd)205 b(36)785 1898 y(\013gcv)244
+b(55)785 2011 y(\013gcv)p 976 2011 V 199 w(114)785 2124
+y(\013gcx)199 b(116)785 2237 y(\013gdes)160 b(116)785
+2349 y(\013gdess)124 b(116)785 2462 y(\013gerr)220 b(29)785
+2575 y(\013gextn)158 b(96)785 2688 y(\013ggp)p 984 2688
+V 191 w(109)785 2801 y(\013ghad)185 b(95)785 2914 y(\013gh)m(bn)d(99)
+785 3027 y(\013ghdn)d(34)785 3140 y(\013ghdt)195 b(34)785
+3253 y(\013ghpr)f(99)785 3366 y(\013ghps)g(97)785 3479
+y(\013ghsp)g(35)785 3591 y(\013gh)m(tb)k(99)785 3704
+y(\013gics)231 b(83)785 3817 y(\013gidm)180 b(41)785
+3930 y(\013gidt)221 b(40)785 4043 y(\013giet)232 b(40)785
+4156 y(\013gipr)220 b(41)785 4269 y(\013gisz)231 b(41)785
+4382 y(\013gk)m(cl)222 b(65)785 4495 y(\013gk)m(ey)199
+b(36)785 4608 y(\013gkls)178 b(103)785 4721 y(\013gkn)p
+987 4721 V 188 w(103)785 4833 y(\013gknm)157 b(64)785
+4946 y(\013gky)236 b(36)785 5059 y(\013gkyn)185 b(36)785
+5172 y(\013gkyt)156 b(104)785 5285 y(\013gky)p 984 5285
+V 191 w(103)785 5398 y(\013gmcp)165 b(89)785 5511 y(\013gmng)160
+b(89)785 5624 y(\013gmop)g(89)785 5737 y(\013gmrm)144
+b(90)785 5850 y(\013gmsg)175 b(30)1436 543 y(\013gm)m(tf)368
+b(89)1436 656 y(\013gncl)388 b(49)1436 769 y(\013gnrw)351
+b(49)1436 882 y(\013gnxk)357 b(37)1436 995 y(\013gpf)380
+b(109)1436 1107 y(\013gpf)p 1618 1107 V 380 w(109)1436
+1220 y(\013gp)m(v)363 b(109)1436 1333 y(\013gp)m(v)p
+1635 1333 V 363 w(109)1436 1446 y(\013gp)m(xv)d(43)1436
+1559 y(\013gp)m(xf)380 b(43)1436 1672 y(\013grec)388
+b(36)1436 1785 y(\013grsz)347 b(111)1436 1898 y(\013gsdt)382
+b(61)1436 2011 y(\013gsf)p 1603 2011 V 228 w(110)32 b(115)1436
+2124 y(\013gstm)357 b(61)1436 2237 y(\013gstr)397 b(36)1436
+2349 y(\013gsv)p 1623 2349 V 208 w(110)32 b(115)1436
+2462 y(\013gtam)348 b(88)1436 2575 y(\013gtbb)322 b(112)1436
+2688 y(\013gtc)m(h)381 b(86)1436 2801 y(\013gtcl)404
+b(50)1436 2914 y(\013gtcm)353 b(87)1436 3027 y(\013gtcp)378
+b(87)1436 3140 y(\013gtcr)393 b(86)1436 3253 y(\013gtcs)g(83)1436
+3366 y(\013gtdm)342 b(51)1436 3479 y(\013gthd)367 b(67)1436
+3591 y(\013gtis)408 b(86)1436 3704 y(\013gtmg)348 b(87)1436
+3817 y(\013gtnm)342 b(88)1436 3930 y(\013gtop)373 b(88)1436
+4043 y(\013gtrm)357 b(87)1436 4156 y(\013gtvf)393 b(88)1436
+4269 y(\013gun)m(t)370 b(37)1436 4382 y(\013hdef)379
+b(97)1436 4495 y(\016bin)399 b(96)1436 4608 y(\016cls)425
+b(52)1436 4721 y(\016col)416 b(52)1436 4833 y(\016\014le)410
+b(93)1436 4946 y(\016img)380 b(95)1436 5059 y(\016kls)372
+b(102)1436 5172 y(\016kyu)334 b(102)1436 5285 y(\016ky)p
+1613 5285 V 385 w(102)1436 5398 y(\016mem)g(92)1436 5511
+y(\016nit)415 b(32)1436 5624 y(\016n)m(tt)m(yp)312 b(65)1436
+5737 y(\016opn)379 b(30)1436 5850 y(\016rec)365 b(102)2259
+543 y(\016ro)m(w)226 b(52)2259 656 y(\016tab)239 b(96)2259
+769 y(\016ter)259 b(79)2259 882 y(\016url)f(93)2259 995
+y(\013k)m(eyn)209 b(64)2259 1107 y(\013mahd)170 b(33)2259
+1220 y(\013mcom)156 b(39)2259 1333 y(\013mcrd)144 b(104)2259
+1446 y(\013mkls)162 b(104)2259 1559 y(\013mkyu)124 b(105)2259
+1672 y(\013mky)p 2489 1672 V 175 w(104)2259 1785 y(\013mnam)145
+b(39)2259 1898 y(\013mnhd)164 b(33)2259 2011 y(\013mrec)155
+b(104)2259 2124 y(\013mrhd)179 b(33)2259 2237 y(\013m)m(v)m(ec)195
+b(53)2259 2349 y(\013nc)m(hk)206 b(64)2259 2462 y(\013nk)m(ey)j(64)2259
+2575 y(\013omem)156 b(91)2259 2688 y(\013op)s(en)203
+b(30)2259 2801 y(\013p2d)p 2464 2801 V 200 w(109)2259
+2914 y(\013p3d)p 2464 2914 V 200 w(109)2259 3027 y(\013p)s(c)m(ks)218
+b(60)2259 3140 y(\013p)s(cl)274 b(54)2259 3253 y(\013p)s(cls)192
+b(112)2259 3366 y(\013p)s(cl)p 2436 3366 V 228 w(113)2259
+3479 y(\013p)s(clu)223 b(54)2259 3591 y(\013p)s(cn)248
+b(54)2259 3704 y(\013p)s(cn)p 2462 3704 V 202 w(112)2259
+3817 y(\013p)s(com)178 b(38)2259 3930 y(\013p)s(dat)208
+b(38)2259 4043 y(\013p)s(des)166 b(113)2259 4156 y(\013p)s(extn)f(96)
+2259 4269 y(\013pgp)p 2464 4269 V 200 w(108)2259 4382
+y(\013ph)m(bn)192 b(99)2259 4495 y(\013phext)168 b(98)2259
+4608 y(\013phis)230 b(38)2259 4721 y(\013phpr)204 b(98)2259
+4833 y(\013phps)g(98)2259 4946 y(\013ph)m(tb)k(98)2259
+5059 y(\013pkls)187 b(100)2259 5172 y(\013pkn)p 2467
+5172 V 197 w(101)2259 5285 y(\013pktp)162 b(101)2259
+5398 y(\013pky)246 b(38)2259 5511 y(\013pkyt)165 b(101)2259
+5624 y(\013pkyu)195 b(38)2259 5737 y(\013pky)p 2464 5737
+V 200 w(100)2259 5850 y(\013plsw)169 b(100)2926 543 y(\013pmrk)199
+b(30)2926 656 y(\013pmsg)j(62)2926 769 y(\013pn)m(ul)190
+b(106)2926 882 y(\013ppn)212 b(108)2926 995 y(\013ppn)p
+3137 995 V 212 w(108)2926 1107 y(\013ppr)227 b(108)2926
+1220 y(\013pprn)221 b(43)2926 1333 y(\013ppru)176 b(108)2926
+1446 y(\013ppr)p 3122 1446 V 227 w(108)2926 1559 y(\013pp)m(x)263
+b(42)2926 1672 y(\013pp)m(xn)212 b(42)2926 1785 y(\013prec)243
+b(39)2926 1898 y(\013prwu)206 b(54)2926 2011 y(\013pscl)213
+b(106)2926 2124 y(\013pss)287 b(42)2926 2237 y(\013pss)p
+3107 2237 V 242 w(109)2926 2349 y(\013psv)m(c)238 b(64)2926
+2462 y(\013ptbb)177 b(112)2926 2575 y(\013ptdm)197 b(51)2926
+2688 y(\013pthp)177 b(111)2926 2801 y(\013pun)m(t)225
+b(39)2926 2914 y(\013rdef)255 b(97)2926 3027 y(\013reop)s(en)144
+b(92)2926 3140 y(\013rprt)252 b(30)2926 3253 y(\013rsim)237
+b(96)2926 3366 y(\013rtnm)212 b(94)2926 3479 y(\013rwrg)227
+b(71)2926 3591 y(\013s2dt)243 b(61)2926 3704 y(\013s2tm)218
+b(61)2926 3817 y(\013sn)m(ul)205 b(106)2926 3930 y(\013sro)m(w)230
+b(56)2926 4043 y(\013texp)236 b(57)2926 4156 y(\013thdu)222
+b(34)2926 4269 y(\013theap)143 b(111)2926 4382 y(\013tk)m(ey)242
+b(63)2926 4495 y(\013tm2s)218 b(61)2926 4608 y(\013tn)m(ul)206
+b(106)2926 4721 y(\013topn)228 b(30)2926 4833 y(\013tplt)264
+b(92)2926 4946 y(\013trec)259 b(63)2926 5059 y(\013tscl)229
+b(106)2926 5172 y(\013ucrd)j(39)2926 5285 y(\013ukls)205
+b(105)2926 5398 y(\013uky)263 b(38)2926 5511 y(\013ukyu)212
+b(38)2926 5624 y(\013uky)p 3131 5624 V 218 w(105)2926
+5737 y(\013up)s(c)m(h)217 b(63)2926 5850 y(\013up)s(c)m(k)j(60)p
+eop end
+%%Page: 169 177
+TeXDict begin 169 176 bop 3764 299 a Fj(169)50 543 y(\013urlt)205
+b(33)50 656 y(\013v)m(c)m(ks)186 b(60)50 769 y(\013v)m(ers)195
+b(62)50 882 y(\013wldp)159 b(83)50 995 y(\013wrhdu)97
+b(34)50 1107 y(\013xyp)m(x)160 b(83)p eop end
+%%Page: 170 178
+TeXDict begin 170 177 bop 0 299 a Fj(170)2084 b Fh(APPENDIX)31
+b(A.)61 b(INDEX)31 b(OF)f(R)m(OUTINES)p eop end
+%%Page: 171 179
+TeXDict begin 171 178 bop 0 1225 a Fg(App)5 b(endix)64
+b(B)0 1687 y Fm(P)-6 b(arameter)77 b(De\014nitions)0
+2180 y Fe(anynul)142 b(-)47 b(set)g(to)g(TRUE)g(\(=1\))f(if)i(any)e
+(returned)g(values)g(are)h(undefined,)e(else)i(FALSE)0
+2293 y(array)190 b(-)47 b(array)f(of)i(numerical)d(data)h(values)h(to)g
+(read)f(or)i(write)0 2406 y(ascii)190 b(-)47 b(encoded)f(checksum)f
+(string)0 2518 y(binspec)94 b(-)47 b(the)g(input)f(table)h(binning)e
+(specifier)0 2631 y(bitpix)142 b(-)47 b(bits)g(per)g(pixel.)f(The)h
+(following)e(symbolic)g(mnemonics)h(are)h(predefined:)716
+2744 y(BYTE_IMG)141 b(=)i(8)47 b(\(unsigned)f(char\))716
+2857 y(SHORT_IMG)93 b(=)i(16)47 b(\(signed)f(short)g(integer\))716
+2970 y(LONG_IMG)141 b(=)95 b(32)47 b(\(signed)f(long)h(integer\))716
+3083 y(LONGLONG_IMG)d(=)96 b(64)47 b(\(signed)f(long)g(64-bit)g
+(integer\))716 3196 y(FLOAT_IMG)93 b(=)47 b(-32)g(\(float\))716
+3309 y(DOUBLE_IMG)e(=)i(-64)g(\(double\).)525 3422 y(The)g
+(LONGLONG_IMG)d(type)j(is)g(experimental)e(and)i(is)g(not)g(officially)
+525 3535 y(recognized)e(in)i(the)g(FITS)g(Standard)e(document.)525
+3648 y(Two)i(additional)e(values,)h(USHORT_IMG)f(and)i(ULONG_IMG)e(are)
+i(also)f(available)525 3760 y(for)h(creating)e(unsigned)h(integer)g
+(images.)93 b(These)47 b(are)g(equivalent)e(to)525 3873
+y(creating)h(a)h(signed)f(integer)g(image)g(with)h(BZERO)f(offset)g
+(keyword)g(values)525 3986 y(of)h(32768)g(or)g(2147483648,)d
+(respectively,)h(which)h(is)h(the)g(convention)e(that)525
+4099 y(FITS)i(uses)f(to)h(store)g(unsigned)e(integers.)0
+4212 y(card)238 b(-)47 b(header)f(record)g(to)h(be)h(read)e(or)h
+(written)f(\(80)h(char)g(max,)f(null-terminated\))0 4325
+y(casesen)94 b(-)47 b(CASESEN)f(\(=1\))g(for)h(case-sensitive)d(string)
+i(matching,)g(else)g(CASEINSEN)g(\(=0\))0 4438 y(cmopt)190
+b(-)47 b(grouping)f(table)g("compact")f(option)h(parameter.)f(Allowed)h
+(values)g(are:)525 4551 y(OPT_CMT_MBR)f(and)i(OPT_CMT_MBR_DEL.)0
+4664 y(colname)94 b(-)47 b(name)g(of)g(the)g(column)f
+(\(null-terminated\))0 4777 y(colnum)142 b(-)47 b(column)f(number)g
+(\(first)g(column)g(=)i(1\))0 4890 y(colspec)94 b(-)47
+b(the)g(input)f(file)h(column)f(specification;)e(used)j(to)g(delete,)f
+(create,)f(or)j(rename)525 5002 y(table)e(columns)0 5115
+y(comment)94 b(-)47 b(the)g(keyword)f(comment)g(field)g(\(72)h(char)f
+(max,)h(null-terminated\))0 5228 y(complm)142 b(-)47
+b(should)f(the)h(checksum)f(be)h(complemented?)0 5341
+y(comptype)f(-)h(compression)e(algorithm)g(to)i(use:)g(GZIP_1,)f
+(RICE_1,)f(HCOMPRESS_1,)g(or)i(PLIO_1)0 5454 y(coordtype-)e(type)i(of)g
+(coordinate)e(projection)g(\(-SIN,)h(-TAN,)g(-ARC,)h(-NCP,)525
+5567 y(-GLS,)f(-MER,)h(or)g(-AIT\))0 5680 y(cpopt)190
+b(-)47 b(grouping)f(table)g(copy)h(option)f(parameter.)f(Allowed)g
+(values)i(are:)1882 5942 y Fj(171)p eop end
+%%Page: 172 180
+TeXDict begin 172 179 bop 0 299 a Fj(172)1822 b Fh(APPENDIX)31
+b(B.)61 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)525 555 y
+Fe(OPT_GCP_GPT,)44 b(OPT_GCP_MBR,)h(OPT_GCP_ALL,)f(OPT_MCP_ADD,)h
+(OPT_MCP_NADD,)525 668 y(OPT_MCP_REPL,)f(amd)j(OPT_MCP_MOV.)0
+781 y(create_col-)e(If)i(TRUE,)f(then)h(insert)f(a)h(new)g(column)f(in)
+i(the)f(table,)f(otherwise)525 894 y(overwrite)f(the)i(existing)f
+(column.)0 1007 y(current)94 b(-)47 b(if)g(TRUE,)g(then)f(the)h
+(current)f(HDU)h(will)f(be)i(copied)0 1120 y(dataok)142
+b(-)47 b(was)g(the)g(data)f(unit)h(verification)e(successful)g(\(=1\))h
+(or)525 1233 y(not)h(\(=)g(-1\).)94 b(Equals)47 b(zero)f(if)h(the)g
+(DATASUM)f(keyword)g(is)h(not)g(present.)0 1346 y(datasum)94
+b(-)47 b(32-bit)f(1's)h(complement)e(checksum)h(for)g(the)h(data)g
+(unit)0 1458 y(dataend)94 b(-)47 b(address)f(\(in)h(bytes\))f(of)h(the)
+g(end)g(of)g(the)g(HDU)0 1571 y(datastart-)e(address)h(\(in)h(bytes\))f
+(of)h(the)g(start)f(of)h(the)g(data)g(unit)0 1684 y(datatype)f(-)h
+(specifies)e(the)i(data)g(type)f(of)i(the)f(value.)93
+b(Allowed)46 b(value)h(are:)94 b(TSTRING,)525 1797 y(TLOGICAL,)45
+b(TBYTE,)h(TSBYTE,)g(TSHORT,)g(TUSHORT,)g(TINT,)g(TUINT,)g(TLONG,)g
+(TULONG,)525 1910 y(TFLOAT,)g(TDOUBLE,)f(TCOMPLEX,)h(and)h(TDBLCOMPLEX)
+0 2023 y(datestr)94 b(-)47 b(FITS)g(date/time)e(string:)h
+('YYYY-MM-DDThh:mm:ss.dd)o(d',)41 b('YYYY-MM-dd',)525
+2136 y(or)47 b('dd/mm/yy')0 2249 y(day)286 b(-)47 b(calendar)f(day)g
+(\(UTC\))h(\(1-31\))0 2362 y(decimals)f(-)h(number)f(of)h(decimal)f
+(places)g(to)h(be)h(displayed)0 2475 y(deltasize)d(-)j(increment)d(for)
+i(allocating)e(more)i(memory)0 2588 y(dim1)238 b(-)47
+b(declared)f(size)g(of)h(the)g(first)g(dimension)e(of)i(the)g(image)f
+(or)i(cube)e(array)0 2700 y(dim2)238 b(-)47 b(declared)f(size)g(of)h
+(the)g(second)f(dimension)g(of)h(the)g(data)f(cube)h(array)0
+2813 y(dispwidth)e(-)j(display)e(width)g(of)h(a)h(column)e(=)h(length)f
+(of)h(string)f(that)h(will)g(be)g(read)0 2926 y(dtype)190
+b(-)47 b(data)g(type)f(of)h(the)g(keyword)f(\('C',)h('L',)f('I',)h('F')
+g(or)g('X'\))764 3039 y(C)g(=)h(character)d(string)764
+3152 y(L)i(=)h(logical)764 3265 y(I)f(=)h(integer)764
+3378 y(F)f(=)h(floating)d(point)h(number)764 3491 y(X)h(=)h(complex,)d
+(e.g.,)h("\(1.23,)g(-4.56\)")0 3604 y(err_msg)94 b(-)47
+b(error)f(message)g(on)h(the)g(internal)f(stack)g(\(80)h(chars)f(max\))
+0 3717 y(err_text)g(-)h(error)f(message)g(string)g(corresponding)e(to)k
+(error)e(number)g(\(30)h(chars)f(max\))0 3830 y(exact)190
+b(-)47 b(TRUE)g(\(=1\))f(if)h(the)g(strings)f(match)h(exactly;)525
+3942 y(FALSE)f(\(=0\))h(if)g(wildcards)e(are)i(used)0
+4055 y(exclist)94 b(-)47 b(array)f(of)i(pointers)d(to)i(keyword)f
+(names)g(to)i(be)f(excluded)e(from)i(search)0 4168 y(exists)142
+b(-)47 b(flag)g(indicating)e(whether)g(the)i(file)g(or)g(compressed)e
+(file)i(exists)f(on)h(disk)0 4281 y(expr)238 b(-)47 b(boolean)f(or)h
+(arithmetic)e(expression)0 4394 y(extend)142 b(-)47 b(TRUE)g(\(=1\))f
+(if)h(FITS)g(file)g(may)g(have)f(extensions,)f(else)i(FALSE)f(\(=0\))0
+4507 y(extname)94 b(-)47 b(value)f(of)i(the)e(EXTNAME)g(keyword)g
+(\(null-terminated\))0 4620 y(extspec)94 b(-)47 b(the)g(extension)e(or)
+i(HDU)g(specifier;)e(a)j(number)e(or)h(name,)f(version,)g(and)h(type)0
+4733 y(extver)142 b(-)47 b(value)f(of)i(the)e(EXTVER)h(keyword)e(=)j
+(integer)e(version)f(number)0 4846 y(filename)h(-)h(full)g(name)f(of)h
+(the)g(FITS)g(file,)f(including)g(optional)f(HDU)i(and)g(filtering)e
+(specs)0 4959 y(filetype)h(-)h(type)g(of)g(file)f(\(file://,)g(ftp://,)
+g(http://,)f(etc.\))0 5072 y(filter)142 b(-)47 b(the)g(input)f(file)h
+(filtering)e(specifier)0 5185 y(firstchar-)g(starting)h(byte)g(in)h
+(the)g(row)g(\(first)f(byte)h(of)g(row)g(=)g(1\))0 5297
+y(firstfailed)e(-)i(member)f(HDU)h(ID)g(\(if)g(positive\))f(or)h
+(grouping)e(table)i(GRPIDn)f(index)525 5410 y(value)g(\(if)h
+(negative\))f(that)g(failed)g(grouping)g(table)g(verification.)0
+5523 y(firstelem-)f(first)h(element)g(in)h(a)h(vector)e(\(ignored)f
+(for)i(ASCII)g(tables\))0 5636 y(firstrow)f(-)h(starting)f(row)g
+(number)h(\(first)f(row)h(of)g(table)f(=)i(1\))p eop
+end
+%%Page: 173 181
+TeXDict begin 173 180 bop 3764 299 a Fj(173)0 555 y Fe(following-)45
+b(if)i(TRUE,)g(any)f(HDUs)h(following)e(the)i(current)f(HDU)h(will)g
+(be)g(copied)0 668 y(fpixel)142 b(-)47 b(coordinate)e(of)i(the)g(first)
+f(pixel)h(to)g(be)g(read)g(or)g(written)f(in)h(the)525
+781 y(FITS)g(array.)93 b(The)47 b(array)g(must)f(be)i(of)f(length)f
+(NAXIS)g(and)h(have)g(values)f(such)525 894 y(that)h(fpixel[0])e(is)i
+(in)g(the)g(range)g(1)g(to)g(NAXIS1,)f(fpixel[1])f(is)i(in)h(the)525
+1007 y(range)e(1)i(to)f(NAXIS2,)f(etc.)0 1120 y(fptr)238
+b(-)47 b(pointer)f(to)h(a)g('fitsfile')e(structure)h(describing)f(the)i
+(FITS)f(file.)0 1233 y(frac)238 b(-)47 b(factional)e(part)i(of)g(the)g
+(keyword)f(value)0 1346 y(gcount)142 b(-)47 b(number)f(of)h(groups)f
+(in)i(the)e(primary)g(array)h(\(usually)e(=)j(1\))0 1458
+y(gfptr)190 b(-)47 b(fitsfile*)e(pointer)h(to)h(a)h(grouping)d(table)i
+(HDU.)0 1571 y(group)190 b(-)47 b(GRPIDn/GRPLCn)d(index)j(value)f
+(identifying)f(a)i(grouping)f(table)g(HDU,)h(or)525 1684
+y(data)g(group)f(number)g(\(=0)h(for)g(non-grouped)e(data\))0
+1797 y(grouptype)g(-)j(Grouping)d(table)i(parameter)e(that)i(specifies)
+e(the)i(columns)f(to)h(be)525 1910 y(created)f(in)h(a)g(grouping)f
+(table)g(HDU.)h(Allowed)f(values)g(are:)h(GT_ID_ALL_URI,)525
+2023 y(GT_ID_REF,)e(GT_ID_POS,)g(GT_ID_ALL,)g(GT_ID_REF_URI,)f(and)j
+(GT_ID_POS_URI.)0 2136 y(grpname)94 b(-)47 b(value)f(to)i(use)e(for)h
+(the)g(GRPNAME)f(keyword)g(value.)0 2249 y(hdunum)142
+b(-)47 b(sequence)f(number)g(of)h(the)g(HDU)g(\(Primary)e(array)i(=)g
+(1\))0 2362 y(hduok)190 b(-)47 b(was)g(the)g(HDU)g(verification)d
+(successful)h(\(=1\))i(or)525 2475 y(not)g(\(=)g(-1\).)94
+b(Equals)47 b(zero)f(if)h(the)g(CHECKSUM)f(keyword)g(is)h(not)g
+(present.)0 2588 y(hdusum)142 b(-)47 b(32)g(bit)g(1's)g(complement)e
+(checksum)h(for)g(the)h(entire)f(CHDU)0 2700 y(hdutype)94
+b(-)47 b(HDU)g(type:)f(IMAGE_HDU)g(\(0\),)g(ASCII_TBL)f(\(1\),)i
+(BINARY_TBL)e(\(2\),)i(ANY_HDU)f(\(-1\))0 2813 y(header)142
+b(-)47 b(returned)f(character)f(string)h(containing)f(all)i(the)g
+(keyword)f(records)0 2926 y(headstart-)f(starting)h(address)f(\(in)i
+(bytes\))f(of)i(the)e(CHDU)0 3039 y(heapsize)g(-)h(size)g(of)g(the)g
+(binary)f(table)g(heap,)h(in)g(bytes)0 3152 y(history)94
+b(-)47 b(the)g(HISTORY)f(keyword)g(comment)f(string)h(\(70)h(char)g
+(max,)g(null-terminated\))0 3265 y(hour)238 b(-)47 b(hour)g(within)f
+(day)h(\(UTC\))f(\(0)h(-)h(23\))0 3378 y(inc)286 b(-)47
+b(sampling)f(interval)f(for)i(pixels)f(in)h(each)g(FITS)g(dimension)0
+3491 y(inclist)94 b(-)47 b(array)f(of)i(pointers)d(to)i(matching)f
+(keyword)g(names)0 3604 y(incolnum)g(-)h(input)f(column)g(number;)g
+(range)h(=)g(1)h(to)f(TFIELDS)0 3717 y(infile)142 b(-)47
+b(the)g(input)f(filename,)g(including)f(path)h(if)i(specified)0
+3830 y(infptr)142 b(-)47 b(pointer)f(to)h(a)g('fitsfile')e(structure)h
+(describing)f(the)i(input)f(FITS)h(file.)0 3942 y(intval)142
+b(-)47 b(integer)f(part)g(of)i(the)f(keyword)e(value)0
+4055 y(iomode)142 b(-)47 b(file)g(access)f(mode:)g(either)g(READONLY)g
+(\(=0\))g(or)i(READWRITE)d(\(=1\))0 4168 y(keyname)94
+b(-)47 b(name)g(of)g(a)g(keyword)f(\(8)h(char)g(max,)g
+(null-terminated\))0 4281 y(keynum)142 b(-)47 b(position)f(of)h
+(keyword)f(in)h(header)f(\(1st)g(keyword)g(=)i(1\))0
+4394 y(keyroot)94 b(-)47 b(root)g(string)f(for)h(the)g(keyword)e(name)i
+(\(5)g(char)g(max,)f(null-terminated\))0 4507 y(keysexist-)f(number)h
+(of)h(existing)f(keyword)g(records)f(in)j(the)f(CHU)0
+4620 y(keytype)94 b(-)47 b(header)f(record)g(type:)h(-1=delete;)92
+b(0=append)46 b(or)h(replace;)907 4733 y(1=append;)e(2=this)h(is)h(the)
+g(END)g(keyword)0 4846 y(longstr)94 b(-)47 b(arbitrarily)e(long)h
+(string)g(keyword)g(value)h(\(null-terminated\))0 4959
+y(lpixel)142 b(-)47 b(coordinate)e(of)i(the)g(last)g(pixel)f(to)h(be)g
+(read)g(or)g(written)f(in)h(the)525 5072 y(FITS)g(array.)93
+b(The)47 b(array)g(must)f(be)i(of)f(length)f(NAXIS)g(and)h(have)g
+(values)f(such)525 5185 y(that)h(lpixel[0])e(is)i(in)g(the)g(range)g(1)
+g(to)g(NAXIS1,)f(lpixel[1])f(is)i(in)h(the)525 5297 y(range)e(1)i(to)f
+(NAXIS2,)f(etc.)0 5410 y(match)190 b(-)47 b(TRUE)g(\(=1\))f(if)h(the)g
+(2)h(strings)e(match,)g(else)g(FALSE)h(\(=0\))0 5523
+y(maxdim)142 b(-)47 b(maximum)f(number)g(of)h(values)f(to)h(return)0
+5636 y(member)142 b(-)47 b(row)g(number)f(of)h(a)h(grouping)d(table)i
+(member)f(HDU.)p eop end
+%%Page: 174 182
+TeXDict begin 174 181 bop 0 299 a Fj(174)1822 b Fh(APPENDIX)31
+b(B.)61 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)0 555 y Fe(memptr)142
+b(-)47 b(pointer)f(to)h(the)g(a)g(FITS)g(file)g(in)g(memory)0
+668 y(mem_realloc)e(-)i(pointer)f(to)h(a)h(function)d(for)i
+(reallocating)e(more)h(memory)0 781 y(memsize)94 b(-)47
+b(size)g(of)g(the)g(memory)f(block)g(allocated)f(for)i(the)g(FITS)g
+(file)0 894 y(mfptr)190 b(-)47 b(fitsfile*)e(pointer)h(to)h(a)h
+(grouping)d(table)i(member)f(HDU.)0 1007 y(mgopt)190
+b(-)47 b(grouping)f(table)g(merge)g(option)g(parameter.)f(Allowed)h
+(values)g(are:)525 1120 y(OPT_MRG_COPY,)e(and)j(OPT_MRG_MOV.)0
+1233 y(minute)142 b(-)47 b(minute)f(within)g(hour)h(\(UTC\))f(\(0)h(-)h
+(59\))0 1346 y(month)190 b(-)47 b(calendar)f(month)g(\(UTC\))g(\(1)h(-)
+h(12\))0 1458 y(morekeys)e(-)h(space)f(in)i(the)e(header)h(for)f(this)h
+(many)g(more)f(keywords)0 1571 y(n_good_rows)f(-)i(number)f(of)h(rows)g
+(evaluating)e(to)i(TRUE)0 1684 y(namelist)f(-)h(string)f(containing)f
+(a)j(comma)e(or)h(space)f(delimited)g(list)g(of)i(names)0
+1797 y(naxes)190 b(-)47 b(size)g(of)g(each)f(dimension)g(in)h(the)g
+(FITS)f(array)0 1910 y(naxis)190 b(-)47 b(number)f(of)h(dimensions)e
+(in)i(the)g(FITS)g(array)0 2023 y(naxis1)142 b(-)47 b(length)f(of)h
+(the)g(X/first)f(axis)h(of)g(the)g(FITS)f(array)0 2136
+y(naxis2)142 b(-)47 b(length)f(of)h(the)g(Y/second)f(axis)g(of)i(the)e
+(FITS)h(array)0 2249 y(naxis3)142 b(-)47 b(length)f(of)h(the)g(Z/third)
+f(axis)h(of)g(the)g(FITS)f(array)0 2362 y(nbytes)142
+b(-)47 b(number)f(of)h(bytes)g(or)g(characters)e(to)i(read)g(or)g
+(write)0 2475 y(nchars)142 b(-)47 b(number)f(of)h(characters)e(to)i
+(read)g(or)g(write)0 2588 y(nelements-)e(number)h(of)h(data)g(elements)
+e(to)j(read)e(or)h(write)0 2700 y(newfptr)94 b(-)47 b(returned)f
+(pointer)f(to)j(the)e(reopened)g(file)0 2813 y(newveclen-)f(new)i
+(value)f(for)h(the)g(column)f(vector)g(repeat)g(parameter)0
+2926 y(nexc)238 b(-)47 b(number)f(of)h(names)g(in)g(the)g(exclusion)e
+(list)i(\(may)f(=)i(0\))0 3039 y(nfound)142 b(-)47 b(number)f(of)h
+(keywords)f(found)g(\(highest)g(keyword)g(number\))0
+3152 y(nkeys)190 b(-)47 b(number)f(of)h(keywords)f(in)h(the)g(sequence)
+0 3265 y(ninc)238 b(-)47 b(number)f(of)h(names)g(in)g(the)g(inclusion)e
+(list)0 3378 y(nmembers)h(-)h(Number)f(of)h(grouping)f(table)g(members)
+g(\(NAXIS2)g(value\).)0 3491 y(nmove)190 b(-)47 b(number)f(of)h(HDUs)g
+(to)g(move)g(\(+)g(or)g(-\),)g(relative)f(to)h(current)f(position)0
+3604 y(nocomments)f(-)i(if)h(equal)e(to)h(TRUE,)g(then)f(no)h
+(commentary)e(keywords)h(will)h(be)g(copied)0 3717 y(noisebits-)e
+(number)h(of)h(bits)g(to)g(ignore)f(when)h(compressing)e(floating)g
+(point)h(images)0 3830 y(nrows)190 b(-)47 b(number)f(of)h(rows)g(in)g
+(the)g(table)0 3942 y(nstart)142 b(-)47 b(first)f(integer)g(value)0
+4055 y(nullarray-)f(set)i(to)g(TRUE)g(\(=1\))f(if)i(corresponding)c
+(data)i(element)g(is)h(undefined)0 4168 y(nulval)142
+b(-)47 b(numerical)e(value)i(to)g(represent)e(undefined)g(pixels)0
+4281 y(nulstr)142 b(-)47 b(character)e(string)h(used)h(to)g(represent)e
+(undefined)h(values)g(in)h(ASCII)f(table)0 4394 y(numval)142
+b(-)47 b(numerical)e(data)i(value,)f(of)h(the)g(appropriate)e(data)h
+(type)0 4507 y(offset)142 b(-)47 b(byte)g(offset)f(in)h(the)g(heap)f
+(or)i(data)e(unit)h(to)g(the)g(first)f(element)g(of)h(the)g(vector)0
+4620 y(openfptr)f(-)h(pointer)f(to)h(a)g(currently)f(open)g(FITS)h
+(file)0 4733 y(overlap)94 b(-)47 b(number)f(of)h(bytes)g(in)g(the)g
+(binary)f(table)g(heap)h(pointed)f(to)h(by)g(more)g(than)f(1)525
+4846 y(descriptor)0 4959 y(outcolnum-)f(output)h(column)g(number;)g
+(range)g(=)i(1)f(to)g(TFIELDS)f(+)i(1)0 5072 y(outfile)94
+b(-)47 b(and)g(optional)e(output)i(filename;)e(the)i(input)f(file)h
+(will)f(be)i(copied)e(to)h(this)f(prior)525 5185 y(to)h(opening)f(the)h
+(file)0 5297 y(outfptr)94 b(-)47 b(pointer)f(to)h(a)g('fitsfile')e
+(structure)h(describing)f(the)i(output)f(FITS)g(file.)0
+5410 y(pcount)142 b(-)47 b(value)f(of)i(the)e(PCOUNT)h(keyword)e(=)j
+(size)e(of)i(binary)e(table)g(heap)0 5523 y(previous)g(-)h(if)g(TRUE,)g
+(any)f(previous)g(HDUs)h(in)g(the)g(input)f(file)h(will)f(be)i(copied.)
+0 5636 y(repeat)142 b(-)47 b(length)f(of)h(column)f(vector)g(\(e.g.)h
+(12J\);)f(==)h(1)h(for)f(ASCII)f(table)p eop end
+%%Page: 175 183
+TeXDict begin 175 182 bop 3764 299 a Fj(175)0 555 y Fe(rmopt)190
+b(-)47 b(grouping)f(table)g(remove)g(option)g(parameter.)f(Allowed)h
+(values)g(are:)525 668 y(OPT_RM_GPT,)f(OPT_RM_ENTRY,)f(OPT_RM_MBR,)h
+(and)i(OPT_RM_ALL.)0 781 y(rootname)f(-)h(root)g(filename,)e(minus)h
+(any)h(extension)e(or)j(filtering)d(specifications)0
+894 y(rot)286 b(-)47 b(celestial)e(coordinate)g(rotation)h(angle)g
+(\(degrees\))0 1007 y(rowlen)142 b(-)47 b(length)f(of)h(a)h(table)e
+(row,)h(in)g(characters)e(or)i(bytes)0 1120 y(rowlist)94
+b(-)47 b(sorted)f(list)h(of)g(row)g(numbers)f(to)h(be)g(deleted)f(from)
+g(the)h(table)0 1233 y(rownum)142 b(-)47 b(number)f(of)h(the)g(row)g
+(\(first)f(row)h(=)h(1\))0 1346 y(rowrange)e(-)h(list)g(of)g(rows)f(or)
+i(row)f(ranges:)e('3,6-8,12,56-80')f(or)j('500-')0 1458
+y(row_status)e(-)i(array)g(of)g(True/False)e(results)h(for)h(each)f
+(row)h(that)g(was)g(evaluated)0 1571 y(scale)190 b(-)47
+b(linear)f(scaling)g(factor;)g(true)g(value)h(=)g(\(FITS)g(value\))f(*)
+h(scale)f(+)i(zero)0 1684 y(second)142 b(-)47 b(second)f(within)g
+(minute)g(\(0)h(-)h(60.9999999999\))c(\(leap)i(second!\))0
+1797 y(section)94 b(-)47 b(section)f(of)h(image)f(to)i(be)f(copied)f
+(\(e.g.)g(21:80,101:200\))0 1910 y(simple)142 b(-)47
+b(TRUE)g(\(=1\))f(if)h(FITS)g(file)g(conforms)e(to)i(the)g(Standard,)f
+(else)g(FALSE)h(\(=0\))0 2023 y(space)190 b(-)47 b(number)f(of)h(blank)
+g(spaces)f(to)h(leave)f(between)g(ASCII)g(table)h(columns)0
+2136 y(status)142 b(-)47 b(returned)f(error)g(status)g(code)h(\(0)g(=)g
+(OK\))0 2249 y(sum)286 b(-)47 b(32)g(bit)g(unsigned)f(checksum)f(value)
+0 2362 y(tbcol)190 b(-)47 b(byte)g(position)e(in)i(row)g(to)g(start)g
+(of)g(column)f(\(1st)h(col)g(has)g(tbcol)f(=)h(1\))0
+2475 y(tdisp)190 b(-)47 b(Fortran)f(style)g(display)g(format)g(for)h
+(the)g(table)f(column)0 2588 y(tdimstr)94 b(-)47 b(the)g(value)f(of)h
+(the)g(TDIMn)g(keyword)0 2700 y(templt)142 b(-)47 b(template)f(string)g
+(used)g(in)h(comparison)e(\(null-terminated\))0 2813
+y(tfields)94 b(-)47 b(number)f(of)h(fields)f(\(columns\))g(in)h(the)g
+(table)0 2926 y(tfopt)190 b(-)47 b(grouping)f(table)g(member)g
+(transfer)g(option)g(parameter.)f(Allowed)g(values)i(are:)525
+3039 y(OPT_MCP_ADD,)d(and)j(OPT_MCP_MOV.)0 3152 y(tform)190
+b(-)47 b(format)f(of)h(the)g(column)f(\(null-terminated\);)d(allowed)j
+(values)g(are:)525 3265 y(ASCII)g(tables:)94 b(Iw,)47
+b(Aw,)g(Fww.dd,)f(Eww.dd,)f(or)j(Dww.dd)525 3378 y(Binary)e(tables:)g
+(rL,)h(rX,)g(rB,)g(rI,)g(rJ,)f(rA,)h(rAw,)g(rE,)g(rD,)g(rC,)g(rM)525
+3491 y(where)f('w'=width)g(of)h(the)g(field,)f('d'=no.)g(of)h
+(decimals,)e('r'=repeat)g(count.)525 3604 y(Variable)h(length)g(array)g
+(columns)g(are)h(denoted)f(by)h(a)g('1P')g(before)f(the)h(data)f(type)
+525 3717 y(character)f(\(e.g.,)h('1PJ'\).)94 b(When)47
+b(creating)e(a)j(binary)e(table,)g(2)h(addition)f(tform)525
+3830 y(data)h(type)f(codes)h(are)g(recognized)e(by)i(CFITSIO:)e('rU')i
+(and)g('rV')f(for)h(unsigned)525 3942 y(16-bit)f(and)h(unsigned)f
+(32-bit)g(integer,)f(respectively.)0 4168 y(theap)190
+b(-)47 b(zero)g(indexed)e(byte)i(offset)f(of)h(starting)f(address)g(of)
+h(the)g(heap)525 4281 y(relative)f(to)h(the)g(beginning)e(of)i(the)g
+(binary)f(table)g(data)0 4394 y(tilesize)g(-)h(array)f(of)i(length)e
+(NAXIS)g(that)h(specifies)e(the)i(dimensions)e(of)525
+4507 y(the)i(image)f(compression)f(tiles)0 4620 y(ttype)190
+b(-)47 b(label)f(or)i(name)e(for)h(table)f(column)h
+(\(null-terminated\))0 4733 y(tunit)190 b(-)47 b(physical)f(unit)g(for)
+h(table)f(column)h(\(null-terminated\))0 4846 y(typechar)f(-)h
+(symbolic)f(code)g(of)h(the)g(table)g(column)f(data)g(type)0
+4959 y(typecode)g(-)h(data)g(type)f(code)h(of)g(the)g(table)f(column.)
+94 b(The)47 b(negative)e(of)525 5072 y(the)i(value)f(indicates)g(a)h
+(variable)f(length)g(array)g(column.)764 5185 y(Datatype)618
+b(typecode)189 b(Mnemonic)764 5297 y(bit,)46 b(X)907
+b(1)381 b(TBIT)764 5410 y(byte,)46 b(B)811 b(11)381 b(TBYTE)764
+5523 y(logical,)45 b(L)668 b(14)381 b(TLOGICAL)764 5636
+y(ASCII)46 b(character,)f(A)286 b(16)381 b(TSTRING)p
+eop end
+%%Page: 176 184
+TeXDict begin 176 183 bop 0 299 a Fj(176)1822 b Fh(APPENDIX)31
+b(B.)61 b(P)-8 b(ARAMETER)30 b(DEFINITIONS)764 555 y
+Fe(short)46 b(integer,)g(I)381 b(21)g(TSHORT)764 668
+y(integer,)45 b(J)668 b(41)381 b(TINT32BIT)46 b(\(same)g(as)h(TLONG\))
+764 781 y(long)f(long)h(integer,)e(K)191 b(81)381 b(TLONGLONG)764
+894 y(real,)46 b(E)811 b(42)381 b(TFLOAT)764 1007 y(double)46
+b(precision,)f(D)238 b(82)381 b(TDOUBLE)764 1120 y(complex,)45
+b(C)668 b(83)381 b(TCOMPLEX)764 1233 y(double)46 b(complex,)f(M)286
+b(163)381 b(TDBLCOMPLEX)0 1346 y(unit)238 b(-)47 b(the)g(physical)e
+(unit)i(string)f(\(e.g.,)g('km/s'\))g(for)h(a)g(keyword)0
+1458 y(unused)142 b(-)47 b(number)f(of)h(unused)f(bytes)h(in)g(the)g
+(binary)f(table)g(heap)0 1571 y(urltype)94 b(-)47 b(the)g(file)g(type)f
+(of)h(the)g(FITS)g(file)g(\(file://,)e(ftp://,)h(mem://,)f(etc.\))0
+1684 y(validheap-)g(returned)h(value)g(=)h(FALSE)g(if)g(any)g(of)g(the)
+g(variable)e(length)i(array)525 1797 y(address)f(are)h(outside)f(the)g
+(valid)h(range)f(of)h(addresses)f(in)h(the)g(heap)0 1910
+y(value)190 b(-)47 b(the)g(keyword)f(value)g(string)g(\(70)h(char)g
+(max,)f(null-terminated\))0 2023 y(version)94 b(-)47
+b(current)f(version)g(number)g(of)h(the)g(CFITSIO)f(library)0
+2136 y(width)190 b(-)47 b(width)f(of)i(the)e(character)g(string)g
+(field)0 2249 y(xcol)238 b(-)47 b(number)f(of)h(the)g(column)f
+(containing)f(the)i(X)h(coordinate)d(values)0 2362 y(xinc)238
+b(-)47 b(X)g(axis)g(coordinate)e(increment)g(at)j(reference)d(pixel)h
+(\(deg\))0 2475 y(xpix)238 b(-)47 b(X)g(axis)g(pixel)f(location)0
+2588 y(xpos)238 b(-)47 b(X)g(axis)g(celestial)e(coordinate)g(\(usually)
+h(RA\))h(\(deg\))0 2700 y(xrefpix)94 b(-)47 b(X)g(axis)g(reference)e
+(pixel)i(array)f(location)0 2813 y(xrefval)94 b(-)47
+b(X)g(axis)g(coordinate)e(value)h(at)i(the)f(reference)e(pixel)h
+(\(deg\))0 2926 y(ycol)238 b(-)47 b(number)f(of)h(the)g(column)f
+(containing)f(the)i(X)h(coordinate)d(values)0 3039 y(year)238
+b(-)47 b(calendar)f(year)g(\(e.g.)h(1999,)f(2000,)g(etc\))0
+3152 y(yinc)238 b(-)47 b(Y)g(axis)g(coordinate)e(increment)g(at)j
+(reference)d(pixel)h(\(deg\))0 3265 y(ypix)238 b(-)47
+b(y)g(axis)g(pixel)f(location)0 3378 y(ypos)238 b(-)47
+b(y)g(axis)g(celestial)e(coordinate)g(\(usually)h(DEC\))h(\(deg\))0
+3491 y(yrefpix)94 b(-)47 b(Y)g(axis)g(reference)e(pixel)i(array)f
+(location)0 3604 y(yrefval)94 b(-)47 b(Y)g(axis)g(coordinate)e(value)h
+(at)i(the)f(reference)e(pixel)h(\(deg\))0 3717 y(zero)238
+b(-)47 b(scaling)f(offset;)g(true)g(value)h(=)g(\(FITS)f(value\))h(*)g
+(scale)f(+)i(zero)p eop end
+%%Page: 177 185
+TeXDict begin 177 184 bop 0 1225 a Fg(App)5 b(endix)64
+b(C)0 1687 y Fm(CFITSIO)76 b(Error)h(Status)h(Co)6 b(des)0
+2180 y Fj(The)28 b(follo)m(wing)h(table)g(lists)g(all)g(the)f(error)g
+(status)g(co)s(des)g(used)f(b)m(y)h(CFITSIO.)f(Programmers)h(are)g
+(encouraged)0 2293 y(to)37 b(use)e(the)h(sym)m(b)s(olic)h(mnemonics)e
+(\(de\014ned)g(in)h(the)g(\014le)g(\014tsio.h\))h(rather)e(than)h(the)g
+(actual)h(in)m(teger)h(status)0 2406 y(v)-5 b(alues)31
+b(to)g(impro)m(v)m(e)g(the)g(readabilit)m(y)g(of)g(their)f(co)s(de.)48
+2665 y Fe(Symbolic)45 b(Const)190 b(Value)237 b(Meaning)48
+2778 y(--------------)187 b(-----)94 b(------------------------)o(----)
+o(---)o(----)o(----)o(--)1002 2891 y(0)191 b(OK,)47 b(no)g(error)48
+3004 y(SAME_FILE)427 b(101)190 b(input)46 b(and)h(output)f(files)h(are)
+g(the)f(same)48 3117 y(TOO_MANY_FILES)187 b(103)j(tried)46
+b(to)h(open)g(too)g(many)g(FITS)f(files)h(at)g(once)48
+3230 y(FILE_NOT_OPENED)139 b(104)190 b(could)46 b(not)h(open)g(the)g
+(named)f(file)48 3343 y(FILE_NOT_CREATED)91 b(105)190
+b(could)46 b(not)h(create)f(the)h(named)g(file)48 3456
+y(WRITE_ERROR)331 b(106)190 b(error)46 b(writing)g(to)h(FITS)g(file)48
+3569 y(END_OF_FILE)331 b(107)190 b(tried)46 b(to)h(move)g(past)g(end)g
+(of)g(file)48 3681 y(READ_ERROR)379 b(108)190 b(error)46
+b(reading)g(from)h(FITS)f(file)48 3794 y(FILE_NOT_CLOSED)139
+b(110)190 b(could)46 b(not)h(close)g(the)f(file)48 3907
+y(ARRAY_TOO_BIG)235 b(111)190 b(array)46 b(dimensions)f(exceed)h
+(internal)g(limit)48 4020 y(READONLY_FILE)235 b(112)190
+b(Cannot)46 b(write)g(to)i(readonly)d(file)48 4133 y(MEMORY_ALLOCATION)
+e(113)190 b(Could)46 b(not)h(allocate)f(memory)48 4246
+y(BAD_FILEPTR)331 b(114)190 b(invalid)46 b(fitsfile)f(pointer)48
+4359 y(NULL_INPUT_PTR)187 b(115)j(NULL)47 b(input)f(pointer)g(to)h
+(routine)48 4472 y(SEEK_ERROR)379 b(116)190 b(error)46
+b(seeking)g(position)g(in)h(file)48 4698 y(BAD_URL_PREFIX)235
+b(121)142 b(invalid)46 b(URL)h(prefix)f(on)h(file)g(name)48
+4811 y(TOO_MANY_DRIVERS)139 b(122)j(tried)46 b(to)h(register)f(too)h
+(many)g(IO)g(drivers)48 4924 y(DRIVER_INIT_FAILED)c(123)142
+b(driver)46 b(initialization)e(failed)48 5036 y(NO_MATCHING_DRIVER)f
+(124)142 b(matching)45 b(driver)i(is)g(not)g(registered)48
+5149 y(URL_PARSE_ERROR)187 b(125)142 b(failed)46 b(to)h(parse)g(input)f
+(file)h(URL)48 5262 y(RANGE_PARSE_ERROR)91 b(126)142
+b(parse)46 b(error)h(in)g(range)f(list)48 5488 y(SHARED_BADARG)235
+b(151)190 b(bad)47 b(argument)e(in)j(shared)e(memory)g(driver)48
+5601 y(SHARED_NULPTR)235 b(152)190 b(null)47 b(pointer)e(passed)h(as)i
+(an)f(argument)48 5714 y(SHARED_TABFULL)187 b(153)j(no)47
+b(more)g(free)f(shared)g(memory)h(handles)1882 5942 y
+Fj(177)p eop end
+%%Page: 178 186
+TeXDict begin 178 185 bop 0 299 a Fj(178)1589 b Fh(APPENDIX)31
+b(C.)61 b(CFITSIO)29 b(ERR)m(OR)h(ST)-8 b(A)g(TUS)30
+b(CODES)48 555 y Fe(SHARED_NOTINIT)187 b(154)j(shared)46
+b(memory)g(driver)g(is)h(not)g(initialized)48 668 y(SHARED_IPCERR)235
+b(155)190 b(IPC)47 b(error)f(returned)g(by)h(a)g(system)f(call)48
+781 y(SHARED_NOMEM)283 b(156)190 b(no)47 b(memory)f(in)h(shared)f
+(memory)h(driver)48 894 y(SHARED_AGAIN)283 b(157)190
+b(resource)45 b(deadlock)h(would)g(occur)48 1007 y(SHARED_NOFILE)235
+b(158)190 b(attempt)46 b(to)h(open/create)e(lock)h(file)h(failed)48
+1120 y(SHARED_NORESIZE)139 b(159)190 b(shared)46 b(memory)g(block)g
+(cannot)h(be)g(resized)f(at)h(the)g(moment)48 1346 y(HEADER_NOT_EMPTY)
+91 b(201)190 b(header)46 b(already)g(contains)f(keywords)48
+1458 y(KEY_NO_EXIST)283 b(202)190 b(keyword)46 b(not)h(found)f(in)h
+(header)48 1571 y(KEY_OUT_BOUNDS)187 b(203)j(keyword)46
+b(record)g(number)g(is)h(out)g(of)g(bounds)48 1684 y(VALUE_UNDEFINED)
+139 b(204)190 b(keyword)46 b(value)g(field)g(is)i(blank)48
+1797 y(NO_QUOTE)475 b(205)190 b(string)46 b(is)h(missing)f(the)h
+(closing)f(quote)48 1910 y(BAD_INDEX_KEY)235 b(206)190
+b(illegal)46 b(indexed)g(keyword)f(name)i(\(e.g.)f('TFORM1000'\))48
+2023 y(BAD_KEYCHAR)331 b(207)190 b(illegal)46 b(character)f(in)i
+(keyword)f(name)h(or)g(card)48 2136 y(BAD_ORDER)427 b(208)190
+b(required)45 b(keywords)h(out)h(of)g(order)48 2249 y(NOT_POS_INT)331
+b(209)190 b(keyword)46 b(value)g(is)h(not)g(a)h(positive)d(integer)48
+2362 y(NO_END)571 b(210)190 b(couldn't)45 b(find)i(END)g(keyword)48
+2475 y(BAD_BITPIX)379 b(211)190 b(illegal)46 b(BITPIX)g(keyword)g
+(value)48 2588 y(BAD_NAXIS)427 b(212)190 b(illegal)46
+b(NAXIS)g(keyword)g(value)48 2700 y(BAD_NAXES)427 b(213)190
+b(illegal)46 b(NAXISn)g(keyword)g(value)48 2813 y(BAD_PCOUNT)379
+b(214)190 b(illegal)46 b(PCOUNT)g(keyword)g(value)48
+2926 y(BAD_GCOUNT)379 b(215)190 b(illegal)46 b(GCOUNT)g(keyword)g
+(value)48 3039 y(BAD_TFIELDS)331 b(216)190 b(illegal)46
+b(TFIELDS)g(keyword)f(value)48 3152 y(NEG_WIDTH)427 b(217)190
+b(negative)45 b(table)i(row)g(size)48 3265 y(NEG_ROWS)475
+b(218)190 b(negative)45 b(number)i(of)g(rows)f(in)i(table)48
+3378 y(COL_NOT_FOUND)235 b(219)190 b(column)46 b(with)h(this)f(name)h
+(not)g(found)f(in)h(table)48 3491 y(BAD_SIMPLE)379 b(220)190
+b(illegal)46 b(value)g(of)h(SIMPLE)f(keyword)48 3604
+y(NO_SIMPLE)427 b(221)190 b(Primary)46 b(array)g(doesn't)g(start)g
+(with)h(SIMPLE)48 3717 y(NO_BITPIX)427 b(222)190 b(Second)46
+b(keyword)g(not)h(BITPIX)48 3830 y(NO_NAXIS)475 b(223)190
+b(Third)46 b(keyword)g(not)h(NAXIS)48 3942 y(NO_NAXES)475
+b(224)190 b(Couldn't)45 b(find)i(all)g(the)g(NAXISn)f(keywords)48
+4055 y(NO_XTENSION)331 b(225)190 b(HDU)47 b(doesn't)f(start)g(with)h
+(XTENSION)e(keyword)48 4168 y(NOT_ATABLE)379 b(226)190
+b(the)47 b(CHDU)f(is)i(not)f(an)g(ASCII)f(table)g(extension)48
+4281 y(NOT_BTABLE)379 b(227)190 b(the)47 b(CHDU)f(is)i(not)f(a)g
+(binary)f(table)g(extension)48 4394 y(NO_PCOUNT)427 b(228)190
+b(couldn't)45 b(find)i(PCOUNT)f(keyword)48 4507 y(NO_GCOUNT)427
+b(229)190 b(couldn't)45 b(find)i(GCOUNT)f(keyword)48
+4620 y(NO_TFIELDS)379 b(230)190 b(couldn't)45 b(find)i(TFIELDS)f
+(keyword)48 4733 y(NO_TBCOL)475 b(231)190 b(couldn't)45
+b(find)i(TBCOLn)f(keyword)48 4846 y(NO_TFORM)475 b(232)190
+b(couldn't)45 b(find)i(TFORMn)f(keyword)48 4959 y(NOT_IMAGE)427
+b(233)190 b(the)47 b(CHDU)f(is)i(not)f(an)g(IMAGE)f(extension)48
+5072 y(BAD_TBCOL)427 b(234)190 b(TBCOLn)46 b(keyword)g(value)g(<)i(0)f
+(or)g(>)h(rowlength)48 5185 y(NOT_TABLE)427 b(235)190
+b(the)47 b(CHDU)f(is)i(not)f(a)g(table)48 5297 y(COL_TOO_WIDE)283
+b(236)190 b(column)46 b(is)h(too)g(wide)g(to)g(fit)g(in)g(table)48
+5410 y(COL_NOT_UNIQUE)187 b(237)j(more)47 b(than)f(1)i(column)e(name)g
+(matches)g(template)48 5523 y(BAD_ROW_WIDTH)235 b(241)190
+b(sum)47 b(of)g(column)f(widths)g(not)h(=)h(NAXIS1)48
+5636 y(UNKNOWN_EXT)331 b(251)190 b(unrecognizable)44
+b(FITS)i(extension)g(type)p eop end
+%%Page: 179 187
+TeXDict begin 179 186 bop 3764 299 a Fj(179)48 555 y
+Fe(UNKNOWN_REC)331 b(252)190 b(unknown)46 b(record;)g(1st)g(keyword)g
+(not)h(SIMPLE)f(or)h(XTENSION)48 668 y(END_JUNK)475 b(253)190
+b(END)47 b(keyword)f(is)h(not)g(blank)48 781 y(BAD_HEADER_FILL)139
+b(254)190 b(Header)46 b(fill)h(area)f(contains)g(non-blank)f(chars)48
+894 y(BAD_DATA_FILL)235 b(255)190 b(Illegal)46 b(data)g(fill)h(bytes)f
+(\(not)h(zero)g(or)g(blank\))48 1007 y(BAD_TFORM)427
+b(261)190 b(illegal)46 b(TFORM)g(format)g(code)48 1120
+y(BAD_TFORM_DTYPE)139 b(262)190 b(unrecognizable)44 b(TFORM)i(data)h
+(type)f(code)48 1233 y(BAD_TDIM)475 b(263)190 b(illegal)46
+b(TDIMn)g(keyword)g(value)48 1346 y(BAD_HEAP_PTR)283
+b(264)190 b(invalid)46 b(BINTABLE)f(heap)i(pointer)f(is)h(out)g(of)g
+(range)48 1571 y(BAD_HDU_NUM)331 b(301)190 b(HDU)47 b(number)f(<)h(1)48
+1684 y(BAD_COL_NUM)331 b(302)190 b(column)46 b(number)g(<)i(1)f(or)g(>)
+h(tfields)48 1797 y(NEG_FILE_POS)283 b(304)190 b(tried)46
+b(to)h(move)g(to)g(negative)f(byte)g(location)g(in)h(file)48
+1910 y(NEG_BYTES)427 b(306)190 b(tried)46 b(to)h(read)g(or)g(write)g
+(negative)e(number)h(of)h(bytes)48 2023 y(BAD_ROW_NUM)331
+b(307)190 b(illegal)46 b(starting)f(row)i(number)f(in)h(table)48
+2136 y(BAD_ELEM_NUM)283 b(308)190 b(illegal)46 b(starting)f(element)h
+(number)g(in)h(vector)48 2249 y(NOT_ASCII_COL)235 b(309)190
+b(this)47 b(is)g(not)g(an)g(ASCII)f(string)g(column)48
+2362 y(NOT_LOGICAL_COL)139 b(310)190 b(this)47 b(is)g(not)g(a)g
+(logical)f(data)h(type)f(column)48 2475 y(BAD_ATABLE_FORMAT)d(311)190
+b(ASCII)46 b(table)h(column)f(has)h(wrong)f(format)48
+2588 y(BAD_BTABLE_FORMAT)d(312)190 b(Binary)46 b(table)g(column)g(has)h
+(wrong)g(format)48 2700 y(NO_NULL)523 b(314)190 b(null)47
+b(value)f(has)h(not)g(been)f(defined)48 2813 y(NOT_VARI_LEN)283
+b(317)190 b(this)47 b(is)g(not)g(a)g(variable)f(length)g(column)48
+2926 y(BAD_DIMEN)427 b(320)190 b(illegal)46 b(number)g(of)h(dimensions)
+e(in)i(array)48 3039 y(BAD_PIX_NUM)331 b(321)190 b(first)46
+b(pixel)h(number)f(greater)g(than)g(last)h(pixel)48 3152
+y(ZERO_SCALE)379 b(322)190 b(illegal)46 b(BSCALE)g(or)h(TSCALn)f
+(keyword)g(=)h(0)48 3265 y(NEG_AXIS)475 b(323)190 b(illegal)46
+b(axis)g(length)g(<)i(1)48 3491 y(NOT_GROUP_TABLE)330
+b(340)142 b(Grouping)46 b(function)f(error)48 3604 y
+(HDU_ALREADY_MEMBER)186 b(341)48 3717 y(MEMBER_NOT_FOUND)282
+b(342)48 3830 y(GROUP_NOT_FOUND)330 b(343)48 3942 y(BAD_GROUP_ID)474
+b(344)48 4055 y(TOO_MANY_HDUS_TRACKED)42 b(345)48 4168
+y(HDU_ALREADY_TRACKED)138 b(346)48 4281 y(BAD_OPTION)570
+b(347)48 4394 y(IDENTICAL_POINTERS)186 b(348)48 4507
+y(BAD_GROUP_ATTACH)282 b(349)48 4620 y(BAD_GROUP_DETACH)g(350)48
+4846 y(NGP_NO_MEMORY)426 b(360)238 b(malloc)46 b(failed)48
+4959 y(NGP_READ_ERR)474 b(361)238 b(read)46 b(error)h(from)f(file)48
+5072 y(NGP_NUL_PTR)522 b(362)238 b(null)46 b(pointer)g(passed)g(as)h
+(an)g(argument.)1575 5185 y(Passing)f(null)g(pointer)g(as)h(a)h(name)f
+(of)1575 5297 y(template)f(file)g(raises)g(this)h(error)48
+5410 y(NGP_EMPTY_CURLINE)234 b(363)k(line)46 b(read)h(seems)f(to)h(be)h
+(empty)e(\(used)1575 5523 y(internally\))48 5636 y
+(NGP_UNREAD_QUEUE_FULL)c(364)238 b(cannot)46 b(unread)g(more)g(then)h
+(1)g(line)g(\(or)g(single)p eop end
+%%Page: 180 188
+TeXDict begin 180 187 bop 0 299 a Fj(180)1589 b Fh(APPENDIX)31
+b(C.)61 b(CFITSIO)29 b(ERR)m(OR)h(ST)-8 b(A)g(TUS)30
+b(CODES)1575 555 y Fe(line)47 b(twice\))48 668 y(NGP_INC_NESTING)330
+b(365)238 b(too)46 b(deep)h(include)f(file)h(nesting)e(\(infinite)1575
+781 y(loop,)h(template)g(includes)f(itself)i(?\))48 894
+y(NGP_ERR_FOPEN)426 b(366)238 b(fopen\(\))45 b(failed,)h(cannot)g(open)
+h(template)e(file)48 1007 y(NGP_EOF)714 b(367)238 b(end)46
+b(of)i(file)e(encountered)f(and)i(not)g(expected)48 1120
+y(NGP_BAD_ARG)522 b(368)238 b(bad)46 b(arguments)g(passed.)g(Usually)f
+(means)1575 1233 y(internal)h(parser)g(error.)g(Should)g(not)h(happen)
+48 1346 y(NGP_TOKEN_NOT_EXPECT)90 b(369)238 b(token)46
+b(not)h(expected)e(here)48 1571 y(BAD_I2C)523 b(401)190
+b(bad)47 b(int)g(to)g(formatted)e(string)h(conversion)48
+1684 y(BAD_F2C)523 b(402)190 b(bad)47 b(float)f(to)h(formatted)f
+(string)g(conversion)48 1797 y(BAD_INTKEY)379 b(403)190
+b(can't)46 b(interpret)g(keyword)f(value)i(as)g(integer)48
+1910 y(BAD_LOGICALKEY)187 b(404)j(can't)46 b(interpret)g(keyword)f
+(value)i(as)g(logical)48 2023 y(BAD_FLOATKEY)283 b(405)190
+b(can't)46 b(interpret)g(keyword)f(value)i(as)g(float)48
+2136 y(BAD_DOUBLEKEY)235 b(406)190 b(can't)46 b(interpret)g(keyword)f
+(value)i(as)g(double)48 2249 y(BAD_C2I)523 b(407)190
+b(bad)47 b(formatted)e(string)h(to)h(int)g(conversion)48
+2362 y(BAD_C2F)523 b(408)190 b(bad)47 b(formatted)e(string)h(to)h
+(float)g(conversion)48 2475 y(BAD_C2D)523 b(409)190 b(bad)47
+b(formatted)e(string)h(to)h(double)f(conversion)48 2588
+y(BAD_DATATYPE)283 b(410)190 b(illegal)46 b(datatype)f(code)i(value)48
+2700 y(BAD_DECIM)427 b(411)190 b(bad)47 b(number)f(of)h(decimal)f
+(places)g(specified)48 2813 y(NUM_OVERFLOW)283 b(412)190
+b(overflow)45 b(during)i(data)f(type)h(conversion)48
+2926 y(DATA_COMPRESSION_ERR)137 b(413)95 b(error)46 b(compressing)f
+(image)48 3039 y(DATA_DECOMPRESSION_ERR)c(414)95 b(error)46
+b(uncompressing)f(image)48 3265 y(BAD_DATE)475 b(420)190
+b(error)46 b(in)h(date)g(or)g(time)g(conversion)48 3491
+y(PARSE_SYNTAX_ERR)91 b(431)190 b(syntax)46 b(error)g(in)i(parser)e
+(expression)48 3604 y(PARSE_BAD_TYPE)187 b(432)j(expression)45
+b(did)i(not)g(evaluate)e(to)i(desired)f(type)48 3717
+y(PARSE_LRG_VECTOR)91 b(433)190 b(vector)46 b(result)g(too)h(large)f
+(to)i(return)e(in)h(array)48 3830 y(PARSE_NO_OUTPUT)139
+b(434)190 b(data)47 b(parser)f(failed)g(not)h(sent)f(an)h(out)g(column)
+48 3942 y(PARSE_BAD_COL)235 b(435)190 b(bad)47 b(data)f(encounter)g
+(while)g(parsing)g(column)48 4055 y(PARSE_BAD_OUTPUT)91
+b(436)190 b(Output)46 b(file)h(not)g(of)g(proper)f(type)48
+4281 y(ANGLE_TOO_BIG)235 b(501)190 b(celestial)45 b(angle)i(too)f
+(large)h(for)g(projection)48 4394 y(BAD_WCS_VAL)331 b(502)190
+b(bad)47 b(celestial)e(coordinate)g(or)i(pixel)g(value)48
+4507 y(WCS_ERROR)427 b(503)190 b(error)46 b(in)h(celestial)f
+(coordinate)f(calculation)48 4620 y(BAD_WCS_PROJ)283
+b(504)190 b(unsupported)45 b(type)h(of)h(celestial)f(projection)48
+4733 y(NO_WCS_KEY)379 b(505)190 b(celestial)45 b(coordinate)g(keywords)
+h(not)h(found)48 4846 y(APPROX_WCS_KEY)187 b(506)j(approximate)45
+b(wcs)i(keyword)e(values)h(were)h(returned)p eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF