1 /*
2 *+
3 *  Name:
4 *     palDrange
5 
6 *  Purpose:
7 *     Normalize angle into range +/- pi
8 
9 *  Language:
10 *     Starlink ANSI C
11 
12 *  Type of Module:
13 *     Library routine
14 
15 *  Invocation:
16 *     palDrange( double angle )
17 
18 *  Arguments:
19 *     angle = double (Given)
20 *        The angle in radians.
21 
22 *  Description:
23 *     The result is "angle" expressed in the range +/- pi. If the
24 *     supplied value for "angle" is equal to +/- pi, it is returned
25 *     unchanged.
26 
27 *  Authors:
28 *     DSB: David S Berry (JAC, Hawaii)
29 *     PTW: Patrick T. Wallace
30 *     {enter_new_authors_here}
31 
32 *  History:
33 *     2012-05-09 (DSB):
34 *        Initial version with documentation taken from Fortran SLA
35 *        Adapted with permission from the Fortran SLALIB library.
36 *     {enter_further_changes_here}
37 
38 *  Copyright:
39 *     Copyright (C) 1995 Rutherford Appleton Laboratory
40 *     Copyright (C) 2012 Science and Technology Facilities Council.
41 *     All Rights Reserved.
42 
43 *  Licence:
44 *     This program is free software: you can redistribute it and/or
45 *     modify it under the terms of the GNU Lesser General Public
46 *     License as published by the Free Software Foundation, either
47 *     version 3 of the License, or (at your option) any later
48 *     version.
49 *
50 *     This program is distributed in the hope that it will be useful,
51 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
52 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
53 *     GNU Lesser General Public License for more details.
54 *
55 *     You should have received a copy of the GNU Lesser General
56 *     License along with this program.  If not, see
57 *     <http://www.gnu.org/licenses/>.
58 
59 *  Bugs:
60 *     {note_any_bugs_here}
61 *-
62 */
63 
64 #include "pal.h"
65 #include "palmac.h"
66 #include <math.h>
67 
palDrange(double angle)68 double palDrange( double angle ){
69    double result = fmod( angle, PAL__D2PI );
70    if( result > PAL__DPI ) {
71       result -= PAL__D2PI;
72    } else if( result < -PAL__DPI ) {
73       result += PAL__D2PI;
74    }
75    return result;
76 }
77 
78