NAME g2gms - convert gradians into gradians, minutes, and seconds SYNOPSIS g2gms(grads, g, m, s [,rnd]) TYPES grads real g null-or-real-valued lvalue with assign-to permission m null-or-real-valued lvalue with assign-to permission s null-or-real-valued lvalue with assign-to permission rnd nonnegative integer, defaults to config("mod") return mod(grads, 400, rnd) DESCRIPTION Convert grads gradians into g gradians, m minutes, and s seconds. The return value is a normalized number of gradians, and is equivalent to the following: return_value = mod(grads, 400, rnd); The argument rnd, if not given, defaults to config("mod"). For more information on the effects of rnd, see "help mod". Depending on the rounding mode, the return could be a real value in the interval [0, 400) or a real value in the interval (-400, 0]. For the default round mode, the return value is in the interval [0, 400). The g argument will be an integer number of gradians. The value g will be set as if the following were used: g = int(return_value); For some rounding modes, g will be an integer in the interval [0, 400). For other rounding modes, g will be an integer in the interval (-400, 0]. For the default round mode, g is in the interval [0, 400). The m argument will be an integer number of minutes. The value m will be set as if the following were used: tmp = return_value - g; tmp_m = tmp * 60; free(tmp); m = int(tmp_m); For some rounding modes, m will be an integer in the interval [0, 60). For other rounding modes, m will be an integer in the interval (-60, 0]. For the default round mode, m will be in the interval [0, 60). The s argument will be a real number of seconds. The value s will be set as if the following were used: tmp = tmp_m - m; free(tmp_m); s = tmp * 60; free(tmp); For some rounding modes, s will be a real value in the interval [0, 60). For other rounding modes, s will be a real value in the interval (-60, 0]. For the default round mode, s will be in the interval [0, 60). The following shows relationship between the return value and the resulting g, m, and s values: return_value == g + m/60 + s/3600; EXAMPLE /* if args are undefined, pre-declare them or assign them as args */ ; global g, m, s; ; print g2gms(12.3456,g,m,s), g, m, s; 12.3456 12 20 44.16 ; print g2gms(1234.5678,g,m,s), g, m, s; 34.5678 34 34 4.08 ; print g2gms(-1234.5678,g,m,s), g, m, s; 365.4322 365 25 55.92 ; print g2gms(654.321,grad=,min=,sec=), grad, min, sec; 254.321 254 19 15.6 ; print g2gms(-654.321,grad=,min=,sec=), grad, min, sec; 145.679 145 40 44.4 ; print g2gms(400.321,grad=,min=,sec=), grad, min, sec; 0.321 0 19 15.6 /* certain non-default rounding modes can return negative values */ ; print g2gms(654.321,grad=,min=,sec=,1), grad, min, sec; -145.679 -145 -40 -44.4 ; print g2gms(-654.321,grad=,min=,sec=,1), grad, min, sec; -254.321 -254 -19 -15.6 ; print g2gms(400.321,grad=,min=,sec=,1), grad, min, sec; -399.679 -399 -40 -44.4 LIMITS none LINK LIBRARY none SEE ALSO config, d2dm, d2dms, dm2d, dms2d, g2gm, gm2g, gms2g, h2hm, h2hms, hm2d, hms2d, mod ## Copyright (C) 2021 Landon Curt Noll ## ## Calc is open software; you can redistribute it and/or modify it under ## the terms of the version 2.1 of the GNU Lesser General Public License ## as published by the Free Software Foundation. ## ## Calc is distributed in the hope that it will be useful, but WITHOUT ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General ## Public License for more details. ## ## A copy of version 2.1 of the GNU Lesser General Public License is ## distributed with calc under the filename COPYING-LGPL. You should have ## received a copy with calc; if not, write to Free Software Foundation, Inc. ## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ## ## Under source code control: 2021/09/25 17:24:51 ## File existed as early as: 2021 ## ## chongo /\oo/\ http://www.isthe.com/chongo/ ## Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/