\contentsline {chapter}{\numberline {1}Introduction }{1} \contentsline {section}{\numberline {1.1} A Brief Overview}{1} \contentsline {section}{\numberline {1.2}Sources of FITS Software and Information}{1} \contentsline {section}{\numberline {1.3}Acknowledgements}{2} \contentsline {section}{\numberline {1.4}Legal Stuff}{4} \contentsline {chapter}{\numberline {2} Creating the CFITSIO Library }{5} \contentsline {section}{\numberline {2.1}Building the Library}{5} \contentsline {subsection}{\numberline {2.1.1}Unix Systems}{5} \contentsline {subsection}{\numberline {2.1.2}VMS}{7} \contentsline {subsection}{\numberline {2.1.3}Windows PCs}{7} \contentsline {subsection}{\numberline {2.1.4}Macintosh PCs}{7} \contentsline {section}{\numberline {2.2}Testing the Library}{8} \contentsline {section}{\numberline {2.3}Linking Programs with CFITSIO}{9} \contentsline {section}{\numberline {2.4}Getting Started with CFITSIO}{9} \contentsline {section}{\numberline {2.5}Example Program}{10} \contentsline {chapter}{\numberline {3} A FITS Primer }{13} \contentsline {chapter}{\numberline {4} Programming Guidelines }{15} \contentsline {section}{\numberline {4.1}CFITSIO Definitions}{15} \contentsline {section}{\numberline {4.2}Current Header Data Unit (CHDU)}{17} \contentsline {section}{\numberline {4.3}Function Names and Variable Datatypes}{18} \contentsline {section}{\numberline {4.4}Support for Unsigned Integers}{19} \contentsline {section}{\numberline {4.5}Dealing with Character Strings}{21} \contentsline {section}{\numberline {4.6}Implicit Data Type Conversion}{22} \contentsline {section}{\numberline {4.7}Data Scaling}{22} \contentsline {section}{\numberline {4.8}Support for IEEE Special Values}{23} \contentsline {section}{\numberline {4.9}Error Status Values and the Error Message Stack}{23} \contentsline {section}{\numberline {4.10}Variable-Length Arrays in Binary Tables}{24} \contentsline {section}{\numberline {4.11}Multiple Access to the Same FITS File}{25} \contentsline {section}{\numberline {4.12}When the Final Size of the FITS HDU is Unknown}{26} \contentsline {section}{\numberline {4.13}CFITSIO Size Limitations}{26} \contentsline {chapter}{\numberline {5}Basic CFITSIO Interface Routines }{29} \contentsline {section}{\numberline {5.1}CFITSIO Error Status Routines}{29} \contentsline {section}{\numberline {5.2}FITS File Access Routines}{30} \contentsline {section}{\numberline {5.3}HDU Access Routines}{32} \contentsline {section}{\numberline {5.4}Header Keyword Read/Write Routines}{34} \contentsline {subsection}{\numberline {5.4.1}Keyword Reading Routines}{35} \contentsline {subsection}{\numberline {5.4.2}Keyword Writing Routines}{36} \contentsline {section}{\numberline {5.5}Primary Array or IMAGE Extension I/O Routines}{38} \contentsline {section}{\numberline {5.6}Image Compression}{41} \contentsline {section}{\numberline {5.7}ASCII and Binary Table Routines}{44} \contentsline {subsection}{\numberline {5.7.1}Column Information Routines}{44} \contentsline {subsection}{\numberline {5.7.2}Routines to Edit Rows or Columns}{46} \contentsline {subsection}{\numberline {5.7.3}Read and Write Column Data Routines}{47} \contentsline {subsection}{\numberline {5.7.4}Row Selection and Calculator Routines}{49} \contentsline {section}{\numberline {5.8}Utility Routines}{51} \contentsline {subsection}{\numberline {5.8.1}File Checksum Routines}{51} \contentsline {subsection}{\numberline {5.8.2}Date and Time Utility Routines}{52} \contentsline {subsection}{\numberline {5.8.3}General Utility Routines}{53} \contentsline {chapter}{\numberline {6} The CFITSIO Iterator Function }{61} \contentsline {section}{\numberline {6.1}The Iterator Work Function}{62} \contentsline {section}{\numberline {6.2}The Iterator Driver Function}{64} \contentsline {section}{\numberline {6.3}Guidelines for Using the Iterator Function}{65} \contentsline {section}{\numberline {6.4}Complete List of Iterator Routines}{66} \contentsline {chapter}{\numberline {7} Celestial Coordinate System Routines }{69} \contentsline {section}{\numberline {7.1} Self-contained WCS Routines}{69} \contentsline {section}{\numberline {7.2}WCS Routines that require the WCS library}{71} \contentsline {chapter}{\numberline {8} Hierarchical Grouping Routines }{73} \contentsline {section}{\numberline {8.1}Grouping Table Routines}{74} \contentsline {section}{\numberline {8.2}Group Member Routines}{76} \contentsline {chapter}{\numberline {9} Specialized CFITSIO Interface Routines }{79} \contentsline {section}{\numberline {9.1}FITS File Access Routines}{79} \contentsline {section}{\numberline {9.2}HDU Access Routines}{81} \contentsline {section}{\numberline {9.3}Specialized Header Keyword Routines}{83} \contentsline {subsection}{\numberline {9.3.1}Header Information Routines}{83} \contentsline {subsection}{\numberline {9.3.2}Read and Write the Required Keywords}{84} \contentsline {subsection}{\numberline {9.3.3}Write Keyword Routines}{85} \contentsline {subsection}{\numberline {9.3.4}Insert Keyword Routines}{87} \contentsline {subsection}{\numberline {9.3.5}Read Keyword Routines}{88} \contentsline {subsection}{\numberline {9.3.6}Modify Keyword Routines}{89} \contentsline {subsection}{\numberline {9.3.7}Update Keyword Routines}{90} \contentsline {section}{\numberline {9.4}Define Data Scaling and Undefined Pixel Parameters}{91} \contentsline {section}{\numberline {9.5}Specialized FITS Primary Array or IMAGE Extension I/O Routines}{92} \contentsline {section}{\numberline {9.6}Specialized FITS ASCII and Binary Table Routines}{96} \contentsline {subsection}{\numberline {9.6.1}General Column Routines}{96} \contentsline {subsection}{\numberline {9.6.2}Low-Level Table Access Routines}{97} \contentsline {subsection}{\numberline {9.6.3}Write Column Data Routines}{98} \contentsline {subsection}{\numberline {9.6.4}Read Column Data Routines}{99} \contentsline {chapter}{\numberline {10} Extended File Name Syntax }{103} \contentsline {section}{\numberline {10.1}Overview}{103} \contentsline {section}{\numberline {10.2}Filetype}{106} \contentsline {subsection}{\numberline {10.2.1}Notes about the root filetype}{106} \contentsline {subsection}{\numberline {10.2.2}Notes about the shmem filetype:}{108} \contentsline {section}{\numberline {10.3}Base Filename}{109} \contentsline {section}{\numberline {10.4}Output File Name when Opening an Existing File}{110} \contentsline {section}{\numberline {10.5}Template File Name when Creating a New File}{112} \contentsline {section}{\numberline {10.6}Image Tile-Compression Specification}{112} \contentsline {section}{\numberline {10.7}HDU Location Specification}{112} \contentsline {section}{\numberline {10.8}Image Section}{113} \contentsline {section}{\numberline {10.9}Column and Keyword Filtering Specification}{114} \contentsline {section}{\numberline {10.10}Row Filtering Specification}{116} \contentsline {subsection}{\numberline {10.10.1}General Syntax}{116} \contentsline {subsection}{\numberline {10.10.2}Vector Columns}{120} \contentsline {subsection}{\numberline {10.10.3}Good Time Interval Filtering}{121} \contentsline {subsection}{\numberline {10.10.4}Spatial Region Filtering}{121} \contentsline {subsection}{\numberline {10.10.5}Example Row Filters}{123} \contentsline {section}{\numberline {10.11} Binning or Histogramming Specification}{124} \contentsline {chapter}{\numberline {11}Template Files }{127} \contentsline {section}{\numberline {11.1}Detailed Template Line Format}{127} \contentsline {section}{\numberline {11.2}Auto-indexing of Keywords}{128} \contentsline {section}{\numberline {11.3}Template Parser Directives}{129} \contentsline {section}{\numberline {11.4}Formal Template Syntax}{129} \contentsline {section}{\numberline {11.5}Errors}{130} \contentsline {section}{\numberline {11.6}Examples}{130} \contentsline {chapter}{\numberline {12} Local FITS Conventions }{133} \contentsline {section}{\numberline {12.1}64-Bit Long Integers}{133} \contentsline {section}{\numberline {12.2}Long String Keyword Values.}{134} \contentsline {section}{\numberline {12.3}Arrays of Fixed-Length Strings in Binary Tables}{135} \contentsline {section}{\numberline {12.4}Keyword Units Strings}{135} \contentsline {section}{\numberline {12.5}HIERARCH Convention for Extended Keyword Names}{136} \contentsline {section}{\numberline {12.6}Tile-Compressed Image Format}{136} \contentsline {chapter}{\numberline {13} Optimizing Programs }{139} \contentsline {section}{\numberline {13.1}How CFITSIO Manages Data I/O}{139} \contentsline {section}{\numberline {13.2}Optimization Strategies}{140} \contentsline {chapter}{\numberline {A}Index of Routines }{143} \contentsline {chapter}{\numberline {B}Parameter Definitions }{147} \contentsline {chapter}{\numberline {C}CFITSIO Error Status Codes }{153}