1WCSLIB version 7.7 (2021/07/12) 2------------------------------- 3 4* C library 5 6 - In disfree() and disset(), removed potential for double invokation 7 of free() on allocated memory. Reported by Cyril Richard. 8 9 - In wcsutil_fptr2str(), fixed a bug reported by Ralf Palsa (with fix) 10 that caused it to be overly enthusiastic in stripping leading zeroes 11 off addresses of function pointers. 12 13 - In wcspcx(), replaced variable length arrays will allocated memory 14 (portability issue). Reported by Mihai Cara with patch. 15 16 - Fixed buglets in wcsbth() and linsize() uncovered by gcc 11.1.0. 17 18 - Quelled inconsequential compiler warnings from gcc 11.1.0 concerning 19 wcsmix() (function prototype in wcs.h), wcstrim(), wcseulexe(), 20 wcsulex(), and wcsutrne(). 21 22 - Defined _POSIX_C_SOURCE appropriately in tprj2.c and tspc.c to get 23 the function prototype etc. for nanosleep() from time.h. 24 25* Fortran wrappers 26 27 - Quelled numerous inconsequential compiler warnings from gfortran 28 11.1.0. 29 30 - Fixed minor bugs uncovered by gfortran 11.1.0 in test programs tdis2 31 and ttab3. 32 33* Utilities 34 35 - Moved 'tofits' from ./C/test/ into the utilities directory as it's 36 generally useful, and added usage (converted to man page). 37 38 Also made it a bit smarter in dealing with ISO/IEC 8859 and UTF-8 39 encoded byte streams, in particular translating non-breaking spaces 40 into ordinary spaces. 41 42* Installation 43 44 - Two patches for configure.ac provided by Mos� Giordano: 45 1. makes it possible to build the Windows library using the MinGW 46 cross-compiler, 47 2. makes the soname of the MacOSX library consistent with other 48 Unix systems. 49 50 51WCSLIB version 7.6 (2021/04/13) 52------------------------------- 53 54* C library 55 56 - Bug fix in tabs2x() triggered for 1-dimensional coordinate lookup 57 tables on axes > 1. Reported by Mihai Cara. 58 59 - In datfix(), don't return status 0 if no change was made (fix for 60 change made at release 7.4). Reported by Derek Homeier. 61 62 - New function wcspcx() in the wcsfix suite regularizes the linear 63 transformation component of a coordinate description to make it more 64 human-readable. It decomposes CDi_ja into PCi_ja and CDELTia in 65 such a way that CDELTia forms meaningful scaling parameters, often 66 leaving an orthogonal or near-orthogonal matrix. Optionally, it can 67 then permute rows of this matrix to unscramble axis permutations. 68 69 A test header may be generated from wcspcx.keyrec for input to 70 wcsware (not exercised as part of the standard test suite). 71 72 - New function wcstrim() frees memory allocated by wcsinit() for 73 arrays in a wcsprm struct that remain unused after the struct has 74 been set up. 75 76 - New functions wcssize(), auxsize(), tabsize(), linsize(), dissize(), 77 celsize(), prjsize(), spcsize(), and wcserr_size() compute the total 78 size of the relevant structs, including allocated memory. 79 80 - In the C test suite, inserted a brief pause in tprj2 and tspc, which 81 otherwise have now become a blur. 82 83* Fortran wrappers 84 85 - Added wrappers for wcspcx(), wcstrim(), wcssize(), auxsize(), 86 tabsize(), linsize(), dissize(), celsize(), prjsize(), spcsize(), 87 and wcserr_size(). 88 89* Utilities 90 91 - Added -c, -cp, -C, and -Cp options to wcsware to apply wcspcx() 92 in a variety of ways, -m to apply wcstrim(), and -z to report the 93 total size of the wcsprm struct with a breakdown of the sizes of 94 its constituent structs. 95 96 - Fixed compiler warnings for sundazel (portability issue). 97 98* Installation 99 100 - Upped the required version of Flex to 2.6.0 (was 2.5.9). Problems 101 with Flex 2.5.39 reported by Derek Homeier. 102 103 Also added '--disable-flex' as a new configure option to force the 104 use of the pre-generated Flex sources. 105 106 107WCSLIB version 7.5 (2021/03/20) 108------------------------------- 109 110The C code in WCSLIB is moving piecemeal to the C99 standard. In fact, 111various indispensible C99 constructs have been used in WCSLIB for many 112years: the long long int data type (in fitshdr() only); stdint.h, 113inttypes.h, and the use of PRI formatting control (in wcsprintf(), which 114is widely used by the library); and the C99-extended library function 115vsnprintf() (used by wcserr for a decade). Flex-generated C code also 116uses C99 extensions, though with workarounds if they are not available. 117 118Except in the header prologues, which are formatted in a special way for 119generating the user manual, comments were changed en masse to C99 style 120in release 7.3.1, and variable declarations in code that I have occasion 121to modify will transition to the more general placement allowed by C99. 122However, I have no plans to use any of the more esoteric features of 123C99. 124 125* C library 126 127 - New function, wcsccs(), changes the celestial coordinate system of a 128 wcsprm struct, for example, from equatorial to galactic coordinates. 129 The parameters that define the spherical coordinate transformation 130 must be provided. This allows WCSLIB to provide this functionality 131 without needing to know anything about specific celestial coordinate 132 systems, and has the advantage of making the routine completely 133 general. Requested by Mohammad Akhlaghi. 134 135 Modified test program twcsfix also to test wcsccs(). 136 137 - Fixed a problem common to all of the Flex code (fitshdr, wcsbth, 138 wcspih, wcsulex, and wcsutrn) that made it thread-unsafe. Reported 139 by Cyril Richard. 140 141 Added a new test program, tpthreads, to test thread safety. It is 142 only used for code development, and not exercised as part of the 143 standard test suite. 144 145 - In fitshdr(), fixed a problem that potentially could arise on 146 systems where sizeof(long long int) is greater than 8 (64 bits). 147 148* Fortran wrappers 149 150 - Match changes to the C library: added a wrapper for wcsccs(), and 151 modified twcsfix.f. 152 153 - Because null addresses cannot be passed to functions in Fortran, 154 wcssub_() now interprets *nsub == -1 && *axes == -1 as a signal to 155 do a deep copy of one wcsprm struct to another. 156 157* Utilities 158 159 - New utility, sundazel, computes the local time of the Sun's passage 160 through the specified apparent longitude or latitude in a user- 161 defined coordinate system. It can also perform several other Solar 162 related calculations. (It is unrelated to FITS WCS, and does not 163 use WCSLIB.) 164 165* Installation 166 167 - Added an 'uninstall' rule to the makefiles. Suggested by 168 Cyril Richard. 169 170 171WCSLIB version 7.4 (2021/01/31) 172------------------------------- 173 174* C library 175 176 - In wcshdo(), fixed a bug introduced in release 5.9 that potentially 177 caused loss of numerical precision in the sprintf() formatting of 178 floating point keyvalues. This was triggered when a large range of 179 CRPIXja, PCi_ja, or CDELTia values (as three separate groups) were 180 formatted using an 'f' format descriptor, the range not being so 181 large that it would have forced wcshdo() to revert to 'E' format. 182 Reported by Mohammad Akhlaghi. 183 184 Also in wcshdo(), fixed a bug introduced in release 7.1 that caused 185 the coefficients of the TPD distortion function not to be written to 186 the header. TPD and Polynomial distortion function headers will now 187 always include the DPja.DOCORR keyword. Reported by Derek Homeier 188 with patch. 189 190 - In wcsset(), fixed a segv generated in attempting to report a non- 191 standard units string with wcserr message reporting disabled. 192 Reported by Mohammad Akhlaghi. 193 194 In wcsutrne(), allow 'Angstroms' and 'angstroms' as additional 195 synonyms for 'Angstrom'. 196 197 - In datfix(), ensure that 0 is returned if an informational message 198 is set in wcsprm::err. Consequent on feedback independently from 199 Mihai Cara and Bruce Merry. 200 201 Clarified that informational messages may be set in wcsprm::err 202 for returns of 0 from datfix(), obsfix(), unitfix(), and spcfix(). 203 204* User manual 205 206 - Added cautions about translating CDi_ja to PCi_ja plus CDELTia for 207 those historical distortion functions (TPV, TNX, ZPX) that expect to 208 operate on intermediate world coordinates, rather than intermediate 209 pixel coordinates. Consequent on feedback from Mohammad Akhlaghi. 210 211 - Documentation generation moved to doxygen 1.9.1 (was 1.8.19). 212 213 214WCSLIB version 7.3.1 (2020/08/17) 215--------------------------------- 216 217There are no functional changes in this release. 218 219* C library 220* Fortran wrappers 221* PGSBOX 222* Utilities 223 224 - Changed all C code, including within the flex sources, Fortran and 225 PGSBOX wrappers, and test suite, to use C99 style commenting (i.e. 226 using //), excluding the header prologues used to generate the user 227 manual. 228 229* User manual 230 231 - Documentation generation moved to doxygen 1.8.19 (was 1.8.18). 232 233 234WCSLIB version 7.3 (2020/06/03) 235------------------------------- 236 237* C library 238 239 - wcshdo() was writing MJD-OBS twice to the header, and MJD-BEG not 240 at all. 241 242 - In wcshdo(), if MJDREF assumes its default value, just write 243 MJDREF = 0 (not MJDREFI & MJDREFF), and omit writing DATEREF, 244 which, with a value of '1858-11-17', looks strange and is 245 potentially confusing. Reported by Thomas Robitaille. 246 247 If the fractional part of MJDREF is zero, then just write the 248 integer part as MJDREF (i.e. not as MJDREFI & MJDREFF). 249 250 - Bug fix in wcsfix() - it was writing error messages that referred 251 to DATE-REF and MJD-REF rather then DATEREF and MJDREF. Reported 252 by Mihai Cara. 253 254 - Under control of a new flag, WCSHDR_DATEREF, added the option to 255 wcspih() and wcsbth() to accept DATE-REF, MJD-REF, MJD-REFI, 256 MJD-REFF, JDREF, JD-REFI, and JD-REFF as synonyms for the standard 257 keywords, DATEREF, MJDREF, MJDREFI, MJDREFF, JDREF, JDREFI, and 258 JDREFF. The latter buck the pattern set by the other date keywords 259 ({DATE,MJD}-{OBS,BEG,AVG,END}), thereby increasing the potential 260 for confusion and error. 261 262* Fortran wrappers 263 264 - As compilers are becoming much stricter (gfortran 10), modified all 265 Fortran test programs to use the type-specific equivalents of the 266 various *PUT and *GET routines. Reported by Ole Streicher. 267 268 - For the fitshdr wrappers, added type-specific equivalents of 269 KEYGET: KEYGTI, KEYGTD, and KEYGTC. 270 271* PGSBOX 272 273 - Modified pgtest to use the type-specific equivalents of WCSPUT. 274 275* User manual 276 277 - In the section "WCSLIB Fortran wrappers", promoted use of the type- 278 specific equivalents of the various *PUT and *GET routines. 279 280 - In the section "FITS-WCS and related software", added ASCL and ADS 281 codes, where they exist, for all software packages mentioned. 282 283 - Documentation generation moved to doxygen 1.8.18 (was 1.8.17). 284 285 286WCSLIB version 7.2 (2020/03/09) 287------------------------------- 288 289* C library 290 291 - In wcssub(), fixed a bug relating to handling coordinate lookup 292 tables. Reported by Mihai Cara with fix. 293 294 Also increased the number of coordinate axes handled from 10 to 32. 295 296* Installation 297 298 - New configure option, --disable-shared, defeats generation of the 299 sharable library. 300 301 302WCSLIB version 7.1 (2020/01/01) 303------------------------------- 304 305Changes in the contents of the wcsprm struct necessitated incrementing 306the major version number from 6 to 7 (i.e. the ABI changed). 307 308* C library 309 310 - In wcsset(), set wcsprm::mjdref[] to zero if neither it nor 311 wcsprm::dateref are defined, as per the standard. Reported by 312 Thomas Robitaille. 313 314 wcsset() now also checks that the number of coordinate axes does not 315 exceed 32. 316 317 - In tabs2x(), fixed an out-of-bounds array access produced by invalid 318 world coordinates. Reported by Mihai Cara and Michael Seifert. 319 320 In tab.c, declare static three helper functions, tabedge(), 321 tabrow(), and tabvox(), used by tabs2x(). Increased the number of 322 coordinate axes handled by tabvox() from 16 to 32. 323 324 - Extended datfix() to handle MJDREF/DATEREF, overlooked in the 325 changes in release 6.1. Also fixed the handling of MJD < 0. 326 327 - Support Solar keywords RSUN_REF, DSUN_OBS, CRLN_OBS, CRLT_OBS, 328 HGLN_OBS, and HGLT_OBS by accomodating them within an auxiliary 329 struct, auxprm, within the wcsprm struct. Now filled by the header 330 parsers, wcspih() and wcsbth() and handled routinely by wcsinit(), 331 wcssub(), wcscompare(), wcsfree(), wcsprt(), wcsset(), and wcshdo(). 332 Requested by Stuart Mumford (SunPy) with input from Bill Thompson. 333 334 - Bug fix in wcsprintf_set() for resetting the output disposition. 335 Reported by Mihai Cara with patch. 336 337 - In dis.{h,c}, the DOCORR record is now handled as a first-class 338 value via disprm::docorr. This required changing the struct. 339 340 - In cel.c, spc.c, wcserr.c, wcsfix.c, wcshdr.c, and wcsutil.c, 341 quelled compiler warnings from gcc 9.2.0 generated by 342 -Wmaybe-uninitialized and -Wstringop-truncation (via -Wall). 343 344 Similarly for various programs in the test suite. 345 346 - In various functions, quelled warnings from the Microsoft Visual C++ 347 compiler, mostly relating to pointer arithmetic. Reported by 348 Michael Seifert. 349 350* Fortran wrappers 351 352 - Handled compiler warnings from gcc 9.2.0 generated by 353 -Wstringop-truncation (via -Wall). 354 355 - Minor enhancements to character argument handling, including, in 356 prjget_(), blank-filling the returned strings matching PRJ_CODE and 357 PRJ_NAME, and likewise for SPC_TYPE and SPC_CODE in spcget_(). 358 359* Utilities 360 361 - In wcsgrid, handled compiler warnings from gcc 9.2.0 generated by 362 -Wstringop-truncation (via -Wall). 363 364* User manual 365 366 - In the section on "FITS-WCS and related software", added mention of 367 the R wrappers (Rwcs). Suggested by Aaron Robotham. 368 369 - Added a new section detailing the limit on the number of image axes 370 that WCSLIB can handle (currently 32), and how this could be 371 increased if needed. Prompted by Thomas Robitaille. 372 373 - Augmented the section on the Fortran wrappers, particularly with 374 respect to character string handling in argument lists. 375 376 - Documentation generation moved to doxygen 1.8.17 (was 1.8.16). 377 378 379WCSLIB version 6.4 (2019/08/15) 380------------------------------- 381 382* Installation 383 384 - The rule change to the Fortran makefile in v6.3 to add getwcstab_f.o 385 to the sharable library causes it to depend on CFITSIO to resolve 386 fits_get_wcstab(). Hence backed out of that change. 387 388* User manual 389 390 - Documentation generation moved to doxygen 1.8.16 (was 1.8.14). 391 392 393WCSLIB version 6.3 (2019/07/12) 394------------------------------- 395 396* C library 397 398 - Fixed the Polynomial and TPD distortions so that, as stipulated in 399 WCS Paper IV, they are now considered to return an additive 400 correction to be applied to the given coordinates, rather than the 401 corrected coordinates themselves. 402 403 Added a new subsection to the prologue of dis.h entitled 'Historical 404 idiosyncrasies', which discusses this issue and other vagueries. 405 406 Amended components of the test suite accordingly: SIPTPV.keyrec, 407 TPV7.keyrec, and tdis1.c. 408 409 - Fixed memory leaks and other potential problems that arose in the 410 wcserr system consequent on changes made in release 6.1. 411 412 Memory allocated by wcsfixi() for messages in the array of wcserr 413 structs must now be freed by the caller. Amended twcsfix.c 414 accordingly. 415 416 - Plugged memory leaks arising in disset(). 417 418 - New function wcsdealloc() provided to free memory allocated within 419 certain WCSLIB routines. Suggested by David Motl. 420 421 - Eliminated a swag of inconsequential compiler warnings, particularly 422 those emanating from the flex sources. 423 424* Validation 425 426 - The library, Fortran wrappers, utilities, and test programs now pass 427 runtime analysis using -fsanitize=address and -fsanitize=undefined 428 in gcc 8.3.0, in addition to valgrind. Also compile-time strictures 429 using -std=c99, -pedantic, -Wall, -Wextra, and -DFORTIFY_SOURCE=2. 430 Prompted by feedback from Ole Streicher. 431 432* Installation 433 434 - The non-graphical tests now run reliably in parallel builds 435 (make CHECK=nopgplot -j8 check). Requested by Mohammed Akhlaghi. 436 437 The graphical tests can also be run in parallel, but as PGPLOT can 438 only handle one stream at a time, some graphics are likely to be 439 lost. Nevertheless, it is a useful option, especially with runtime 440 analysis via -fsanitize=address, etc. 441 442 - As CFITSIO doesn't provide a Fortran wrapper for fits_read_wcstab(), 443 getwcstab_f.o is now always included in the WCSLIB object library 444 and sharable library if CFITSIO is available (and the WCSLIB Fortran 445 wrappers are required). Use 'configure --without-cfitsio' to 446 defeat this. 447 448 - Tidied up some aspects of the build where CFITSIO is not available. 449 450* User manual 451 452 - Fixed minor formatting problems in dis.h. 453 454 455WCSLIB version 6.2 (2018/10/20) 456------------------------------- 457 458* C library 459 460 - Consequent on the change in release 6.1, reapplied soothing balm to 461 the wtbarr struct definition in wcs.h for C++ compilation (C and 462 Fortran compilation being unaffected). While the object libraries 463 themselves are unchanged, the modified wcs.h must be installed for 464 compiling C++ applications. Reported by Corentin Schreiber. 465 466* User manual 467 468 - Fixed minor formatting problems with the doxygen manual generation. 469 470 471WCSLIB version 6.1 (2018/10/19) 472------------------------------- 473 474* C library 475 476 - Added support for time-related WCS keywords (Paper VII) by expanding 477 the wcsprm struct to store them as auxiliary values, now filled by 478 the header parsers, wcspih() and wcsbth() and handled routinely by 479 wcsinit(), wcssub(), wcscompare(), wcsfree(), wcsprt(), wcsset(), 480 and wcshdo(). 481 482 - Augmented datfix() to do various consistency checks on the new 483 time-related keyvalues, and added a new routine, obsfix(), to check 484 consistency of the OBSGEO-[XYZLBH] observatory coordinates. 485 486 - In the usage notes for wcsbth(), clarified that, according to WCS 487 Papers III and VII, certain global image header keywords are 488 permitted in binary table headers and are expected to be inherited 489 by image arrays and pixel lists, and elaborated on the difficulties 490 that such inheritance may cause for pixel lists. 491 492 - Revamped message string handling in the wcserr module to allow 493 arbitrarily long messages while greatly reducing the sizeof the 494 struct. 495 496 - Extracted the definition of the wtbarr struct from wcs.h to a 497 separate header file, wtbarr.h, in order to reduce the number of 498 irrelevant warnings generated by 'gcc -Wpadded' (primarily for 499 code development). Applications code that needs to access members 500 of the struct (unlikely) must now include wtbarr.h (or wcslib.h). 501 502 - The WCSLIB major version number was incremented as changes to the 503 wcsprm struct makes the ABI of the sharable library incompatible 504 with executables linked with that of older releases. 505 506* Fortran wrappers 507 508 - Match changes to the C library, including adding a wrapper for 509 obsfix(). 510 511* Installation 512 513 - Several changes to configure and the makefiles aimed at facilitating 514 code development. 515 516 517WCSLIB version 5.20 (2018/10/05) 518-------------------------------- 519 520* C library 521 522 - Added utility functions dpkeyi() and dpkeyd() to dis.c, and removed 523 the corresponding functions from wcsutil.c. 524 525* Fortran wrappers 526 527 - New wrappers for dpkeyi() and dpkeyd(). 528 529* Installation 530 531 - Reworked the makefiles to allow parallel library builds, as required 532 by some software distributions. Reported by Dustin Lang with 533 suggested patch, and Zaak Beekman. (Parallel execution of the test 534 suite is not supported.) 535 536 - The introduction of "deterministic" archiving (ar(1)) broke 537 dependency analysis in the WCSLIB makefiles on the many systems 538 where it is now enabled by default (i.e. binutils configured with 539 --enable-deterministic-archives). 540 541 Modified configure to force non-deterministic archiving during the 542 library builds, thus repairing the dependency analysis. However, 543 the static object libraries are now reconstructed using 544 deterministic archiving in the process of installing them. 545 546 - Fixed problems with the dependency analysis, solely affecting code 547 development. 548 549 550WCSLIB version 5.19.1 (2018/07/28) 551---------------------------------- 552 553* Installation 554 555 - Updated ./config/config.{guess,sub} to the latest versions from the 556 GIT repository, timestamped 2018-07-18 and 2018-07-25, respectively. 557 The previous pair were dated 2012-02-10 and 2012-04-18. 558 559 560WCSLIB version 5.19 (2018/07/27) 561-------------------------------- 562 563* C library 564 565 - In wcssub(), fixed a bug in handling distortion functions on axes 566 with changed axis number in the subimage (i.e. via deletion or 567 addition of an axis). 568 569 - In various routines within dis.c, wcs.c, wcshdr.c, and wcspih.l, 570 increased the size of various sprintf() output buffers to avert 571 -Wformat-overflow warnings from gcc 8.1.0 (with -DFORTIFY_SOURCE=2). 572 Reported by Simon Conseil. 573 574 Also fixed other warnings in these routines from gcc 8.1.0 575 relating to -Wcast-function-type, -Wmaybe-uninitialized, and 576 -Wunused-parameter. 577 578 - In wcsutrn.l (the units alias translator used by wcsfix), recognise 579 'Deg', 'Degree', and 'Degrees' as aliases for 'deg'. Rogue header 580 reported by Jim Lewis. 581 582 - Added a note to the prologue of spx.h explaining WCSLIB's use of 583 Cox's air-to-vacuum transformation equation rather than the IUGG 584 relation cited in WCS Paper III. Noted by Benjamin Alan Weaver. 585 586 - In the test suite, avert nuisance compiler warnings in tdis1. 587 Made tsphdpa more robust in handling user coordinate input. 588 589* PGSBOX 590 591 - In pgwcsl_(), avert nuisance warnings from gcc 8.1.0 relating to 592 unused parameters (-Wunused-parameter). Also averted nuisance 593 compiler warnings in cpgtest. 594 595* Utilities 596 597 - wcsware was not reading the -TAB table from the FITS file for 598 alternate descriptions, bug reported by Chiara Marmo. Nor was 599 wcsfix() ever invoked for them. 600 601 Made it more robust in handling user input of coordinates for the 602 -x and -w options. 603 604 - Fixed compiler warnings from gcc 8.1.0 in HPXcvt 605 (-Wmaybe-uninitialized), and wcsgrid (-Wformat-overflow). 606 607* Installation 608 609 - Amended configure.ac to allow cross-compilation, and also updated 610 the auxiliary configure scripts in the config/ directory. Patch 611 supplied by Mos� Giordano. 612 613 614WCSLIB version 5.18 (2018/01/10) 615-------------------------------- 616 617* C library 618 619 - New routines introduced to preclude altering the global variables 620 NPVMAX, NPSMAX, and NDPMAX, which determine how much memory to 621 allocate for storing PVi_ma, PSi_ma, DPja, and DQia keyvalues: 622 wcsinit(), lininit(), lindist(), and disinit(). These are now used 623 by various WCSLIB routines, such as the header parsers, which 624 previously temporarily altered the global variables, thus posing a 625 thread hazard. Testing and feedback on thread-safety issues, with 626 patches, from Rodrigo Tobar Carrizo. 627 628 - The Flex scanners, fitshdr(), wcsbth(), wcspih(), wcsulexe(), and 629 wcsutrne(), have been rewritten as thin wrappers (with the same API) 630 over scanners that were modified (with changed API) as required to 631 use Flex's "reentrant" option. Consequently, they are now reentrant 632 and should be thread-safe. That also passes through to the 633 deprecated wrappers, wcsulex() and wcsutrn(). 634 635 - Fixed memory leaks in lindist() and lincpy() uncovered by valgrind. 636 637 - Test programs tfitshdr, tpih1, tpih2, and ttab3 are now careful to 638 free all allocated memory before exit to defeat spurious reports of 639 memory leaks by valgrind. 640 641* Fortran wrappers 642 643 - New wrappers for wcsinit(), lininit(), lindist(), and disinit(). 644 645* Installation 646 647 - configure now recognises the value of ARFLAGS obtained from the 648 environment. 649 650* User manual 651 652 - Updates and amendments in line with the above changes. 653 654 - Documentation generation moved to doxygen 1.8.14 (was 1.8.13). 655 656 657WCSLIB version 5.17 (2017/09/18) 658-------------------------------- 659 660* C library 661 662 - Fixed a memory leak in wcspih(). Reported by Pim Schellart. 663 664 - Fixed compiler warnings about comparison between signed and unsigned 665 integers in tab.c (Pey-Lian Lim). Also fixed warnings in other 666 functions about unused parameters. 667 668* Fortran wrappers 669 670 - Fixed compiler warnings about comparison between signed and unsigned 671 integers in several routines. 672 673* PGSBOX 674 675 - Fixed a compiler warning about comparison between signed and 676 unsigned ints. 677 678* Installation 679 680 - Removed setgid permission on installation directories (for Fedora 681 Linux, reported by Sergio Pascual). 682 683* User manual 684 685 - Minor updates and amendments. 686 687 - Documentation generation moved to doxygen 1.8.13 (was 1.8.10). 688 689 690WCSLIB version 5.16 (2017/01/15) 691-------------------------------- 692 693* C library 694 695 - Bug fix in spcfix() for the previous change. Reported separately by 696 Julian Taylor & Peter Williams. 697 698 699WCSLIB version 5.15 (2016/04/05) 700-------------------------------- 701 702* C library 703 704 - Bug fix in wcsulex.l for the previous change. Reported, and fix 705 supplied by Tammo Jan Dijkema. 706 707 - In spcfix(), report the value of VELREF if ctype is translated from 708 the AIPS convention. 709 710 711WCSLIB version 5.14 (2016/02/07) 712-------------------------------- 713 714* C library 715 716 - In wcsulex.l and wcsutrn.l, applied a workaround for a memory leak 717 introduced by a change (bug) in flex in Aug/2012. Reported, and 718 fix supplied by Thomas Robitaille and Erik Bray. 719 720* Installation 721 722 - In MacOSX, create symlink libwcs.dylib pointing to the dynamic 723 library so that WCSLIB is linked dynamically by default. Requested 724 by Paul Price. 725 726 727WCSLIB version 5.13 (2016/01/26) 728-------------------------------- 729 730* C library 731 732 - In wcshdo(), provide floating-point format control via the 'ctrl' 733 argument (formerly 'relax'). 734 735 - In wcspih(), PLATEID by itself is no longer sufficient to trigger a 736 DSS translation (reported by James Allen). 737 738 - In unitfix(), ensure that the message buffer cannot be overrun, e.g. 739 by blank-padded unit strings (reported by Vishal Kasliwal). 740 741 742WCSLIB version 5.12 (2015/11/15) 743-------------------------------- 744 745* C library 746 747 - Bug fix in wcshdo() for CRVALia precision reported by Mihai Cara. 748 749 750WCSLIB version 5.11 (2015/10/18) 751-------------------------------- 752 753* C library 754 755 - Bug fixes in wcspih.l and dis.c for WAT distortions provided by 756 Ole Streicher. 757 758 759WCSLIB version 5.10 (2015/10/09) 760-------------------------------- 761 762* C library 763 764 - In wcshdo(), allow output of floating point keyvalues to 15 765 significant digits (was 14), mainly for astropy. 766 767 - In wcspih(), allow unrecognised WAT projection types (tan, etc.) to 768 pass without returning an error. Reported by Michael Droettboom. 769 Also fixed a bug triggered by SIP keywords in unconventional order, 770 reported by Colin Slater, LSST. 771 772 773WCSLIB version 5.9 (2015/07/21) 774------------------------------- 775 776* C library 777 778 - In disx2p(), make proper allowance for the possibility that the TPD 779 and SIP forward and inverse distortion polynomials may not be of the 780 same degree, reported by Martin Kuemmel. 781 782 - Fix-ups in wcshdo() reported by Michael Droettboom, and several 783 tidy-ups as well. 784 785 786WCSLIB version 5.8 (2015/07/08) 787------------------------------- 788 789* C library 790 791 - DSS (Digitized Sky Survey) coordinates are now handled via TPD, as 792 are the TNX and ZPX "projections". New test script tdis3 and 793 headers DSS.keyrec, TNX.keyrec, and ZPX.keyrec. 794 795 - New function dishdo() can be used to set a flag that causes 796 wcshdo() to write headers in the form of the distortion function 797 used internally (usually TPD). 798 799 - Added the capability, via DPja.DOCORR, for a distortion function to 800 to compute an additive correction to the undistorted coordinates 801 (rather than computing the distorted coordinates themselves). 802 803 - Added auxiliary variables to TPD via DPja.AUX.jhat.COEFF.m. 804 805 - Bug fix in wcshdo() for TPV, diagnosed by Michael Droettboom. 806 807* Fortran wrappers 808 809 - Wrapper for dishdo(). 810 811 812WCSLIB version 5.7 (2015/06/29) 813------------------------------- 814 815* C library 816 817 - Extended wcssub() to handle distortions (and thus wcscopy() also). 818 This required axis mapping to be enabled for SIP distortions within 819 WCSLIB. 820 821 - wcshdo() now handles all distortions currently supported by WCSLIB: 822 SIP, TPV, TPD, and Polynomial. 823 824 - Bug fixes in sphx2s() and sphs2x() for non-unit vector strides for 825 special-case rotations. 826 827 - In wcsset(), modify wcsprm::ctype after translating TPV so that 828 subsequent calls won't try to re-translate it, the PVi_ma records 829 by then having been erased. Reported by Michael Droettboom. Also, 830 restore NDPMAX after translating TPV. 831 832 - Bug fixes in discpy(), disprt(), disset(), and disx2p(). 833 834 - Added disperr(), prjperr(), spcperr(), spxperr(), and tabperr() to 835 complete the set and make reporting errors slightly more convenient. 836 837* Utilities 838 839 - wcsware has a new option, -o, to print the wcsprm struct in the form 840 of a FITS header using wcshdo(). Also, the -a option has been 841 extended to allow a 0-relative numeric index for selecting an 842 alternate WCS, where the alternates are sequenced alphabetically 843 (without gaps) following the primary representation. 844 845* User manual 846 847 - Documentation generation moved to doxygen 1.8.10 (was 1.8.9.1). 848 849 850WCSLIB version 5.6 (2015/06/14) 851------------------------------- 852 853* C library 854 855 - Bug fixes in wcspih() and sipset() to account for the fact that the 856 independent variables of the SIP polynomial are pixel coordinate 857 offsets from CRPIXja, not pixel coordinates per se. Diagnosed by 858 Michael Droettboom. 859 860 Validated SIP and TPV handling by comparing the output of 861 'wcsware -x' with that of wcstools 'xy2sky -d -n6' using astropy's 862 SIP test headers, and separate SIP and TPV headers originating from 863 the Palomar Transient Factory provided by David Shupe. 864 865 Changed SIP.keyrec so that CRPIX1 and CRPIX2 differ in value, 866 thereby making tests sensitive to any confusion between the two. 867 868 869WCSLIB version 5.5 (2015/05/05) 870------------------------------- 871 872* C library 873 874 - Bug fixes in wcspih.l for headers with multiple distortions, and for 875 distortion parameter look-alike keywords. 876 877 - Bug fix in sipset() uncovered by valgrind. 878 879 880WCSLIB version 5.4.1 (2015/05/01) 881--------------------------------- 882 883* C library 884 885 - Added a fairly lengthy section to the prologue of dis.h describing 886 the Paper IV keywords and the distortion functions currently 887 implemented. 888 889* User manual 890 891 - Added a new section on WCSLIB version numbers. 892 893 894WCSLIB version 5.4 (2015/04/21) 895------------------------------- 896 897* C library 898 899 - Further work on distortions: wcspih() now parses Paper IV distortion 900 keywords (CPDISja, CQDISia, DPja, DQia, etc.), thus handling record- 901 valued keywords. SIP keywords are also parsed and translated into 902 Paper IV keywords. 903 904 - TPV, SIP, and whereever possible, the general Polynomial distortion 905 function of Paper IV are now implemented by the Template Polynomial 906 Distortion (TPD), that being a superset of TPV and SIP. TPD, which 907 can also handle 1D distortions and be used for inversions, is also 908 supported as a separate distortion type defined by Paper IV 909 keywords. TPD efficiently handles 1D distortions and distortions 910 without radial terms. 911 912 - Specialized inverse distortions, such as defined by SIP, are 913 implemented by TPD and recognized by disx2p(), which uses them to 914 compute the initial approximation of its more precise iterative 915 solution. 916 917 - Generalized tdis1.c so that it can do closure tests for SIP headers, 918 and added a SIP test header. 919 920 921WCSLIB version 5.3.1 (2015/04/21) 922--------------------------------- 923 924* C library 925 926 - Bug fix in test program tdis1.c reported by Martin Kuemmel. 927 928 929WCSLIB version 5.3 (2015/04/21) 930------------------------------- 931 932First public release of WCSLIB 5.x with distortions capability. 933 934* C library 935 936 - Changed disprm::dtype from char[16] to char[72] for reasons relating 937 to header parsing. 938 939 - More armour plating for disset() and friends. They also use new 940 utility functions wcsutil_dpkey_int() and wcsutil_dpkey_double() to 941 extract numeric values from a dpkey struct. This ensures their 942 independence of the data type, the appropriate reporting of dpkey 943 values by disprt(), and (eventually) the appropriate writing of DPja 944 and DQia keyvalues by wcshdo(). 945 946 - Augmented the usage comments for dpfill() to explain how numeric 947 values in a dpkey struct are handled. 948 949* Utilities 950 951 - wcsware now uses wcserr to provide a backtrace on errors. Also 952 fixed a couple of minor annoyances relating to alternate 953 representations. 954 955 956WCSLIB version 5.2 beta release (2015/04/15) 957-------------------------------------------- 958 959* C library 960 961 - Further development of disprm and related functions to implement 962 the FITS keywords for distortions introduced in WCS Paper IV, thus 963 changing disprm's ABI once again. 964 965 disprm's model is now similar to wcsprm's handling of PVi_ma and 966 PSi_ma, where the parsed keyrecords are loaded into a set of pvcard 967 and pscard structs and wcsset() does the analysis. For disprm, the 968 parsed DPja or DQia keyrecords are loaded into a set of dpkey 969 structs for disset() to analyse. 970 971 - New function dpfill() aids in filling a dpkey struct. Function 972 disparms() has been removed. It was no longer needed as 973 disprm::parms[][] is now a "returned" member of the struct. 974 975 - Implementation of the general Polynomial distortion function defined 976 in Sect. 3.1 of WCS Paper IV. The polynomial is defined in terms of 977 Paper IV keywords. 978 979 - Bug fixes in diswarp() and linwarp() reported by 980 Michael Droettboom. 981 982 - Test program tdis1 now tests a TPV header for closure in two ways: 983 directly as a specialist TPV distortion (as before), then by 984 translating it into a general polynomial distortion. It then also 985 tests that the TPV and polynomial distortions produce the same 986 results. 987 988* Fortran wrappers 989 990 - Changes to the wrappers reflecting changes to disprm. 991 992 - Bug fixes in fitshdr_f.c, and test programs tdis1.f, tfitshdr.f, 993 twcsfix.f, and twcs.f. All reported and/or fixed by Ole Streicher. 994 995 996WCSLIB version 5.1 beta release (2015/04/07) 997-------------------------------------------- 998 999* C library 1000 1001 - Distortions-related bug fixes to linset(), linp2x(), and linx2p(). 1002 1003 - New functions diswarp() and linwarp() compute statistics of the 1004 distortion functions over a specified domain. Changed tdis1.c to 1005 test them. 1006 1007 - Changes to disprm (so changed ABI). 1008 1009* Fortran wrappers 1010 1011 - Wrappers for diswarp() and linwarp(). 1012 1013 1014WCSLIB version 5.0 beta release (2015/04/05) 1015-------------------------------------------- 1016 1017* C library 1018 1019 - Implemented the framework of WCS Paper IV (the draft distortions 1020 proposal) based on a new struct, disprm, and suite of routines with 1021 header dis.h: disini(), disalloc(), discpy(), disfree(), disprt(), 1022 disset(), disp2x(), and disx2p(). New test program tdis1. 1023 1024 Consequent changes to the linprm struct have altered its ABI, thus 1025 necessitating an increment in the WCSLIB major verion number. 1026 1027 - wcsset() now recognises the "TPV" projection proposed in an early 1028 draft of WCS Paper II, and translates it into a disprm distortion - 1029 by request of Octavi Fors. Additionally, it recognises "TPU" as 1030 equivalent to "TPV" but using a prior distortion (coming before the 1031 linear transformation matrix) rather than sequent (coming after it). 1032 1033 - In wcspih() and wcsbth(), added relaxation flags to allow PC0i_0ja, 1034 PV0j_0ma, and PS0j_0ma (i.e. with leading zeroes on the index). 1035 1036 - Added wcslib_version() to return the WCSLIB version number, as 1037 suggested by Ole Streicher. 1038 1039 - Fixed problems uncovered by valgrind in prjbchk() (reported by 1040 Ger van Diepen), sphx2s(), sphx2s(), spcspxe(), spcxpse(), tabini(), 1041 and wcshdo_util(). 1042 1043 - Tidied up error reporting, particularly relating to translating 1044 status returns from lower-level functions. New functions linperr() 1045 and celperr() report error messages from the structs they contain 1046 in addition to their own. 1047 1048 - Changed output formatting of floating point values in linprt(), 1049 celprt(), prjprt(), spcprt(), tabprt(), and wcsprt(). Updated the 1050 test output reference files for tbth1, tpih1, twcsfix, twcssub, and 1051 twcstab to suit. 1052 1053 - Tidied up several of the test programs, mostly to free memory 1054 explicitly before exit so that valgrind doesn't report (non-)leaks. 1055 1056* Fortran wrappers 1057 1058 - Wrappers for the new distortion functions. New test programs 1059 tdis1.f and tdis2.f. 1060 1061 - Updates following changes to wcspih() and wcsbth(). 1062 1063 - Added wrappers for linperr() and celperr(). Also added prjperr_(), 1064 spcperr_(), and tabperr_() as convenient wrappers on wcserr_prt(). 1065 1066 - Wrapper for wcslib_version(). 1067 1068* Utilities 1069 1070 - Added a "lint" function to wcsware to check a FITS header for 1071 conformance to the WCS standard. New test program twcslint. 1072 1073* PGSBOX 1074 1075 - In PGCRLB, fixed an incorrect use of the MOD intrinsic reported by 1076 'gfortran -std=f95' via Jean-Baptiste Marquette. 1077 1078 1079WCSLIB version 4.25.1 (2015/01/05) 1080---------------------------------- 1081 1082* C library 1083 1084 - Updated the test output reference files for tpih1, tbth1, twcsfix, 1085 and twcstab to account for the change to wcsset() in release 4.25. 1086 1087* Fortran wrappers 1088 1089 - Updated the test output reference files for tpih1, twcsfix, and 1090 twcstab to account for the change to wcsset() in release 4.25. 1091 1092* User manual 1093 1094 - Documentation generation moved to doxygen 1.8.9.1 (was 1.8.8). 1095 1096 1097WCSLIB version 4.25 (2014/12/15) 1098---------------------------------- 1099 1100* C library 1101 1102 - wcsset() now supplies default values for the auxiliary keywords 1103 EQUINOXa and RADESYSa if not present in the FITS header. 1104 1105 1106WCSLIB version 4.24 (2014/09/19) 1107---------------------------------- 1108 1109* C library 1110 1111 - Changed API to wcscompare() to allow a tolerance to be specified for 1112 floating-point comparisons. Contributed by Michael Droettboom. 1113 1114* Fortran wrappers 1115 1116 Track the change to wcscompare(). 1117 1118* User manual 1119 1120 - Documentation generation moved to doxygen 1.8.8 (was 1.8.4). 1121 1122 - Added mention of WCSLIB in "homebrew-science" (MacOSX) in the 1123 section on other packages. 1124 1125 1126WCSLIB version 4.23 (2014/05/11) 1127-------------------------------- 1128 1129* C library 1130 1131 - New function wcscompare() compares two wcsprm structs for equality 1132 with varying degrees of strictness. Test program twcscompare. 1133 Contributed by Michael Droettboom. 1134 1135 - In wcssub(), fixed a bug uncovered by valgrind arising from 1136 allocation of insufficient memory for temporaries when a new axis 1137 is added. Reported by Michael Droettboom. 1138 1139 - In wcshdo(), don't write RESTFRQ or RESTWAV if zero. 1140 1141 Also, to distinguish them from integer keyvalues, floating- 1142 point values will now always be written with an exponent or 1143 fractional part, ".0" being appended if necessary to achieve this. 1144 Suggested by Peter Weilbacher. 1145 1146 - Fixed the '-h' option in twcshdr. 1147 1148* Fortran wrappers 1149 1150 - Wrapper for wcscompare(). 1151 1152 1153WCSLIB version 4.22 (2014/04/13) 1154-------------------------------- 1155 1156* C library 1157 1158 - In pcox2s() and pcos2x(), use alternative projection equations for 1159 greater numerical precision near theta == 0. In cops2x(), return 1160 an exact result for theta at the poles. Relaxed the tolerance for 1161 bounds checking a little in sflx2s(). 1162 1163 1164WCSLIB version 4.21 (2014/03/24) 1165-------------------------------- 1166 1167* C library 1168 1169 - New function prjbchk() performs bounds checking on native spherical 1170 coordinates. It is invoked automatically by the deprojection (x2s) 1171 routines if prjprm::bounds&4 is set. Documented the new bounds 1172 checking implemented by prjbchk() in the prologue entry for 1173 wcsbchk(). Improvements to tprj1 to test the vector API of prjx2s() 1174 and to deal better with out-of-bounds native coordinates returned by 1175 it. 1176 1177 - Bug fixes in the projection routines: in hpxx2s() relating to bounds 1178 checking, bug introduced at 4.20, reported by Michael Droettboom; in 1179 parx2s() and molx2s() relating to setting the stat vector; in 1180 hpxx2s() relating to implementation of the vector API; and in 1181 xphx2s() relating to setting an out-of-bounds value of phi. 1182 1183* Fortran wrappers 1184 1185 - Wrapper for prjbchk(). Modified tprj1.f to track changes to the C 1186 version. 1187 1188 1189WCSLIB version 4.20 (2013/12/18) 1190-------------------------------- 1191 1192* C library 1193 1194 - New function, wcsbchk(), for controlling bounds checking in the 1195 projection routines. 1196 1197 - Enable bounds checking in the pixel-to-sky (x2s) direction for HPX 1198 and XPH if prjprm::bounds&2. Tightened bounds checking in xphx2s(). 1199 prjini() now sets prjprm::bounds = 3 to enable all bounds checking 1200 by default. 1201 1202 - Fixed an incorrect error message in wcs_units(). Also report 1203 potentially unsafe units translations in unitfix() - both 1204 contributed by Michael Droettboom. 1205 1206* Fortran wrappers 1207 1208 - Wrapper for wcsbchk(). 1209 1210* PGSBOX 1211 1212 - Fixed a few nuisance warnings from gfortran 4.7.2 relating to 1213 implicit type conversions in pgsbox.f. 1214 1215* User manual 1216 1217 - Added mention of wcsjs (Javascript) in the section on other 1218 packages. 1219 1220 1221WCSLIB version 4.19 (2013/09/30) 1222-------------------------------- 1223 1224* C library 1225 1226 - Bug fix in wcshdo(), uncovered by cppcheck and reported by David 1227 Binderman. Fixed additional minor inconsistencies in hpxx2s(), 1228 wcsprintf(), and wcsfprintf() reported by cppcheck. 1229 1230 - Minor fix to twcstab reported by cppcheck. 1231 1232 - Bug fix in wcssub() for handling (non-standard) PROJPn keywords 1233 (uncovered by valgrind, reported by Paul Price). 1234 1235 1236WCSLIB version 4.18 (2013/07/13) 1237-------------------------------- 1238 1239* C library 1240 1241 - Implemented the butterfly projection (XPH), being the polar form of 1242 the HEALPix projection with (H,K) = (4,3). Augmented tprj1.c and 1243 tprj2.c to suit. 1244 1245 - Bug fix in celfix() when translating GLS to SFL with non-zero 1246 reference point. 1247 1248* Fortran wrappers 1249 1250 - Wrappers for the XPH projection functions and corresponding 1251 modifications to the test programs. 1252 1253 - Fixed a few inconsequential warnings from gfortran 4.7.2 relating 1254 to implicit type conversions in the test programs. 1255 1256* Utilities 1257 1258 - In HPXcvt, fixed incorrect axis scaling (CDELT1 and CDELT2) in the 1259 XPH header, and set the PCi_ja matrix in the HPX header to a pure 1260 45 degree rotation with appropriate adjustment of CDELT1 and CDELT2 1261 (matching XPH). Also set LONPOLE to 180 degree in the XPH header 1262 with adjustment of CRVAL1 as recommended in the errata. These 1263 changes prompted by Paddy Leahy. Also, modified the FITS header 1264 comment for XPH - it is no longer "experimental", and accept the 1265 '-x' option (i.e. without qualification) as equivalent to '-xn'. 1266 1267* User manual 1268 1269 - Documentation generation moved to doxygen 1.8.4 (was 1.5.6). 1270 1271 1272WCSLIB version 4.17 (2013/01/29) 1273-------------------------------- 1274 1275* C library 1276 1277 - Added wcsfprintf() to wcsprint.h. Now used in wcsbth() and wcspih() 1278 to allow diagnostic output to be redirected. Changes provided by 1279 Michael Droettboom. 1280 1281 1282WCSLIB version 4.16 (2012/11/07) 1283-------------------------------- 1284 1285* C library 1286 1287 - When wcspih() constructs a default coordinate representation it will 1288 give it the special name "DEFAULTS", and will not report "Found one 1289 coordinate representation" (if reporting is enabled). 1290 1291* Utilities 1292 1293 - wcsware has a new option, -P, which does the same as -p except that 1294 it won't print a wcsprm struct with the name "DEFAULTS". 1295 1296 1297WCSLIB version 4.15 (2012/09/26) 1298-------------------------------- 1299 1300* C library 1301 1302 - Bug fixes in spctype(), spcspxe(), spcxpse, and spctrne() for 1303 propagating an error status correctly from lower-level routines. 1304 Amendments to the prologues of these routines. Reported by 1305 Hans Terlouw. 1306 1307 - Similarly for wcsunitse(), wcsulexe(), and wcsutrne(). 1308 1309* PGSBOX 1310 1311 - Bug fix in PGSBOX for handling cycles in angle when both world 1312 coordinate elements are angular. Reported by Thomas Robitaille. 1313 1314 1315WCSLIB version 4.14 (2012/07/13) 1316-------------------------------- 1317 1318* C library 1319 1320 - Problems were caused for fitshdr(), wcsbth(), wcspih(), wcsulex(), 1321 datfix() and wcshdo(), by locales such as "fr_FR" in which commas 1322 are used to delimit the decimal part of floating point numbers. 1323 In particular, these locales adversely affect the behaviour of 1324 sscanf() and sprintf() when reading and writing FITS header 1325 keyvalues. Thread-safe fixes provided by Michael Droettboom. 1326 1327 - Applied astropy patches from Michael Droettboom: attend to compiler 1328 warnings in prj.c, spc.c, tab.c, and wcsutil.c, including those for 1329 MS-Windows. 1330 1331 1332WCSLIB version 4.13.4 (2012/04/02) 1333---------------------------------- 1334 1335* Installation 1336 1337 - Relaxed the closure tolerance slightly in tlog.f as for tlog.c 1338 previously. 1339 1340 1341WCSLIB version 4.13.3 (2012/03/26) 1342---------------------------------- 1343 1344* Installation 1345 1346 - Relaxed the closure tolerance slightly in tlog.c for gcc 4.6.3 on 1347 Ubuntu 12.04 (reported by Ole Streicher). 1348 1349 1350WCSLIB version 4.13.2 (2012/03/21) 1351---------------------------------- 1352 1353* Installation 1354 1355 - Changes to configure.ac and the GNUmakefiles to put '-lm' strictly 1356 in the correct sequence when producing the sharable library 1357 (reported by Ole Streicher). 1358 1359 1360WCSLIB version 4.13.1 (2012/03/15) 1361---------------------------------- 1362 1363* C library 1364 1365 - Workaround in wcserr_set() for an unfortunate compiler segv from 1366 gcc 4.2.1 in MacOSX 10.7. 1367 1368 1369WCSLIB version 4.13 (2012/03/14) 1370-------------------------------- 1371 1372* C library 1373 1374 - Allow naxis == 0 in wcsini() and linini() for a degenerate 1375 coordinate system as may be produced by wcssub(). In wcssub(), 1376 ensure that wcsini() is called for coordinate systems with 1377 naxis == 0. In wcssptr(), call spcfree() before spcini() to plug a 1378 memory leak. 1379 1380 1381WCSLIB version 4.12 (2012/02/29) 1382-------------------------------- 1383 1384* C library 1385 1386 - In spctrne(), guard against restfrq == restwav == 0.0 when 1387 translating between two velocity-characteristic types, or between 1388 two wave-characteristic types (the translation is independent of 1389 restfrq and restwav, but a dummy value is needed for intermediate 1390 calculations). 1391 1392 1393WCSLIB version 4.11 (2012/02/21) 1394-------------------------------- 1395 1396* C library 1397 1398 - Bug fix in spcset() for handling simple linear spectral axes. 1399 1400* Fortran wrappers 1401 1402 - Bug fix in spctrne_() for handling ctypeS2. 1403 1404 1405WCSLIB version 4.10 (2012/02/06) 1406-------------------------------- 1407 1408* C library 1409 1410 - datfix() and spcfix() now return informative messages when dates and 1411 AIPS-convention spectral axes are translated (changes contributed by 1412 Michael Droettboom). spcaips() now returns an error status for 1413 invalid values of VELREF. 1414 1415 - wcssub() has been augmented with the ability to add new axes onto a 1416 wcsprm struct. 1417 1418 1419WCSLIB version 4.9 (2012/01/24) 1420------------------------------- 1421 1422* C library 1423 1424 - Fixes to wcsfixi() for collecting the messages properly in the info 1425 array (from Michael Droettboom). 1426 1427 - Handle certain malformed date strings more gracefully in datfix(). 1428 1429 - Make informative messages printed by wcserr_prt() a bit more 1430 informative. 1431 1432 1433WCSLIB version 4.8.4 (2011/12/05) 1434--------------------------------- 1435 1436* C library 1437 1438 - Fixed the pseudo-random number generator in twcstab.c - gcc 4.6 with 1439 '-O2' baulked at testing for signed integer overflow. 1440 1441* Installation 1442 1443 - In configure.ac, the Fortran compiler's libraries must be added to 1444 the link list when checking for the PGPLOT libraries since gcc is 1445 driving the linker. Likewise in C/GNUmakefile when linking test 1446 programs that use PGPLOT. 1447 1448 - Use 'make CHECK=nopgplot check' to run only the non-graphical tests 1449 (even if PGPLOT is available). 1450 1451 - After compiling and running the tests, 'make check' now summarizes 1452 the non-graphical test results and stops if any failed. 1453 1454 1455WCSLIB version 4.8.3 (2011/11/17) 1456--------------------------------- 1457 1458* C library 1459 1460 - Minor generalization of the wcserr diagnostics to allow the return 1461 of informative messages, which are associated with negative status 1462 values. wcserr_prt() will now recognize and print them as such. 1463 Added wcserr_clear() to reset (clear) a wcserr struct. 1464 1465 - Modified unitfix() to return an informative message if a units 1466 alias is applied, and wcsfixi() to allow such messages to be 1467 propagated through the info array (from Michael Droettboom). 1468 1469 - Modified twcsfix.c to use wcserr diagnostics, in particular to 1470 report units alias translations. 1471 1472* Fortran wrappers 1473 1474 - In wcsfix_(), interpret *naxis == 0 as meaning naxis == 0x0, thus 1475 causing cylfix() to be skipped. 1476 1477 - Modified twcsfix.f to reflect changes made to twcsfix.c. 1478 1479 1480WCSLIB version 4.8.2 (2011/10/04) 1481--------------------------------- 1482 1483* Installation 1484 1485 - Changes for Debian package generation contributed by Ole Streicher: 1486 - Corrections to 'configure' reported by 'lintian'. 1487 - Generate man pages for the utility programs and install them. 1488 1489 1490WCSLIB version 4.8.1 (2011/09/19) 1491--------------------------------- 1492 1493* Installation 1494 1495 - Set SONAME in the sharable library in accordance with 1496 tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html 1497 (reported by Ole Streicher, Debian package maintainer). The 1498 sharable library will again be installed with full release number 1499 and with a symbolic link from SONAME pointing to it. If defined, 1500 SHRLN will point to SONAME. 1501 1502 1503WCSLIB version 4.8 (2011/08/15) 1504------------------------------- 1505 1506* C library 1507 1508 - New error diagnostics mechanism contributed by Michael Droettboom: 1509 1510 Most functions that return a numeric status (error) code now also 1511 write a detailed error message to a wcserr struct attached to the 1512 passed-in *prm struct. See wcserr.h for more information. 1513 1514 Functions that didn't have a *prm struct as an argument have no 1515 direct way to return an error message. Therefore, these functions 1516 now have duplicate versions with the suffix "e" that take an 1517 additional "struct wcserr *" parameter. These functions are: 1518 1519 spcspx() -> spcspxe() 1520 spctrn() -> spctrne() 1521 spctyp() -> spctype() 1522 spcxps() -> spcxpse() 1523 wcsulex() -> wcsulexe() 1524 wcsunits() -> wcsunitse() 1525 wcsutrn() -> wcsutrne() 1526 1527 A new function wcsfixi() was added which is identical to wcsfix() 1528 but in addition stores all of the detailed textual messages about 1529 the fixes that were performed. 1530 1531 - In wcssub(), ensure that wcstab->m_tab has been initialized 1532 before trying to free it on status return 12 or 13 (reported by 1533 Hans Terlow). 1534 1535 - Bug fixes: 1536 - In sphx2s() and sphs2x() for the case where |eul[1]| = 180.0. 1537 - For parsing AIPS-convention VELREF in wcsbth(). 1538 - In spcaips() for translating AIPS-convention CTYPEia without 1539 Doppler frame. 1540 1541 - Non-graphical test programs now simply report "PASS" if they satisfy 1542 the reporting tolerance for closure residuals, etc. Their full 1543 output is reported otherwise. Run 'make MODE=interactive check' to 1544 revert to the previous behaviour of reporting the full output for 1545 tests that succeed. 1546 1547 - Eliminated compiler warnings about type-punning of pointer-to- 1548 function. 1549 1550* Fortran wrappers 1551 1552 Extensive modifications to track the new error handling mechanism 1553 in the C library. 1554 1555* Installation 1556 1557 - configure now prefers gfortran over g77 if available. 1558 1559 - Don't rely on "." being in the PATH if config.status needs to be 1560 run in the pgsbox and utils makefile (reported by Peter Teuben). 1561 1562 1563WCSLIB version 4.7 (2011/02/07) 1564------------------------------- 1565 1566* C library 1567 1568 - Bug fix in celset() for interpreting LATPOLEa when LONPOLEa = phi0. 1569 Crept in at version 4.4. 1570 1571 - Fixed the bounds test on y in hpxx2s() (HEALPix projection) for 1572 unconventional values of H and K. In hpxx2s() and hpxs2x(), 1573 corrected the offset of the southern polar half-facets for 1574 even K. In hpxs2x(), put the phi = 180 meridian in the expected 1575 place. 1576 1577 - Bug fixes in tabx2s() and tabs2x() for default indexes (reported 1578 by David Berry). In tabs2x(), if no solution is found then do 1579 minor extrapolation past the ends of each row (1-D case only). 1580 Sped up tabs2x() by about 50%. 1581 1582 - New functions wcsprintf(), wcsprintf_set(), and wcsprintf_buf(), 1583 declared in wcsprintf.h, provide control over the disposition of 1584 output from celprt(), linprt(), prjprt(), spcprt(), tabprt(), and 1585 wcsprt() routines. Prompted by Michael Droettboom, with an initial 1586 implementation. 1587 1588* Fortran wrappers 1589 1590 - In the various test programs, used EQUIVALENCEs to ensure that the 1591 CEL, LIN, PRJ, etc. arrays are aligned on a DOUBLE PRECISION 1592 boundary. 1593 1594* PGSBOX 1595 1596 - Bug fix for the case where NG1 == 0 and GRID1(0) < 0, and likewise 1597 for NG2 and GRID2. 1598 1599* Utilities 1600 1601 - In wcsware, added a '-w' option to convert world coordinates 1602 obtained from stdin to pixel coordinates using wcss2p(). Allow 1603 multiple sets of input coordinates with the '-x' and '-w' options 1604 and report the value of the intermediate world coordinates. 1605 1606* User manual 1607 1608 - Fixed list formatting for function return values < 0 or > 9. 1609 1610 - New section for wcsprintf() and related routines. 1611 1612* Installation 1613 1614 - Changes prompted by S�bastien Fabbro for the Gentoo Linux package: 1615 a) autoconf updates, 1616 b) respect LDFLAGS when building the shared library, 1617 c) install documentation, 1618 d) recognise DESTDIR for doing a staged installation. 1619 1620 - As of this release, the minor WCSLIB version number (second field) 1621 will be incremented if and only if a change is made that affects the 1622 library itself, not the documentation or utilities. The version 1623 number on the installed libraries and header files will omit the 1624 patch number (third field). 1625 1626 1627WCSLIB version 4.6.3 (2010/11/24) 1628--------------------------------- 1629 1630* C library 1631 1632 - Bug fix in wcsbth() for handling the inheritance of image header 1633 keywords (uncovered by valgrind, reported by Jim Lewis). 1634 1635 1636WCSLIB version 4.6.2 (2010/11/22) 1637--------------------------------- 1638 1639* C library 1640 1641 - Fixed a memory leak in wcsbth.l (reported by Jim Lewis). 1642 1643 1644WCSLIB version 4.6.1 (2010/11/18) 1645--------------------------------- 1646 1647* Fortran wrappers 1648 1649 - Fixed typos in cel_f.c, celget[cdi] -> celgt[cdi]. 1650 1651 1652WCSLIB version 4.6 (2010/11/16) 1653------------------------------- 1654 1655* C library 1656 1657 - In wcsulex.l and wcsutrn.l, stdlib.h must be included explicitly 1658 before the redefinition of exit() - most versions of flex do include 1659 it upfront but some don't (reported by Peter Williams). 1660 1661* Fortran wrappers 1662 1663 - Changes intended to avert nuisance compiler warnings that could 1664 potentially obscure warnings indicative of a genuine problem: 1665 1666 - To stop messages about unused variables when the relevant compiler 1667 option is set, e.g. 'g77 -Wunused', the various *_ERRMSG arrays 1668 defined in the Fortran include files and (formerly) initialized 1669 therein via DATA statements, e.g. PRJ_ERRMSG in prj.inc, have now 1670 been placed into COMMON blocks with names such as PRJ_DATA, and 1671 are initialized via DATA statements in BLOCK DATA subprograms 1672 defined in separate files, e.g. prj_data.f. 1673 1674 - To stop messages about subroutines being invoked with inconsistent 1675 argument lists if the relevant compiler option is not set, e.g. 1676 'g77 -Wno-globals', the C wrapper functions that take 'void *' 1677 arguments now have separate forms for INTEGER, DOUBLE PRECISION, 1678 and CHARACTER arguments that simply invoke the generic function. 1679 Application code must be modified to take advantage of this. 1680 1681* User manual 1682 1683 - In the section on the Fortran wrappers in the manual, warn about the 1684 need for the INTEGER array holding a data structure to be aligned on 1685 a DOUBLE PRECISION boundary. 1686 1687 1688WCSLIB version 4.5.6 (2010/10/28) 1689--------------------------------- 1690 1691* Installation 1692 1693 - Fixed the search for CFITSIO and PGPLOT library and include 1694 directories. 1695 1696 1697WCSLIB version 4.5.5 (2010/10/14) 1698--------------------------------- 1699 1700* Installation 1701 1702 - Build the PGSBOX sharable library. 1703 1704 1705WCSLIB version 4.5.4 (2010/09/28) 1706--------------------------------- 1707 1708* C library 1709 1710 - In wcshdo(), according to the FITS standard, "Letters in the 1711 exponential form ('E' or 'D') shall be upper case" (reported by 1712 Michael Droettboom). 1713 1714 1715WCSLIB version 4.5.3 (2010/09/23) 1716--------------------------------- 1717 1718* Utilities 1719 1720 - Various improvements to wcsgrid: correct the scaling set via 1721 cpgwnad(); label angles other than RA,Dec in decimal degrees; 1722 draw the projection boundary for projections other than zenithals. 1723 1724 1725WCSLIB version 4.5.2 (2010/09/23) 1726--------------------------------- 1727 1728* C library 1729 1730 - Fixed the translation of GLS to SFL in wcsset() and celfix() when 1731 the reference longitude is non-zero - it introduces an offset in 1732 longitude in the normal way. (This undoes part of the change 1733 applied in version 4.4.) 1734 1735 1736WCSLIB version 4.5.1 (2010/08/12) 1737--------------------------------- 1738 1739* C library 1740 1741 - New utility function, sphpad(), computes the coordinates of points 1742 offset by given angular distances and position angles from a given 1743 point on the sky (complementary to sphdpa()). 1744 1745* Fortran wrappers 1746 1747 - New wrapper function: 1748 - SPHPAD for sphpad(). 1749 1750 1751WCSLIB version 4.5 (2010/07/16) 1752------------------------------- 1753 1754* C library 1755 1756 - Fixed the interpretation of VELREF when translating AIPS-convention 1757 spectral types. Such translation is now handled by a new special- 1758 purpose function, spcaips(). The wcsprm struct has been augmented 1759 with an entry for velref which is filled by wcspih() and wcsbth(). 1760 Previously, selection by VELREF of the radio or optical velocity 1761 convention for type VELO was not properly handled. 1762 1763* Fortran wrappers 1764 1765 - New wrapper function: 1766 - SPCAIPS for spcaips(). 1767 1768 - Changed spc.inc, spc_f.c, wcs.inc and wcs_f.c to track VELREF 1769 changes. 1770 1771 - Declared functions external in the include files to avoid compiler 1772 warnings about unused variables (if the particular option is set). 1773 1774* Utilities 1775 1776 - Added a '-q' option to fitshdr to quit after a specified number 1777 of HDUs. 1778 1779 1780WCSLIB version 4.4.4 (2009/09/14) 1781--------------------------------- 1782 1783* Installation 1784 1785 - Added more configure options for controlling the build: 1786 --disable-fortran, --disable-utils, --without-cfitsio, and 1787 --without-pgplot. 1788 1789 1790WCSLIB version 4.4.3 (2009/09/03) 1791--------------------------------- 1792 1793* C library 1794 1795 - Set wave number units to "/m" in spctyp(), was "1/m" which is not 1796 strictly legal and wasn't handled by wcsulex() (reported by 1797 Hans Terlow). Also fixed a number of units specifications in the 1798 prologue of spx.h to conform with Paper I usage. 1799 1800 - In wcsulex(), allow unit strings like "1/m" in addition to "/m", 1801 provided that the superfluous "1" is the first non-blank character 1802 in the expression, or parenthesised sub-expression. 1803 1804 - In wcssptr(), ensure that i is always reset if given < 0. 1805 1806* User manual 1807 1808 - Augmented the list of FITS WCS and related software in the manual. 1809 1810 1811WCSLIB version 4.4.2 (2009/08/13) 1812--------------------------------- 1813 1814* C library 1815 1816 - In sphx2s() and sphs2x(), handle the case where |eul[1]| = 180.0 1817 separately for speed and accuracy. This change also fixes a rare 1818 and subtle bug in cels2x() that occurs when celprm::isolat is set 1819 and the magnitude of the first latitude in the lat[] vector exceeds 1820 90 deg (reported by Hans Terlouw). 1821 1822* Installation 1823 1824 - Fix relating to creation of symlinks when installing the libraries. 1825 1826 1827WCSLIB version 4.4.1 (2009/08/11) 1828--------------------------------- 1829 1830* Installation 1831 1832 - Fixes for installation of the CHANGES file and for the creation of a 1833 symbolic link for the sharable library if one already exists. 1834 1835 1836WCSLIB version 4.4 (2009/08/10) 1837------------------------------- 1838 1839* C library 1840 1841 - Creation of WCSLIB user manual from the header file prologues using 1842 a special-purpose parser, doxextr, and sed scripts to generate input 1843 for doxygen. This required minor formatting changes to all 1844 prologues plus miscellaneous changes such as naming of arguments in 1845 function prototypes. 1846 1847 - Bug fix in wcsset() that affected handling of PROJPn (deprecated) 1848 and PVi_ma attached to the longitude (not latitude) axis. Guard 1849 against long strings when copying the projection code. In 1850 wcs_types(), allow for early Paper IV distortion codes (e.g. 1851 "RA---TAN-SIP") when parsing CTYPEia. 1852 1853 - Use sincos() whereever possible for a ~15% speedup (patches for 1854 cel.c, prj.c and sph.c supplied by Michael Droettboom). configure 1855 checks for, and uses it automatically if available. 1856 1857 - Fixed the translation of GLS to SFL in wcsset() and celfix() when 1858 the reference longitude and latitude are non-zero. (In the AIPS 1859 convention, this simply translates the reference point, i.e. the map 1860 as a whole, to those coordinates without creating an oblique grid.) 1861 1862 - Bug fix in prjoff(), a utility function used by the prj routines. 1863 It forces (x,y) = (0,0) at (phi_0,theta_0) when the latter are set 1864 by PVi_[012]a attached to the longitude (not latitude) axis. Rarely 1865 used in practice. 1866 1867 - New utility function, sphdpa(), computes the distance and position 1868 angle from a point on the sphere to a set of field points. 1869 1870 - In sphx2s() and sphx2s(), handle a simple change in origin of 1871 longitude using a short-cut calculation for speed and accuracy. 1872 Similarly in celset(), check whether phip == phi0 when computing 1873 latp and if so use a short-cut that ensures latp == 90.0 (exactly) 1874 if lat0 == theta0. The resulting spherical rotation then becomes a 1875 simple change in origin of longitude. In particular, these changes 1876 should assist PGSBOX in drawing grid lines of +/-180 longitude, to 1877 prevent flip-flopping between one and the other. 1878 1879 - wcsbth() & wcspih(): resolved an inconsistency between the 1880 documentation and code by renamimg WCSHDR_VSOURCEa as 1881 WCSHDR_VSOURCE. 1882 1883 - Flex code: moved declaration of helper functions out of global 1884 scope. 1885 1886 - Fixed the call to wcss2p() in twcshdr (in a section of code not 1887 usually exercised). 1888 1889* Fortran wrappers 1890 1891 - New wrapper functions: 1892 - WCSBTH for wcsbth(), 1893 - WCSBDX for wcsbdx(), 1894 - CDFIX for cdfix(), 1895 - SPHDPA for sphdpa(). 1896 1897 - Updated WCSLEN (in wcs.inc) and added WCS_COLAX and WCS_VELANGL to 1898 match changes to wcsprm made in v4.3 with corresponding changes to 1899 the wrapper functions. Likewise updated TABLEN (in tab.inc) for 1900 changes to tabprm, and added CEL_LATPREQ for celprm. 1901 1902 - Struct lengths (WCSLEN, PRJLEN, etc.) are now long enough to 1903 accomodate 64-bit machines. 1904 1905 - Updated the flag bits for the RELAX argument in wcshdr.inc to 1906 reflect changes to wcshdr.h made in v4.3. Renamed WCSHDR_VSOURCEa 1907 to WCSHDR_VSOURCE for consistency with the C library. 1908 1909* PGSBOX 1910 1911 - Improved grid labelling, particularly in minimizing the number of 1912 fields required in sexagesimal labels. 1913 1914* Utilities 1915 1916 - New utility program: 1917 1918 - wcsware extracts the WCS keywords for an image from the specified 1919 FITS file, constructs wcsprm structs for each coordinate 1920 representation found, and performs a variety of operations using 1921 them. 1922 1923 - Old utility programs (first appeared in 4.3 but were not recorded): 1924 1925 - HPXcvt reorganises HEALPix data into a 2-D FITS image with HPX 1926 coordinate system. 1927 1928 - wcsgrid extracts the WCS keywords for an image from the specified 1929 FITS file and uses pgsbox() to plot a 2-D coordinate graticule for 1930 each alternate representation found. 1931 1932 - fitshdr lists headers from a FITS file specified on the command 1933 line, or else on stdin, printing them as 80-character keyrecords 1934 without trailing blanks. 1935 1936* Installation 1937 1938 - New configure options, --with-pgplotinc, --with-pgplotlib, 1939 --with-cfitsioinc and --with-cfitsiolib allow additional directories 1940 to be added to the library and include file search path. 1941 1942 - Miscellaneous fixes and improvements to the installation process. 1943 1944 - Generate a metadata file for pkg-config. 1945 1946 - Added 'make MODE=interactive check' to run the test programs in 1947 interactive mode rather than batch. 1948 1949 - Merged the separate CHANGES files for C, Fortran and PGSBOX into 1950 one (this), with a new section for utilities. 1951 1952 1953WCSLIB version 4.3.3 (2009/04/30) 1954--------------------------------- 1955 1956* C library 1957 1958 - fitshdr.l, wcsbth.l, and wcspih.l: use setjmp/longjmp to preempt 1959 the call to exit() which is hard-coded in function yy_fatal_error() 1960 supplied by flex. 1961 1962 - wcspih.l: if NAXIS is non-zero but there were no WCS keywords at 1963 all in the header then create a default WCS with blank alternate 1964 version. 1965 1966 1967WCSLIB version 4.3.2 (2009/03/16) 1968--------------------------------- 1969 1970* C library 1971 1972 - utils/GNUmakefile: create BINDIR if necessary prior to installing 1973 utilities. 1974 1975 1976WCSLIB version 4.3.1 (2008/09/08) 1977--------------------------------- 1978 1979* Installation 1980 1981 - Top-level GNUmakefile: install header files. 1982 1983 1984WCSLIB version 4.3 (2007/12/27) 1985------------------------------- 1986 1987* C library 1988 1989 - A new general WCS header parser wcsbth() handles binary table image 1990 arrays and pixel lists as well as image array headers. Added 1991 "colax" to the wcsprm struct to record the column numbers for each 1992 axis in a pixel list. 1993 1994 - New function wcsbdx() is the analog of wcsidx() for the array of 1995 wcsprm structs returned by wcsbth(). 1996 1997 - New function wcshdo() writes out a wcsprm struct as a FITS header. 1998 1999 - Changes to wcspih(): 2000 - Bug fix, check for a == 0 (indication of a keyword that applies 2001 to all alternates) in internal helper function wcspih_naxes() 2002 (reported by Craig Markwardt). 2003 - Added a new ctrl option to remove valid WCS keyrecords except for 2004 those with a more general role, namely {DATE,MJD}-{OBS,AVG} and 2005 OBSGEO-{X,Y,Z} (suggested by Jim Lewis). 2006 - Added a rule for VELANGLa. Also added "velangl" to the wcsprm 2007 struct. 2008 - Do checks on the i, k & m keyword parameters in <VALUE>. 2009 - Fixed the test for repeated blanks in the NAXIS and WCSAXES 2010 patterns. 2011 - Fixed three <CCi_ma> rules to allow m == 0. 2012 - Reworked the implementation notes in the prologue. 2013 2014 - The flex scanners, fitshdr.l, wcsbth.l, wcspih.l, wcsulex.l, and 2015 wcsutrn.l, invoke yylex_destroy() before returning to avoid a 16kiB 2016 memory leak. This was reported by several people, however it may be 2017 problematic depending on the version of flex used - version 2.5.9 or 2018 later is required. If this is not available, C sources pre- 2019 generated by flex 2.5.33 will be used. 2020 2021 - In wcs.c, don't define the signbit macro if already defined (for 2022 MacOSX). 2023 2024 - In wcs.h, documented wtbarr namespace issues in C++. 2025 2026 - In wcsset(), always set wcsprm.cunit[i], if possible (primarily for 2027 use by wcshdo()). 2028 2029 - In wcsfix.c, parenthesised a boolean expression that was otherwise 2030 incorrect. 2031 2032 - Fixed an obscure floating point rounding error in celset() that 2033 appeared with -O2 optimization in gcc v3.3.5 (Linux). 2034 2035 - prjset() now correctly propagates the status value returned by the 2036 specific projection-setting functions (reported by Bill Pence). 2037 2038 - Bug fix in hpxx2s(), also added bounds checking. Minor efficiencies 2039 in carx2s() and merx2s(). 2040 2041 - In the various functions that print the contents of the structs, use 2042 the "%p" printf conversion specifier to print addresses rather than 2043 casting the pointer to int and using "#x". The latter does not work 2044 on 64-bit machines where sizeof(int) != sizeof(void*). 2045 2046 - Reorganized the various structs to get alignment on 64-bit machines. 2047 2048 - All header file prologues now reference the README file for an 2049 overview of the library. 2050 2051 - Miscellaneous portability fixes for 64-bit, MacOSX, OSF compiler, 2052 etc. 2053 2054 - Elimination of compiler warnings, e.g. parenthesised assignments 2055 used as truth values (a favourite gcc gripe!), etc. 2056 2057 - Process flex descriptions using a newer version of flex, primarily 2058 for MacOSX. However, the processed files are now only used when 2059 flex 2.5.9 or later is not available. 2060 2061 - Removed WCSLIB 2.x backwards-compatibility measures from lin.h, 2062 prj.h, prj.c, and sph.h. 2063 2064* Fortran wrappers 2065 2066 - (No substantive changes.) 2067 2068* PGSBOX 2069 2070 - Miscellaneous improvements to PGSBOX. 2071 2072* General 2073 2074 - Switched licensing to LGPL 3.0. 2075 2076 - In comment text, replaced use of the obsolete term "card" with 2077 "keyrecord" which consists of a "keyword", "keyvalue", and 2078 "keycomment". 2079 2080* Installation 2081 2082 - General improvements to the installation process: autoconf-related 2083 portability improvements, particularly relating to Fortran name 2084 mangling; makefile rules for building the shared library, for 2085 processing flex descriptions; don't rely on "." being in the PATH 2086 when running tests. 2087 2088 2089WCSLIB version 4.2 (2005/09/23) 2090------------------------------- 2091 2092* C library 2093 2094 - Brought the installation process under control of GNU autoconf, 2095 the top-level makefile now builds and tests everything, and the C 2096 library has a config.h in which WCS_INT64 is set. Added an INSTALL 2097 file. 2098 2099 - Merged the FORTRAN, C and PGSBOX READMEs into one top-level README. 2100 2101 - Extensions for -TAB coordinate handling: in tabx2s() and tabs2x(), 2102 allow extrapolation by half a cell at either end of the index and 2103 coordinate tables; fits_read_wcstab() (in getwcstab.{h,c}) allows 2104 TDIMn to be omitted for 1-D lookup tables for which it has the form 2105 '(1,K)', i.e. describing a degenerate 2-D array; wcsprt() now prints 2106 the wtbarr structs in wcsprm. 2107 2108 - Bug fixes for -TAB coordinate handling: in tabx2s() and tabs2x() 2109 the incorrect indexing variable, m instead of i, was used for 2110 tab->crval[]; wcsp2s() and wcss2p() returned prematurely in the 2111 tabular coordinate loop; in wcstab(), removed an extraneous 2112 assignment to wtbp->kind for index arrays. 2113 2114 - In wcsp2s() and wcss2p(), elements of the stat[] vector that had 2115 been set were being reset incorrectly to zero. The stat[] values 2116 are now set as flag bits for each coordinate element. 2117 2118 - Added cdfix() to the wcsfix() suite to fix erroneously omitted 2119 CDi_ja cards. 2120 2121 - PGSBOX is now compiled into a separate object library, and is 2122 installed alongside WCSLIB. 2123 2124 - Eliminated several instances of non-ANSI C library functions and 2125 header files and some residual K&R C usage. The Sun C compiler 2126 complained about const int definitions of initializers used in 2127 variable declarations in some of the test programs; changed these 2128 to preprocessor macros. 2129 2130* Fortran wrappers 2131 2132 - Fixed handling of 64-bit integer keyvalues in keyget_(). 2133 2134 - Fixed output formatting of 64-bit integer keyvalues in tfitshdr.f. 2135 2136 - Fixed minor syntax errors in twcsfix.f and tpih1.f reported by the 2137 Sun Fortran compiler. 2138 2139 - The output of each test program now identifies the source file. 2140 2141* PGSBOX 2142 2143 - (No substantive changes.) 2144 2145 2146WCSLIB version 4.1 (2005/08/31) 2147------------------------------- 2148 2149* C library 2150 2151 Summary of added functionality: 2152 2153 - -TAB coordinate axes are now fully implemented in the WCSLIB driver 2154 functions (in wcs.{h,c}); multiple -TAB axes are supported. A new 2155 function, wcstab(), which is automatically invoked by wcspih(), 2156 parses -TAB-related header cards and sets up structs for a separate 2157 routine that reads the necessary arrays from a FITS binary table 2158 extension. 2159 2160 An implementation of this routine in CFITSIO, fits_read_wcstab(), 2161 is provided. Note however that the interface of this function is 2162 experimental, and the code itself must be considered beta-release in 2163 WCSLIB 4.1. 2164 2165 - Units specifications, either from CNAMEia or inline comments (with 2166 brackets), of arbitrary complexity are now fully implemented via a 2167 parser, wcsulex(), and converter, wcsunits(). This is invoked 2168 automatically by wcsset(). 2169 2170 - Translators for non-standard WCS constructs are provided. These 2171 cover date formats, units specifications, defunct celestial 2172 projection types, AIPS spectral axis types, and the repair of 2173 malformed cylindrical coordinate systems. 2174 2175 - wcspih() now has options to remove the WCS cards it has processed 2176 from the header and a new generic FITS header parser, fitshdr(), may 2177 be used to parse the remaining non-WCS cards. In addition to the 2178 more basic types, it handles 64-bit and 'very long' (70 digit) 2179 integer keyvalues, and also continued string keyvalues. It also 2180 does keyword matching and extracts units specifications in inline 2181 comments. 2182 2183 - -LOG coordinates are now implemented independently of spectral 2184 coordinate types. Multiple -LOG axes are supported. 2185 2186 - New function wcssptr() translates the spectral axis in a wcsprm 2187 struct to the required type. 2188 2189 - The README file now gives an introduction to, and complete overview 2190 of, WCSLIB. It provides a point of entry to programming with 2191 WCSLIB. Complete descriptions and usage notes for all functions are 2192 contained in the header files. 2193 2194 - The FORTRAN wrappers and test programs are now completely up-to-date 2195 with respect to the C implementation. 2196 2197 - All code, including the FORTRAN wrappers, PGSBOX, and all test 2198 programs, now pass 'purify' without memory leaks, uninitialized 2199 memory reads, memory access violations, or other memory faults. 2200 2201 Change notes: 2202 2203 - Added options to wcspih() to remove WCS cards from the input header 2204 leaving only non-WCS cards behind. Modified test programs tpih1.c 2205 and tpih2.c to use CFITSIO optionally via preprocessor macro 2206 DO_CFITSIO. 2207 2208 - New function wcstab() in wcshdr.{h,c} parses -TAB-related header 2209 cards and sets up structs for a separate routine that reads the 2210 necessary arrays from a FITS binary table extension. New 2211 test/demo program twcstab.c using header defined in wcstab.cards. 2212 2213 - CFITSIO implementation, fits_read_wcstab() in getwcstab.{h,c}, of a 2214 function, independent of WCSLIB, for extracting arrays from a binary 2215 table as required in constructing -TAB coordinates. 2216 2217 - New units specification parser, wcsulex() in wcsunits.h and 2218 wcsulex.l, and converter, wcsunits() in wcsunits.{h,c}. New 2219 test/demo program tunits.c. 2220 2221 - New parser for non-standard units specifications, wcsutrn() in 2222 wcsunits.h and wcsutrn.l, also tested by tunits.c. 2223 2224 - New functions datfix(), unitfix() (which applies wcsutrn()), 2225 celfix(), and spcfix() join cylfix() in wcsfix.{h,c} to translate 2226 various forms of non-standard or quasi-standard FITS WCS keyvalues 2227 in a wcsprm struct. wcsfix() applies all of these in sequence. 2228 New test/demo program twcsfix.c, with wcsfix() also now invoked by 2229 tpih1.c. 2230 2231 - New generic FITS header parser, fitshdr() in fitshdr.{h,l}. New 2232 test/demo program tfitshdr.c uses wcs.cards with extra non-WCS 2233 cards added. 2234 2235 - -LOG coordinates are now treated as a coordinate type separate from 2236 spectral coordinates, implemented via log.{h,c} and test program 2237 tlog.c. The logarithmic functions were removed from spx.{h,c}, and 2238 spc.c. 2239 2240 - Extensive changes to wcs.{h,c} to support multiple -TAB and -LOG 2241 coordinate axes and units conversion. Substantially changed the 2242 test program, twcs.c, to test the more general functionality. 2243 2244 - New function wcssptr() in wcs.{h,c} translates the spectral axis in 2245 a wcsprm struct. 2246 2247 - Added DATE-AVG to wcsprm. Also ntab, tab, nwtb, and wtb required 2248 for -TAB implementation. Define struct wtbarr. 2249 2250 - Added a types[] member to the wcsprm struct to identify axis 2251 coordinate types using a four-digit code. 2252 2253 - Use memset() in wcsini() to null-fill character arrays in the wcsprm 2254 struct so that they don't appear to be padded with garbage when 2255 displayed by gdb. 2256 2257 - Do alias translation for AIPS-convention spectral types in wcsset() 2258 using spctyp(). If wcsset() finds a CTYPEia in "4-3" form with an 2259 unrecognized algorithm code it now returns an error rather than 2260 assume that it's a linear axis. wcsset() now also resets lonpole 2261 and latpole to the values actually used. 2262 2263 - Modified spctyp() to translate AIPS-convention spectral ctypes, and 2264 modified the argument list to return the parsed spectral type and 2265 algorithm code. The return arguments will not be modified if 2266 CTYPEia is not a valid spectral type; zero-pointers may be specified 2267 for any that are not of interest. Removed the external const 2268 variables, spc_codes and spc_ncode, as their function is now 2269 fulfilled by spctyp(). 2270 2271 - Fixed a bug in spctrn() in resolving ctypeS2 wildcarding. 2272 2273 - Added latpreq member to the celprm struct, set by celset() to 2274 indicate how LATPOLE is used. Augmented tcel2.c to report it. 2275 2276 - New function tabmem() in tab.{h,c} takes control of user-allocated 2277 memory. 2278 2279 - tabini() allows K == 0 and also K[m] == 0 to initialize partially 2280 the tabprm struct (for wcstab()). It now does fine-grained 2281 bookkeeping of memory allocation for the index arrays and allocates 2282 each individually. tabprm.index[] == 0x0 is recognized as default 2283 indexing in tabset(), tabx2s() and tabs2x(). 2284 2285 - The *prt() functions report parameters to an extra decimal place. 2286 2287 - tabprt() prints the array index for elements of the coordinate and 2288 index vectors. 2289 2290 - Set the 0th element in all *_errmsg arrays to "Success". 2291 2292 - Extracted string utility functions used by WCSLIB into 2293 wcsutil.{h,c}. 2294 2295 - Removed support for K&R C. 2296 2297* Fortran wrappers 2298 2299 - The FORTRAN wrappers and test programs are now completely up-to-date 2300 with respect to the C implementation. 2301 2302 - New include files, wrappers, and test programs: 2303 fitshdr.inc, fitshdr_f.c, getwcstab.inc, getwcstab_f.c, log.inc, 2304 log_f.c, sph.inc, tab.inc, tab_f.c, tfitshdr.f, tlog.f, ttab1.f, 2305 ttab2.f, ttab3.f, tunits.f, twcsfix.f, twcstab.f, wcsfix.inc, 2306 wcsfix_f.c, wcsunits.inc, wcsunits_f.c. 2307 2308 - Updates to reflect changes to the C library and test programs: 2309 cel.inc, cel_f.c, prj.inc, spc.inc, spc_f.c, spx.inc, spx_f.c, 2310 tlin.f, tpih1.f, tpih2.f, tprj1.f, tprj2.f, tspc.f, tsph.f, tspx.f, 2311 twcs.f, twcsmix.f, twcssub.f, wcs.inc, wcs_f.c, wcshdr.inc, 2312 wcshdr_f.c. 2313 2314 - Added *_ERRMSG arrays containing status messages to all include 2315 files. 2316 2317 - Removed support for K&R C. 2318 2319* PGSBOX 2320 2321 - Fixed a subtle though benign memory fault identified by 'purify'. 2322 2323 - Reset LATPOLE in the COE example in cpgtest.f when drawing the 2324 second (native) grid because it will have been set to a non-default 2325 value by wcsset() when the first grid was drawn; set wcs.flag to -1 2326 before wcsinit() and call wcsfree() at the end. Similarly for 2327 pgtest.f. 2328 2329 2330WCSLIB version 4.0 (2005/02/07) 2331------------------------------- 2332 2333* C library 2334 2335 - Implemented tabular coordinates (-TAB). New files: tab.h and tab.c, 2336 and test programs ttab[123].c. These have not been incorporated 2337 into the higher-level (wcs.h) functions at this stage. 2338 2339 - New spectral functions: spchek() checks a spectral algorithm code 2340 for legitimacy; from the spectral keywords given, spcspx() derives 2341 the corresponding CRVALi and CDELTi keywords for the underlying P-, 2342 and X-type spectral coordinates; spcxps() does the opposite; 2343 spctrn() combines spcspx() and spcxps() to translate one set of 2344 spectral keywords into another, e.g. 'FREQ' -> 'ZOPT-F2W'. 2345 2346 - Implemented the HEALPix (HPX) projection in the prj functions. 2347 2348 - Added a new function, wcsidx(), to return an array that indexes the 2349 alternate coordinate descriptions found by wcspih() (suggested by 2350 Bill Pence, NASA/Goddard). Modified tpih1.c to exercise it. 2351 2352 - In wcsp2s() and wcss2p(), check that nelem equals or exceeds 2353 wcs.naxis; emphasised this in the usage notes for these functions 2354 in tab.h (suggested by Bill Pence, NASA/Goddard). 2355 2356 - Moved the macros used for UNDEFINED values and the corresponding 2357 macro test function, undefined(), to wcsmath.h for general use. 2358 Previously, UNDEFINED values were only used internally, but they are 2359 now visible in some of the structs, particularly values of undefined 2360 auxiliary header cards in the wcsprm struct. 2361 2362 - Remove const from the double args in the specx() prototype in spx.h 2363 to match the definition in spx.c (reported by Bryan Irby, 2364 NASA/Goddard). 2365 2366 - Fixed the interaction between the FLAVOUR and PGPLOTLIB definitions 2367 in the C and FORTRAN Makefiles by introducing a separate variable, 2368 DO_PLOTS, to control whether to exercise test programs that require 2369 PGPLOT (reported by Bill Pence, NASA/Goddard). 2370 2371* Fortran wrappers 2372 2373 - New wrapper defined in wcshdr_f.c: wcsidx_(). Modified test program 2374 tpih1.f to use it. 2375 2376* PGSBOX 2377 2378 - (No substantive changes.) 2379 2380* General 2381 2382 - Changed the copyright notice in all library routines from LGPL to 2383 GPL as recommended by the FSF (http://www.gnu.org/licenses/why-not- 2384 lgpl.html). 2385 2386* Installation 2387 2388 - General improvements to the installation process: fixed the 2389 interaction between the FLAVOUR and PGPLOTLIB definitions in the 2390 Makefile by introducing a separate variable, DO_PLOTS, to control 2391 whether to exercise test programs that require PGPLOT (reported by 2392 Bill Pence, NASA/Goddard). Added an "install" target to the 2393 Makefile. 2394 2395 2396WCSLIB version 3.6 (2004/08/25) 2397------------------------------- 2398 2399* C library 2400 2401 - New service routine, wcssub() extracts the coordinate description 2402 for a subimage from a wcsprm struct. wcscopy() is now implemented 2403 as a preprocessor macro that invokes wcssub(). New test program, 2404 twcssub.c, tests wcssub(). 2405 2406 - In wcspih(): 2407 2408 1) Fixed handling of string-valued keywords where the inline comment 2409 contains a single-quote character ('). 2410 2411 2) Fixed the address arithmetic for EPOCH and VELREF. 2412 2413 3) Translate VSOURCEa into ZSOURCEa if required. 2414 2415 4) Recognize SSYSSRCa. 2416 2417 5) Support free-format string keyvalues, as well as integer and 2418 floating-point keyvalues; documented this in the prologue of 2419 wcshdr.h. 2420 2421 6) Allow header cards without inline comments. 2422 2423 7) Fixed function prototyping in wcspih.l (i.e. ANSI and non-ANSI 2424 forms were potentially mixed). 2425 2426 8) Catch an unhandled newline character on the END card that was 2427 echoed to stdout. 2428 2429 9) In error messages, print "ERROR" (uppercase) - POSIX standard. 2430 2431 - Modified wcs.cards to explain and test free-format keyvalues, and 2432 also augmented the inline comment on illegal WCS cards that are to 2433 be rejected, and WCS-like cards to be discarded. Added a header 2434 card with no inline comment. 2435 2436 - Removed vsource from the wcsprm struct and added ssyssrc. 2437 2438 - In wcsini(), fixed a problem with memory management for wcs.pv when 2439 NPVMAX is zero; likewise for wcs.ps and NPSMAX. 2440 2441 - In wcsprt(), don't print auxiliary coordinate system information in 2442 arrays with zero address. 2443 2444 - In wcss2p(), status == 9 (one or more invalid world coordinates) was 2445 not returned appropriately. 2446 2447 - Renamed twcs1.c to twcs.c, and twcs2.c to twcsmix.c. 2448 2449 - "Error status/code/number" is now referred to consistently as the 2450 "status return value". 2451 2452 - Some vestiges of K&R C were removed: preprocessor definition of 2453 const, and K&R function prototypes. 2454 2455* Fortran wrappers 2456 2457 - New wrapper defined in wcs_f.c: wcssub_(). New test program, 2458 twcssub.f. 2459 2460 - Renamed twcs1.f to twcs.f, and twcs2.f to twcsmix.f. 2461 2462* PGSBOX 2463 2464 - (No substantive changes.) 2465 2466* Installation 2467 2468 - Worked over the C, FORTRAN, and PGSBOX makefiles, in particular to 2469 make them all consistent. 2470 2471 2472WCSLIB version 3.5 (2004/06/28) 2473------------------------------- 2474 2475* C library 2476 2477 - WCSLIB now provides a function, wcspih() implemented as a Flex 2478 description, that parses a FITS image header, either that of a 2479 primary HDU or an image extension. Given a character array 2480 containing the header it identifies and reads all WCS cards for 2481 the primary coordinate description and up to 26 alternate 2482 descriptions and returns this information as an array of wcsprm 2483 structs. A service routine, wcsvfree(), is provided to free the 2484 memory allocated by wcspih(). The relevant header file for these 2485 functions is wcshdr.h. 2486 2487 Test programs, tpih1 and tpih2, are provided to verify wcspih. The 2488 first simply prints the contents of the structs using wcsprt(). The 2489 second uses cpgsbox() to draw coordinate graticules. A FITS WCS 2490 test header has been developed to provide input to these test 2491 programs. It is implemented as a list of card images, wcs.cards, 2492 one card per line, together with a program, tofits, that compiles 2493 these into a valid FITS file. tpih1 uses its own code to read this, 2494 whereas tpih2 uses the fits_hdr2str() function from CFITSIO. 2495 2496 - Removed twcsprt, tpih exercises wcsprt() much more thoroughly than 2497 twcsprt ever did. Modified twcs1 to print the size of the various 2498 structs as twcsprt used to. 2499 2500 - Although they are not used in any coordinate calculations, the 2501 wcsprm struct now provides data members for storing all of the 2502 auxiliary FITS WCS header cards defined in Papers I, II, and III, 2503 such as WCSNAMEa, EQUINOXa, and CNAMEia. Members are also provided 2504 for storing the alternate descriptor code (the "a" in CTYPEia), and 2505 the binary table column number. These are supported by the high 2506 level WCSLIB routines, wcsini(), wcscopy(), wcsfree(), and wcsprt(). 2507 Refer to wcs.h for details. 2508 2509 - The number of PVi_ma cards for which wcsini() allocates memory is 2510 now set by a global variable, NPVMAX (previously a C-preprocessor 2511 macro). This defaults to 64 but may be changed by a new function, 2512 wcsnpv(). The wcsprm struct contains a new member, npvmax, that 2513 records the value of this number at the time the struct was 2514 initialized. This is in addition to npv which records the actual 2515 number of cards that were encountered. 2516 2517 Similarly, NPSMAX (default 8) is used for the number of PSi_ma 2518 cards, and it may be changed via wcsnps(). 2519 2520 The axis number, i, in the pvcard struct used for storing PVi_ma 2521 cards may now be set to 0 to indicate the latitude axis. 2522 2523 - calloc() is now used in place of malloc() in allocating memory for 2524 arrays, and inclusion of malloc.h has been replaced with stdlib.h 2525 for all platforms. 2526 2527 wcsfree() checks that wcs.flag != -1 before testing wcs.m_flag when 2528 freeing memory allocated by wcsini() in case the struct is 2529 uninitialized. Similarly for linfree(). 2530 2531 - In prj.h, renamed C-preprocessor macros INI, PRT, SET, X2S and S2X 2532 to PRJINI, PRJPRT, PRJSET, PRJX2S and PRJS2X to reduce the 2533 likelihood of namespace clashes. Similarly in spc.h. 2534 2535 Also, in prj.c, changed the name of helper routine offset() to 2536 prjoff() to reduce the likelihood of global namespace conflicts. 2537 2538 - In line with bonx2s() and bons2x(), bonset() now recognizes the 2539 equatorial case of Bonne's projection as Sanson-Flamsteed, mainly so 2540 that the auxiliary information in the prjprm struct more accurately 2541 reflects the truth. Modified tcel2 to exercise this by using an 2542 equatorial Bonne projection in place of the Hammer-Aitov. 2543 2544 - zpns2x() used prj.w[0] for bounds checking, though this had not been 2545 set by zpnset() for polynomials of degree N < 3. Consequently, 2546 bounds checking for N < 3 was unreliable (reported by David Berry, 2547 STARLINK). 2548 2549 - Changed some variable names in tscs2x(), cscx2s(), cscs2x(), 2550 qscx2s(), and qscs2x() to match Paper II, and likewise changed some 2551 inequality tests in qscs2x() without changing the results. 2552 2553 - Minor tidying up of output formatting in prjprt(). 2554 2555 - Added the alternate version code to FITS WCS keywords mentioned in 2556 comments, e.g. CTYPEi changed to CTYPEia. 2557 2558* Fortran wrappers 2559 2560 - New wrappers defined in wcshdr_f.c: wcspih_() and wcsvfree_(), and 2561 also a new service function, wcsvcopy_(). 2562 2563 New test programs, TPIH1 and TPIH2, being analogues of tpih1 and 2564 tpih2. Removed TWCSPRT. 2565 2566 - In wcs_f.c, new wrappers wcsnpv_() and wcsnps_(); modified wcsput_() 2567 and wcsget_() to handle new members of the wcsprm struct. Also 2568 modified wcsput_() to null-fill all char[] members of the wcsprm 2569 struct, and likewise wcsget_() to blank-fill them. 2570 2571 - Modified wcs.inc to support changes to the wcsprm struct. 2572 2573* PGSBOX 2574 2575 - In PGSBOX, increased the dimension of the WORLD and XY vectors from 2576 2 to 9 to accomodate higher-dimensional coordinate representations 2577 of up to 9 elements. Similarly for pgwcsl(). The assumption 2578 (presently) is that the first two world, and pixel, coordinate 2579 elements are the relevant ones; the others are all set to zero when 2580 pgwcsl() initializes and otherwise ignored. 2581 2582 Assigned some variables in DATA to stop compiler messages about 2583 uninitialized variables. 2584 2585 - Generalized the Makefile, bringing it into line with the WCSLIB 2586 Makefile, and adding separate targets for compiling and running the 2587 test programs. The default target now simply compiles pgsbox.c and 2588 cpgsbox.c. A separate target compiles pgwcsl.c and inserts it into 2589 ../C/libwcs.a. 2590 2591 2592WCSLIB version 3.4 (2004/02/11) 2593------------------------------- 2594 2595* C library 2596 2597 - In aitx2s(), apply the boundary condition 0.5 <= Z^2 <= 1 given 2598 after Eq. (109) in WCS Paper II to detect outlying pixels. 2599 2600 - Fixed several special-case bugs in celset(): 2601 2602 1) For theta_0 = 90, in substituting the default value for phi_p 2603 (LONPOLE), 2604 2605 a) for the special case when delta_0 = 90, celset() provided the 2606 wrong value (180 instead of 0), 2607 2608 b) celset() neglected to add phi_0 (normally 0). 2609 2610 2) For theta_0 != 90, 2611 2612 a) for the special case when delta_0 = -90, celset() incorrectly 2613 computed delta_p (as theta_0 instead of -theta_0), 2614 2615 b) for the special case when delta_p = +90 (or -90), celset() 2616 neglected to subtract (or add) phi_0 (normally 0). 2617 2618 3) For |delta_0| = 90, celset() incorrectly allowed the particular, 2619 invalid, value of phi_p (LONPOLE) that put the other pole at the 2620 fiducial point. 2621 2622 4) For theta_0 = 0, delta_0 = 0 LATPOLE determines delta_p 2623 completely. For LATPOLE > 90 celset() now sets delta_p to 90, 2624 and for LATPOLE < -90 it sets it to -90. 2625 2626 - Additional refinements in celset(): 2627 2628 1) cel->ref[2] is normalized in the range [-180,180]. 2629 2630 2) Account for rounding error in the computation of delta_p. 2631 2632 - sphx2s() and sphs2x() incorrectly handled the "change in the origin 2633 of longitude" special case that arises when delta_p = -90, in the 2634 even more restrictive case where |theta| = 90 also; it applied 2635 Eq. (3) instead of Eq. (4) of Paper II. 2636 2637 - Added a new test program, tcel2.c, to exercise celset() more 2638 thoroughly. Renamed the original tcel.c to tcel1.c and modified the 2639 Makefile to suit. 2640 2641* Fortran wrappers 2642 2643 - (No changes.) 2644 2645* PGSBOX 2646 2647 - (No substantive changes.) 2648 2649 2650WCSLIB version 3.3 (2003/10/21) 2651------------------------------- 2652 2653* C library 2654 2655 - In celset(), the default value for phi_p (LONPOLE) is 2656 2657 phi_p = phi_0 + ((delta_0 < theta_0) ? 180.0 : 0.0) 2658 2659 Previously phi_0 (which is normally zero) was not added (reported by 2660 David Berry, STARLINK). 2661 2662 - wcsprt() and linprt() now check that the structs have been 2663 initialized. 2664 2665 - In wcsini(), when the wcsprm flag is -1 also set the linprm flag to 2666 -1 to force initialization of the memory managed by linset(). 2667 2668 - wcsset() now explicitly initializes the celprm and spcprm structs 2669 via celini() and spcini(). 2670 2671 - Fixed syntax errors in the macro definitions of linrev_errmsg and 2672 linfwd_errmsg. 2673 2674 - In Makefile, added the -ansi option to gcc to force it to behave 2675 like a strict ANSI C compiler, specifically in setting the __STDC__ 2676 preprocessor macro. 2677 2678* Fortran wrappers 2679 2680 - (No changes.) 2681 2682* PGSBOX 2683 2684 - PGSBOX now recognizes status returns -1, -2, and -3 from NLFUNC for 2685 opcodes +2 and +1 which cause it to accept the returned (x,y) 2686 coordinates but not consider them as one end of a crossing segment 2687 for labelling world coordinate 1, 2, or both. 2688 2689 - PGSBOX now takes care not to lose vertical tick marks (and hence 2690 labels) at the left or right edge of the frame. Likewise for 2691 horizontal tick marks at the top or bottom edge of the frame. 2692 2693 - Tightened up the test in PGSBOX for cycles in angle to catch the 2694 case where the coordinate value spans a full 360 degrees. 2695 2696 - PGSBOX will no longer accept frame crossings that are too oblique; 2697 floating point rounding errors may cause grid lines that should 2698 otherwise track along the frame to weave down it from side-to-side 2699 resulting in spurious crossing points. 2700 2701 - Fixed a bug in pgwcsl_() for processing simple linear coordinates. 2702 2703 - pgwcsl_() now returns error -2 if the latitude is outside -90 to +90 2704 for opcodes +2 and +1. 2705 2706 - Amended the translation of status return codes from WCSLIB in 2707 pgwcsl_(). 2708 2709 - Provided a header file for pgwcsl_() (mainly for C++ usage). 2710 2711 - Added extra test plots to PGTEST and cpgtest. 2712 2713 - Added extra functionality to the Makefile. 2714 2715 2716WCSLIB version 3.2 (2003/09/09) 2717------------------------------- 2718 2719* C library 2720 2721 - Added the facility of setting the flag member of a wcsprm struct to 2722 -1 before calling wcsini() for the first time in order to initialize 2723 memory management. Likewise for linprm and linini(). 2724 2725 - Renamed wcscpy() to wcscopy() to avoid a conflict with the Posix 2726 "wide character string" function of the same name (wchar.h). In 2727 particular, this is used by the GNU C++ string class. 2728 2729 - The higher level functions (wcs, cel, spc) no longer return 2730 prematurely if some of the input coordinate values are invalid. 2731 2732 - All functions now test whether a null pointer for the particular 2733 struct (wcsprm, celprm, etc.) has been passed to them. 2734 2735 - Function return codes have been rationalized into a consistent set 2736 within each of the wcs, cel, lin, prj, spc, and spx suites of 2737 functions. Error messages to match these error codes are now 2738 encoded in a single character array, e.g. wcs_errmsg and prj_errmsg, 2739 instead of a separate array for each function. Macro definitions 2740 for the older character arrays (e.g. wcsini_errmsg) have been 2741 provided for backward compatibility. 2742 2743 - Declared prj_stat as extern in prj.h. 2744 2745* Fortran wrappers 2746 2747 - (No changes.) 2748 2749* PGSBOX 2750 2751 - Added an ENTRY point, PGLBOX, that provides a simplified interface 2752 to PGSBOX for linear axes without having to specify an NLFUNC or the 2753 associated parameters. 2754 2755 2756WCSLIB version 3.1 (2003/04/29) 2757------------------------------- 2758 2759* C library 2760 2761 - Added "global" and "divergent" prjprm struct informational members 2762 to record whether the projection is capable of mapping the whole 2763 sphere, and whether it is divergent in latitude. 2764 2765 - Function cylfix() provided to fix WCS FITS header cards for 2766 malformed cylindrical projections (c.f. Paper II, Sect. 7.3.4). 2767 2768 - Added support for CUNITi cards to wcsprm (but not currently 2769 implemented). 2770 2771 - Added macro implementations of the trigd functions to wcstrig.h, 2772 enabled if WCSTRIG_MACRO is defined. 2773 2774 - Improved printing of the WCSLIB structs. 2775 2776 - Added macro definitions for the lengths of the WCSLIB structs 2777 measured in sizeof(int) units (mainly for the FORTRAN wrappers). 2778 2779* Fortran wrappers 2780 2781 - FORTRAN is now supported via a set of wrappers on the C library. 2782 Refer to the README file. 2783 2784* PGSBOX 2785 2786 2787 2788WCSLIB version 3.0 beta release (2003/04/01) 2789-------------------------------------------- 2790 2791* C library 2792 2793 - Fully vectorized function interfaces (C preprocessor macros are 2794 available to implement the scalar interfaces of the proj.c, sph.c, 2795 and lin.c routines from WCSLIB 2.x). 2796 2797 - Implementation of Paper II, Sect. 2.5: User-specified 2798 (phi0, theta0). 2799 2800 - Implementation of Paper III (excluding "-TAB"). 2801 2802 - Memory management is now implemented in the upper-level (wcs.c) 2803 routines. 2804 2805 - New extensible design should accomodate Paper IV (and any other) 2806 without further change to the function interfaces. 2807 2808* PGSBOX 2809 2810 - Added a C wrapper function, cpgsbox(), and C test/demo program, 2811 cpgtest, that duplicates PGTEST and serves as a C coding template. 2812 2813 - Added calendar date axes. 2814 2815 - Sped up the max/min search - if only tickmarks are required there is 2816 no need to search the interior of the image. 2817 2818 - Return margin widths in CACHE(,NC). 2819 2820 - Fixed a buglet that caused ticks at the frame edges to be skipped. 2821 2822 - Return error 3 if CACHE overflows. 2823 2824 - Adapted PGWCSL for WCSLIB 3.x - it is now a C function (for 2825 interfacing to WCSLIB) with a FORTRAN-like interface (for PGSBOX). 2826 2827 2828WCSLIB version 2.9 (2002/04/03) 2829------------------------------- 2830 2831* C library 2832 2833 - Fixed a bug with alias translation in wcsset(). 2834 2835 - Added a conditional compilation directive to lin.c for Apple's 2836 MacOSX. 2837 2838* Fortran library 2839 2840 - Fixed CUBEFACE handling in WCSSET. 2841 2842 2843WCSLIB version 2.8 (2001/11/16) 2844------------------------------- 2845 2846* C library 2847 2848 - Added support for the SZP projection with szpset(), szpfwd() and 2849 szprev(), and generalized AZP with support for the tilt parameter, 2850 gamma. 2851 2852 - Added phi0 to the prjprm struct, this is set by the projection 2853 initialization routines along with theta0. 2854 2855 - Fixed a problem in wcsmix() caused by numerical imprecision that 2856 could cause it not to recognize when convergence was reached; break 2857 out of the loop early if a discontinuity is detected. 2858 2859 - Clarified the usage of vspan in the prologue to wcsmix(). 2860 2861 - Fixed comments relating to LATPOLE in the prologue to cel.c and 2862 tcel.c, and replaced references to LONGPOLE with LONPOLE. 2863 2864 - Augmented the error reports in twcs2. 2865 2866 - Modified projex() in tproj1 and prjplt() in tproj2 to make use of 2867 the information stored in the prjprm struct. 2868 2869* Fortran library 2870 2871 - Added support for the SZP projection with SZPSET, SZPFWD and SZPREV, 2872 and generalized AZP with support for the tilt parameter, gamma. 2873 2874 - Changed the call sequence to PRJSET to return PHI0 along with 2875 THETA0. 2876 2877 - Fixed a problem in WCSMIX caused by numerical imprecision that could 2878 cause it not to recognize when convergence was reached; break out of 2879 the loop early if a discontinuity is detected. 2880 2881 - Clarified the usage of VSPAN in the prologue to WCSMIX. 2882 2883 - Fixed comments relating to LATPOLE in the prologue to CEL and TCEL, 2884 and replaced references to LONGPOLE with LONPOLE. 2885 2886 - Augmented the error reports in TWCS2. 2887 2888 - Modified PROJEX in TPROJ1 and PRJPLT in TPROJ2 to use the generic 2889 driver routines PRJSET, PRJFWD and PRJREV. PRJPLT also now uses the 2890 projection type encoded in PRJ(11). 2891 2892 2893WCSLIB version 2.7 (2001/02/19) 2894------------------------------- 2895 2896* C library 2897 2898 - Added generic driver routines prjset(), prjfwd() and prjrev(). 2899 These invoke specific projection routines via the pointer-to- 2900 function elements, prjfwd and prjrev, transferred to the prjprm 2901 struct from celprm. 2902 2903 - Added code (3-letter projection code) and theta0 (reference 2904 latitude) elements to prjprm. 2905 2906 - The projection code for the Sanson-Flamsteed projection is now SFL. 2907 The upper-level routines, wcsset(), wcsfwd(), and wcsrev(), 2908 recognize GLS as an alias for this. 2909 2910 - wcsset() now recognizes 'xyLN/xyLT' axis pairs. 2911 2912 - Two bugs in the translation from NCP to SIN in wcsfwd() and wcsrev() 2913 were fixed: (1) the projection parameter was computed incorrectly 2914 and (2) they did not honour prj->flag set to -1 to disable strict 2915 bounds checking. 2916 2917 - A bug in wcsmix() was fixed - it was relying on the wcsprm struct to 2918 have been initialized beforehand. 2919 2920 - The test programs now use the cpgplot interface to PGPLOT, the old 2921 tpgc.c and tpgf.f wrappers have been removed. 2922 2923* Fortran library 2924 2925 - Added generic driver routines PRJSET, PRJFWD and PRJREV. These are 2926 keyed to specific projection routines via the value of PRJ(11) which 2927 now differs for each projection. 2928 2929 - The projection code for the Sanson-Flamsteed projection is now SFL. 2930 The upper-level routines, WCSSET, WCSFWD, and WCSREV, recognize GLS 2931 as an alias for this. 2932 2933 - WCSSET now recognizes 'xyLN/xyLT' axis pairs. 2934 2935 - A bug in the translation from NCP to SIN in WCSFWD and WCSREV was 2936 fixed; they did not honour PRJ(11) set to -1 to disable strict 2937 bounds checking. 2938 2939 - A bug in WCSMIX was fixed - it was relying on the WCS array to have 2940 been initialized beforehand. 2941 2942 2943WCSLIB version 2.6 (2000/05/10) 2944------------------------------- 2945 2946* C library 2947 2948 - Check for invalid (x,y) in zearev(). 2949 2950 - In wcsmath.h, guard against prior definition of PI and other 2951 preprocessor variables. 2952 2953* Fortran library 2954 2955 - Check for invalid (X,Y) in ZEAREV. 2956 2957 - Declare COSD and SIND in WCSFWD and WCSREV, reported by Clive Page 2958 (cgp@star.le.ac.uk). 2959 2960 2961WCSLIB version 2.5 (1999/12/14) 2962------------------------------- 2963 2964* C library 2965 2966 - Added copyright notice to header files and prefixed include guard 2967 names with "WCSLIB_". 2968 2969 - Fixed cube face handling in wcsfwd() and wcsrev() (reported by 2970 Doug Mink, CfA). Allow more general face layout in the inverse 2971 quadcube projections. 2972 2973 - Fixed the problem in wcsmix() where it failed to find a valid 2974 solution when the solution point lay at a native pole of a 2975 projection in which the pole is represented as a finite interval. 2976 However, wcsmix() will only ever return one solution even when two 2977 or more valid solutions may exist. 2978 2979 - wcsmix() now accepts viter in the range 5 - 10, the specified value 2980 will be pushed up or down into this range if necessary. 2981 2982 - The projection routines for AZP, TAN, SIN, ZPN, and COP now return 2983 error 2 if (phi,theta) correspond to the overlapped (far) side of 2984 the projection. This strict bounds checking can be switched off by 2985 setting prj->flag to -1 (rather than 0) when the projections are 2986 initialized. 2987 2988 - The upper level routines, wcsset(), wcsfwd(), wcsrev(), and 2989 wcsmix(), now recognize the NCP projection and convert it to the 2990 equivalent SIN projection. The lower level routines do not 2991 recognize NCP. 2992 2993 - Extracted definitions of mathematical constants (PI etc.) from 2994 proj.h into wcsmath.h in order to avoid conflicts with their 2995 definition in math.h in some systems (such as Linux). 2996 2997 - Describe the two alternate representations of the quadcube 2998 projections (i.e. faces laid out or stacked) in the prologue of 2999 wcs.c. 3000 3001* Fortran library 3002 3003 - Fixed cube face handling in WCSFWD and WCSREV, reported by Doug Mink 3004 (dmink@cfa.harvard.edu). Allow more general face layout in the 3005 inverse quadcube projections. 3006 3007 - Fixed the problem in WCSMIX where it failed to find a valid solution 3008 when the solution point lay at a native pole of a projection in 3009 which the pole is represented as a finite interval. However, WCSMIX 3010 will only ever return one solution even when two or more valid 3011 solutions may exist. 3012 3013 - WCSMIX now accepts VITER in the range 5 - 10, the specified value 3014 will be pushed up or down into this range if necessary. 3015 3016 - The projection routines for AZP, TAN, SIN, ZPN, and COP now return 3017 error 2 if (phi,theta) correspond to the overlapped (far) side of 3018 the projection. This strict bounds checking can be switched off by 3019 setting PRJ(11) to -1 (rather than 0) when the projections are 3020 initialized. 3021 3022 - The upper level routines, WCSSET, WCSFWD, WCSREV, and WCSMIX, now 3023 recognize the NCP projection and convert it to the equivalent SIN 3024 projection. The lower level routines do not recognize NCP. 3025 3026 - Describe the two alternate representations of the quadcube 3027 projections (i.e. faces laid out or stacked) in the prologue of 3028 wcs.f. 3029 3030 3031WCSLIB version 2.4 (1996/09/23) 3032------------------------------- 3033 3034* C library 3035 3036 - In sinrev(), cscrev(), qscrev(), and tscrev(), return error 2 if 3037 (x,y) do not lie within the perimeter of the projection. In 3038 sinrev(), stop the computation of phi for the "synthesis" projection 3039 being applied to the pure "orthographic" case (reported by 3040 David Berry, STARLINK). 3041 3042 - (Internal change) Renamed variables l <-> m in the quadcube 3043 projections to accord with standard usage (and revised WCS draft 3044 paper). 3045 3046* Fortran library 3047 3048 - In SINREV, CSCREV, QSCREV, and TSCREV, return error 2 if (X,Y) do 3049 not lie within the perimeter of the projection. In SINREV, stop the 3050 computation of PHI for the "synthesis" projection being applied to 3051 the pure "orthographic" case. Reported by David Berry 3052 (dsb@ast.man.ac.uk). 3053 3054 - (Internal change) Renamed variables L <-> M in the quadcube 3055 projections to accord with standard usage (and revised WCS draft 3056 paper). 3057 3058 - (Internal change) Stopped PRJ(11) doing double service in any 3059 projection. It is now set and tested for a specific magic value 3060 rather than simply being non-zero. 3061 3062 3063WCSLIB version 2.3 (1996/06/24) 3064------------------------------- 3065 3066* C library 3067 3068 - Fixed two bugs in zpnset(). The first led to an incorrect 3069 determination of the degree of the polynomial and would mainly have 3070 affected the efficiency of zpnrev(). The second affected the 3071 determination of the boundary of the projection but would only have 3072 been significant for projections with a point of inflection between 3073 9 and 10 degrees of the pole. Reported by David Berry, STARLINK. 3074 3075 - Replaced usage of alloca() in lin.c with malloc() and free() for 3076 portability as suggested by Klaus Banse, ESO (kbanse@eso.org). 3077 3078 - Allow for C implementations that provide their own versions of 3079 cosd(), sind(), tand(), acosd(), asind(), atand(), and atan2d(). 3080 From Klaus Banse, ESO (kbanse@eso.org). 3081 3082 - Implemented the CUBEFACE axis for quadcube projections. 3083 3084 - Made all function prototypes const-correct. 3085 3086 - Adapted the header files to C++ usage. 3087 3088 - Added a new test program, twcs1, to verify closure of wcsfwd() and 3089 wcsrev(). The old twcs test program is now called twcs2. 3090 3091 - Added external arrays of error messages indexed by function return 3092 value. For example, extern const char *wcsmix_errmsg[] for 3093 wcsmix(). Messages for the many proj.c functions are in 3094 prjfwd_errmsg[], etc. 3095 3096* Fortran library 3097 3098 - Implemented the CUBEFACE axis for quadcube projections. 3099 3100 - Added a new test program, TWCS1, to verify closure of WCSFWD and 3101 WCSREV. The old TWCS test program is now called TWCS2. 3102 3103 3104WCSLIB version 2.2 (1996/01/18) 3105------------------------------- 3106 3107* C library 3108 3109 - Amended the projection equations for the conics (COP, COD, COE, COO) 3110 and Bonne's projection (BON) to correctly handle southern hemisphere 3111 projections with PROJP1 < 0 (reported by Lindsay Davis, NOAO). 3112 Revised tproj1 and tproj2 to test such cases. 3113 3114* Fortran library 3115 3116 - Amended the projection equations for the conics (COP, COD, COE, COO) 3117 and Bonne's projection (BON) to correctly handle southern hemisphere 3118 projections with PROJP1 < 0 (reported by Lindsay Davis, NOAO). 3119 Revised TPROJ1 and TPROJ2 to test such cases. 3120 3121 - Increased the dimension of the WCS array from WCS(0:2) to WCS(0:3) 3122 to allow for future handling of the CUBEFACE keyword - WCS(3) will 3123 store an index to the CUBEFACE axis. This affects the call 3124 sequences of WCSSET, WCSFWD, WCSREV, and WCSMIX. 3125 3126 3127WCSLIB version 2.1 (1995/11/17) 3128------------------------------- 3129 3130* C library 3131 3132 The main change of interest to programmers is that of changed argument 3133 lists for wcsfwd() and wcsrev() as described below. 3134 3135 - The WCS linear transformations are now implemented in WCSLIB, 3136 complete with matrix inverter. The new files are lin.c, lin.h, and 3137 test program tlin.c. 3138 3139 - Given either the celestial longitude or latitude plus an element of 3140 the pixel coordinate a new routine, wcsmix(), solves for the 3141 remaining elements by iterating on the unknown celestial coordinate 3142 element using wcsfwd(). 3143 3144 - The high level driver routines wcsfwd(), wcsrev(), and wcsmix() now 3145 apply the full WCS algorithm chain (except for pixel regularization 3146 table), including parsing the CTYPEn header cards and computing non- 3147 celestial elements of the world coordinate. This required a change 3148 to their argument lists which now more closely reflect the sequence 3149 of algorithms applied. A new routine, wcsset(), parses the CTYPEn. 3150 3151 - The high level driver routines of WCSLIB 1.0 are available as 3152 intermediate level drivers celset(), celfwd(), and celrev(), but 3153 note that their argument lists have been extended to return native 3154 coordinates. The related struct is now called celprm instead of 3155 wcsprm. 3156 3157 - The reference point for conic projections is now at the midpoint of 3158 the standard parallels. The FITS header cards PROJP1 and PROJP2 now 3159 give the half-sum (midpoint) and half-difference of the latitudes of 3160 the standard parallels; previously they gave the latitudes of the 3161 standard parallels themselves. The change is reflected in this 3162 release of WCSLIB. 3163 3164 - A bug in celset() (formerly wcsset()) that misapplied WCS draft 3165 equations 7 has been fixed (thanks to Rick Ebert IPAC/JPL and 3166 Lindsey Davis, NOAO for reporting this). This affected the 3167 computation of Euler angles for the celestial coordinate 3168 transformation for those projections that have their reference point 3169 away from the native pole. In investigating this a deficiency with 3170 the formalism was discovered that led to the introduction of a 3171 LATPOLE FITS header card which may be used to disambiguate where 3172 CRVAL1, CRVAL2, and LONGPOLE do not uniquely determine the latitude 3173 of the native pole. The celprm struct (formerly wcsprm) has been 3174 extended to accomodate LATPOLE. 3175 3176 - Default values of LONGPOLE and LATPOLE are now supported and their 3177 use is recommended where appropriate. 3178 3179 - Numerical precision was being lost near the native poles in the SIN, 3180 AIR, and QSC projections and this has been recovered (reported by 3181 Lindsey Davis, NOAO). Floating underflows in CSC are now avoided. 3182 3183 - Numerical precision was also lost in certain circumstances in the 3184 spherical coordinate transformation routines and this has been 3185 fixed. 3186 3187 - The test programs have been enhanced in various ways and the library 3188 has been validated on an SGI machine using both 32-bit and 64-bit 3189 compilers. 3190 3191* Fortran library 3192 3193 The main change of interest to programmers is that of changed call 3194 sequences for WCSFWD and WCSREV as described below. 3195 3196 - The WCS linear transformations are now implemented in WCSLIB, 3197 complete with matrix inverter. The new files are lin.f and test 3198 program tlin.f. 3199 3200 - Given either the celestial longitude or latitude plus an element of 3201 the pixel coordinate a new routine, WCSMIX, solves for the remaining 3202 elements by iterating on the unknown celestial coordinate element 3203 using WCSFWD. 3204 3205 - The high level driver routines WCSFWD, WCSREV, and WCSMIX now apply 3206 the full WCS algorithm chain (except for pixel regularization 3207 table), including parsing the CTYPEn header cards and computing non- 3208 celestial elements of the world coordinate. This required a change 3209 to their call sequences which now more closely reflect the sequence 3210 of algorithms applied. A new routine, WCSSET, parses the CTYPEn. 3211 3212 - The high level driver routines of WCSLIB 1.0 are available as 3213 intermediate level drivers CELSET, CELFWD, and CELREV, but note 3214 that their call sequences have been extended to return native 3215 coordinates. The related parameter array is now called CEL instead 3216 of WCS. 3217 3218 - The reference point for conic projections is now at the midpoint of 3219 the standard parallels. The FITS header cards PROJP1 and PROJP2 now 3220 give the half-sum (midpoint) and half-difference of the latitudes of 3221 the standard parallels; previously they gave the latitudes of the 3222 standard parallels themselves. The change is reflected in this 3223 release of WCSLIB. 3224 3225 - A bug in CELSET (formerly WCSSET) that misapplied WCS draft 3226 equations 7 has been fixed (thanks to Rick Ebert IPAC/JPL and 3227 Lindsey Davis, NOAO for reporting this). This affected the 3228 computation of Euler angles for the celestial coordinate 3229 transformation for those projections that have their reference point 3230 away from the native pole. In investigating this a deficiency with 3231 the formalism was discovered that led to the introduction of a 3232 LATPOLE FITS header card which may be used to disambiguate where 3233 CRVAL1, CRVAL2, and LONGPOLE do not uniquely determine the latitude 3234 of the native pole. The CEL parameter array (formerly WCS) has been 3235 extended to accomodate LATPOLE as CEL(4), and the flag variable is 3236 now CEL(5) (formerly WCS(4)). 3237 3238 - Default values of LONGPOLE and LATPOLE are now supported and their 3239 use is recommended where appropriate. 3240 3241 - Numerical precision was being lost near the native poles in the SIN, 3242 AIR, and QSC projections and this has been recovered (reported by 3243 Lindsey Davis, NOAO). Floating underflows in CSC are now avoided. 3244 3245 - Numerical precision was also lost in certain circumstances in the 3246 spherical coordinate transformation routines and this has been 3247 fixed. 3248 3249 - The test programs have been enhanced in various ways and the 3250 library has been validated on an SGI machine using both 32-bit and 3251 64-bit compilers. 3252 3253 3254WCSLIB version 1.0 (1995/01/31) 3255------------------------------- 3256 3257* C library 3258 3259 Initial release. 3260 3261* Fortran library 3262 3263 Initial release. 3264 3265------------------------------------------------------------------------ 3266$Id: CHANGES,v 7.7 2021/07/12 06:36:49 mcalabre Exp $ 3267