libSUFR
a LIBrary of Some Useful Fortran Routines
All Classes Namespaces Files Functions Variables Pages
angle2string.f90
Go to the documentation of this file.
1!> \file angle2string.f90 Procedures to convert angles to formatted text strings
2
3
4! Copyright (c) 2002-2025 Marc van der Sluys - Nikhef/Utrecht University - marc.vandersluys.nl
5!
6! This file is part of the libSUFR package,
7! see: http://libsufr.sourceforge.net/
8!
9! This is free software: you can redistribute it and/or modify it under the terms of the European Union
10! Public Licence 1.2 (EUPL 1.2). This software is distributed in the hope that it will be useful, but
11! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12! PURPOSE. See the EU Public Licence for more details. You should have received a copy of the European
13! Union Public Licence along with this code. If not, see <https://www.eupl.eu/1.2/en/>.
14!
15!
16
17
18!Angles:
19! dms: Returns angle as ddd.mm.ss string in dms, input in rad
20! dmss: Print angle as a ddd.mm.ss.ss string, input in rad
21! dms2: Print angle as a ddd.mm.ss string, input in rad, output between -180 and +180 (11)
22! ddms2: Print angle as dd.mm.ss string, input in rad, output between -99 and +99 !!!
23! d1ms2: Print angle as d.mm.ss string, input in rad, output between -9 and +9 !!!
24! dmss2: Print angle as ddd.mm.ss.ss string, input in rad, output between -180 and +180
25! dm: Print angle as ddd:mm string, input in rad
26! dm2: Print angle as ddd.mm string, input in rad, output between -180 and +180
27! dmm2: Print angle as dd.mm string, input in rad, output between -99 and +99 !!!
28! dmmm2: Print angle as dd:mm.m string, input in rad, output between -99 and +99 !!! (9)
29! ddd2: Print angle as dd.d string, input in rad, output between -99.9 and +99.9 !!!
30
31! wdms: Print angle as ddd.mm.ss string, input in rad with &deg;, &rsquo; and &rdquo; (26)
32! wdms2: Print angle as dms string, input in rad, output between -180 and +180
33! with &deg;, &rsquo; and &rdquo; (27)
34! wddms2: Print angle as dms string, input in rad, output between -99 and +99 with &deg; (26)
35! wd1ms2: Print angle as d.mm.ss string, input in rad, output between -9 and +9 -
36! HTML version of d1ms2 (25)
37! wdm: Print angle as ddd:mm string, input in rad with &deg; rather than d (17)
38! wdm2: Print angle as ddd.mm string, input in rad, output between -180 and +180
39! with &deg; rather than d (18)
40! wdmm2: Print angle as dd.mm string, input in rad, output between -99 and +99 !!!
41! with &deg; rather than d (17)
42! wdmmm2: Print angle as dd:mm.m string, input in rad, output between -99 and +99 !!!
43! with &deg; rather than d (19)
44! wddd2: Print angle as dd.d string, HTML version of ddd2() (10)
45
46! ams: Print angle as mm'ss.s" string, input in rad (8)
47! ams2: Print angle as +-mm'ss.s" string, input in rad (9)
48! amss: Print angle as mm'ss.ss" string, input in rad (9)
49! ass: Print angle as ss.s string, input in rad (5)
50
51! wams: Print angle as mm'ss.s" string, input in rad; HTML version of ams() (20)
52! wams2: Print angle as +-mm'ss.s" string, input in rad - html version of ams2() (21)
53! wamss: Print angle as mm'ss.ss" string, input in rad - html version of amss (21)
54! wass: Print angle as a string of ss.s", input in rad - HTML version of ass() (11)
55
56
57
58
59!***********************************************************************************************************************************
60!> \brief Procedures to convert angles to formatted text strings
61
63 implicit none
64 save
65
66contains
67
68 !*********************************************************************************************************************************
69 !> \brief Print separation angle (>0) as ddd.mm or mm.ss string, input in rad
70 !!
71 !! \param angle Angle (rad)
72 !! \retval prs Separation angle (>0) as ddd.mm or mm.ss string
73
74 pure function prs(angle)
75 use sufr_kinds, only: double
76 use sufr_angles, only: rev
77 use sufr_constants, only: r2d
78
79 implicit none
80 real(double), intent(in) :: angle
81 real(double) :: a
82 integer :: d,m,s
83 character :: prs*(7),mm*(2),ss*(2),ddd*(3)
84
85 a = angle
86 a = rev(a)*r2d
87 d = int(a)
88 m = int((a-d)*60.d0)
89 s = nint((a-d-m/60.d0)*3600.d0)
90
91 if(s.eq.60) then
92 m = m+1
93 s = 0
94 end if
95 if(m.eq.60) then
96 d = d+1
97 m = 0
98 end if
99
100 write(ddd,'(I3.3)') d
101 write(mm,'(I2.2)') m
102 write(ss,'(I2.2)') s
103
104 if(d.gt.0) write(prs,'(A3,A1,A2,A1)') ddd,'d',mm,"'"
105 if(d.eq.0) write(prs,'(A3,A1,A2,A1)') mm,"'",ss,'"'
106
107 end function prs
108 !*********************************************************************************************************************************
109
110
111 !*********************************************************************************************************************************
112 !> \brief Print angle as ddd.mm.ss string, input in rad - See wdms() for HTML version
113 !!
114 !! \param angle Angle (rad)
115 !! \retval dms Angle as ddd.mm.ss string
116
117 pure function dms(angle)
118 use sufr_kinds, only: double
119 use sufr_angles, only: rev
120 use sufr_constants, only: r2d
121
122 implicit none
123 real(double), intent(in) :: angle
124 real(double) :: a
125 integer :: d,m,s
126 character :: dms*(10),mm*(2),ss*(2),ddd*(3)
127
128 a = angle
129 a = rev(a)*r2d
130 d = int(a)
131 m = int((a-d)*60.d0)
132 s = nint((a-d-m/60.d0)*3600.d0)
133
134 if(s.eq.60) then
135 m = m+1
136 s = 0
137 end if
138 if(m.eq.60) then
139 d = d+1
140 m = 0
141 end if
142
143 write(ddd,'(I3.3)') d
144 write(mm,'(I2.2)') m
145 write(ss,'(I2.2)') s
146
147 write(dms,'(A3,2(A1,A2),A1)') ddd,'d',mm,"'",ss,'"'
148
149 end function dms
150 !*********************************************************************************************************************************
151
152
153 !*********************************************************************************************************************************
154 !> \brief Print angle as a ddd.mm.ss.ss string, input in rad
155 !!
156 !! \param angle Angle (rad)
157 !! \retval dmss Angle as a ddd.mm.ss.ss string
158
159 pure function dmss(angle)
160 use sufr_kinds, only: double
161 use sufr_angles, only: rev
162 use sufr_constants, only: r2d
163
164 implicit none
165 real(double), intent(in) :: angle
166 real(double) :: a,s
167 integer :: d,m
168 character :: dmss*(13),mm*(2),ss*(5),ddd*(3)
169
170 a = angle
171 a = rev(a)*r2d
172 d = int(a)
173 m = int((a-d)*60.d0)
174 s = (a-d-m/60.d0)*3600.d0
175
176 if(s.ge.59.995d0) then
177 m = m+1
178 s = 0.d0
179 end if
180 if(m.eq.60) then
181 d = d+1
182 m = 0
183 end if
184
185 write(ddd,'(I3.3)') d
186 write(mm,'(I2.2)') m
187 write(ss,'(F5.2)') s
188 if(s.lt.10) write(ss,'(A1,F4.2)') '0',s
189
190 write(dmss,'(A3,A1,A2,A1,A5,A1)') ddd,'d',mm,"'",ss,'"'
191
192 end function dmss
193 !*********************************************************************************************************************************
194
195
196 !*********************************************************************************************************************************
197 !> \brief Print angle as dms string, input in rad, output between -180 and +180 - See wdms2() for HTML version
198 !!
199 !! \param angle Angle (rad)
200 !! \retval dms2 Angle as dms string
201
202 pure function dms2(angle)
203 use sufr_kinds, only: double
204 use sufr_angles, only: rev2
205 use sufr_constants, only: r2d
206
207 implicit none
208 real(double), intent(in) :: angle
209 real(double) :: a
210 integer :: d,m,s
211 character :: dms2*(11),mm*(2),ss*(2),ddd*(4),sig
212
213 a = angle
214 a = rev2(a)*r2d
215
216 sig = '+'
217 if(a.lt.0.d0) then
218 sig = '-'
219 a = -1.d0*a
220 end if
221
222 d = int(a)
223 m = int((a-d)*60.d0)
224 s = nint((a-d-m/60.d0)*3600.d0)
225
226 if(s.eq.60) then
227 m = m+1
228 s = 0
229 end if
230 if(m.eq.60) then
231 d = d+1
232 m = 0
233 end if
234
235 write(ddd,'(A1,I3.3)') sig,d
236 write(mm,'(I2.2)') m
237 write(ss,'(I2.2)') s
238 write(dms2,'(A4,2(A1,A2),A1)') ddd,'d',mm,"'",ss,'"'
239
240 end function dms2
241 !*********************************************************************************************************************************
242
243
244 !*********************************************************************************************************************************
245 !> \brief Print angle as dd.mm.ss string, input in rad, output between -99 and +99 - See wddms2() for HTML version
246 !!
247 !! \param angle Angle (rad)
248 !! \retval ddms2 Angle as dd.mm.ss string
249
250 pure function ddms2(angle)
251 use sufr_kinds, only: double
252 use sufr_angles, only: rev2
253 use sufr_constants, only: r2d
254
255 implicit none
256 real(double), intent(in) :: angle
257 real(double) :: a
258 integer :: d,m,s
259 character :: ddms2*(10),sig!,mm*(2),ss*(2),dd*(4)
260
261 a = angle
262 a = rev2(a)*r2d
263
264 sig = '+'
265 if(a.lt.0.d0) then
266 sig = '-'
267 a = -1.d0*a
268 end if
269
270 d = int(a)
271 m = int((a-d)*60.d0)
272 s = nint((a-d-m/60.d0)*3600.d0)
273
274 if(s.eq.60) then
275 m = m+1
276 s = 0
277 end if
278 if(m.eq.60) then
279 d = d+1
280 m = 0
281 end if
282
283 write(ddms2,'(A1,I2.2,2(A1,I2.2),A1)') sig,d,'d',m,"'",s,'"'
284
285 end function ddms2
286 !*********************************************************************************************************************************
287
288
289 !*********************************************************************************************************************************
290 !> \brief Print angle as d.mm.ss string, input in rad, output between -9 and +9 !!!
291 !!
292 !! \param angle Angle (rad)
293 !! \retval d1ms2 Angle as d.mm.ss string
294
295 pure function d1ms2(angle)
296 use sufr_kinds, only: double
297 use sufr_angles, only: rev2
298 use sufr_constants, only: r2d
299
300 implicit none
301 real(double), intent(in) :: angle
302 real(double) :: a
303 integer :: d,m,s
304 character :: d1ms2*(9),sig
305
306 a = angle
307 a = rev2(a)*r2d
308
309 sig = '+'
310 if(a.lt.0.d0) then
311 sig = '-'
312 a = -1.d0*a
313 end if
314
315 d = int(a)
316 m = int((a-d)*60.d0)
317 s = nint((a-d-m/60.d0)*3600.d0)
318
319 if(s.eq.60) then
320 m = m+1
321 s = 0
322 end if
323 if(m.eq.60) then
324 d = d+1
325 m = 0
326 end if
327
328 write(d1ms2,'(A1,I1.1,2(A1,I2.2),A1)') sig,d,'d',m,"'",s,'"'
329
330 end function d1ms2
331 !*********************************************************************************************************************************
332
333
334 !*********************************************************************************************************************************
335 !> \brief Print angle as dms.ss string, input in rad, output between -180 and +180
336 !!
337 !! \param angle Angle (rad)
338 !! \param noSymbols Do not print symbols (d,',") - use spaces instead; default: false (do use symbols)
339 !! \retval dmss2 Angle as ddd:mm string
340
341 pure function dmss2(angle, noSymbols)
342 use sufr_kinds, only: double
343 use sufr_angles, only: rev2
344 use sufr_constants, only: r2d
345
346 implicit none
347 real(double), intent(in) :: angle
348 logical, intent(in), optional :: nosymbols
349 real(double) :: a,s
350 integer :: d,m
351 character :: dmss2*(14),mm*(2),ss*(5),ddd*(4),sig
352 logical :: usesymbols
353
354 a = angle
355 a = rev2(a)*r2d
356
357 sig = '+'
358 if(a.lt.0.d0) then
359 sig = '-'
360 a = -1.d0*a
361 end if
362
363 d = int(a)
364 m = int((a-d)*60.d0)
365 s = (a-d-m/60.d0)*3600.d0
366
367 if(s.ge.59.995d0) then
368 m = m+1
369 s = 0
370 end if
371 if(m.eq.60) then
372 d = d+1
373 m = 0
374 end if
375
376 write(ddd,'(A1,I3.3)') sig,d
377 write(mm,'(I2.2)') m
378 write(ss,'(F5.2)') s
379 if(s.lt.10) write(ss,'(A1,F4.2)') '0',s
380
381 usesymbols = .true.
382 if(present(nosymbols)) usesymbols = .not. nosymbols
383
384 if(usesymbols) then
385 write(dmss2,'(A4,A1,A2,A1,A5,A1)') ddd,'d',mm,"'",ss,'"'
386 else
387 write(dmss2,'(A4,A1,A2,A1,A5,A1)') ddd,' ',mm,' ',ss,' '
388 end if
389
390 end function dmss2
391 !*********************************************************************************************************************************
392
393
394 !*********************************************************************************************************************************
395 !> \brief Print angle as ddd:mm string, input in rad
396 !!
397 !! \param angle Angle (rad)
398 !! \retval dm Angle as ddd:mm string
399
400 pure function dm(angle)
401 use sufr_kinds, only: double
402 use sufr_angles, only: rev
403 use sufr_constants, only: r2d
404
405 implicit none
406 real(double), intent(in) :: angle
407 real(double) :: a
408 integer :: d,m
409 character :: dm*(7),mm*(2),ddd*(3)
410
411 a = angle
412 a = rev(a)*r2d
413 d = int(a)
414 m = nint((a-d)*60.d0)
415
416 if(m.eq.60) then
417 d = d+1
418 m = 0
419 end if
420
421 write(ddd,'(I3)') d
422 write(mm,'(I2.2)') m
423 !if(m.lt.10) write(mm,'(A1,I1)') '0',m
424 write(dm,'(A3,A1,A2,A1)') ddd,'d',mm,"'"
425
426 end function dm
427 !*********************************************************************************************************************************
428
429
430 !*********************************************************************************************************************************
431 !> \brief Print angle as ddd.mm string, input in rad, output between -180 and +180
432 !!
433 !! \param angle Angle (rad)
434 !! \retval dm2 Angle as ddd.mm string
435
436 pure function dm2(angle)
437 use sufr_kinds, only: double
438 use sufr_angles, only: rev2
439 use sufr_constants, only: r2d
440
441 implicit none
442 real(double), intent(in) :: angle
443 real(double) :: a
444 integer :: d,m
445 character :: dm2*(8),mm*(2),ddd*(4),sig
446
447 a = angle
448 a = rev2(a)*r2d
449 sig = '+'
450 if(a.lt.0.d0) then
451 sig = '-'
452 a = -1.d0*a
453 end if
454
455 d = int(a)
456 m = nint((a-d)*60.d0)
457 if(m.eq.60) then
458 d = d+1
459 m = 0
460 end if
461
462 write(ddd,'(A1,I3.3)') sig,d
463 write(mm,'(I2.2)') m
464 write(dm2,'(A4,A1,A2,A1)') ddd,'d',mm,"'"
465
466 end function dm2
467 !*********************************************************************************************************************************
468
469
470
471 !*********************************************************************************************************************************
472 !> \brief Print angle as dd.mm string, input in rad, output between -99 and +99 !!!
473 !!
474 !! \param angle Angle (rad)
475 !! \retval dmm2 Angle as dd.mm string
476
477 pure function dmm2(angle)
478 use sufr_kinds, only: double
479 use sufr_angles, only: rev2
480 use sufr_constants, only: r2d
481
482 implicit none
483 real(double), intent(in) :: angle
484 real(double) :: a
485 integer :: d,m
486 character :: dmm2*(7),mm*(2),dd*(3),sig
487
488 a = angle
489 a = rev2(a)*r2d
490 sig = '+'
491 if(a.lt.0.d0) then
492 sig = '-'
493 a = -1.d0*a
494 end if
495
496 d = int(a)
497 m = nint((a-d)*60.d0)
498 if(m.eq.60) then
499 d = d+1
500 m = 0
501 end if
502
503 write(dd,'(A1,I2.2)') sig,d
504 write(mm,'(I2.2)') m
505 write(dmm2,'(A3,A1,A2,A1)') dd,'d',mm,"'"
506
507 end function dmm2
508 !*********************************************************************************************************************************
509
510
511
512 !*********************************************************************************************************************************
513 !> \brief Print angle as dd:mm.m string, input in rad, output between -99 and +99 !!!
514 !!
515 !! \param angle Angle (rad)
516 !! \retval dmmm2 Angle as dd:mm.m string
517
518 pure function dmmm2(angle)
519 use sufr_kinds, only: double
520 use sufr_angles, only: rev2
521 use sufr_constants, only: r2d
522
523 implicit none
524 real(double), intent(in) :: angle
525 real(double) :: a,m
526 integer :: d
527 character :: dmmm2*(9),mm*(4),dd*(3),sig
528
529 a = angle
530 a = rev2(a)*r2d
531 sig = '+'
532 if(a.lt.0.d0) then
533 sig = '-'
534 a = -1.d0*a
535 end if
536
537 d = int(a)
538 m = (a-d)*60.d0
539 if(m.ge.59.95d0) then
540 d = d+1
541 m = abs(m-60d0)
542 end if
543
544 write(dd,'(A1,I2.2)') sig,d
545 write(mm,'(F4.1)') m
546 if(m.lt.9.95d0) write(mm,'(I1,F3.1)') 0,m
547 write(dmmm2,'(A3,A1,A4,A1)') dd,'d',mm,"'"
548
549 end function dmmm2
550 !*********************************************************************************************************************************
551
552
553
554 !*********************************************************************************************************************************
555 !> \brief Print angle as dd:mm.mmm string (for gps), input in rad, output between -180 and +180 !!!
556 !!
557 !! \param angle Angle (rad)
558 !! \param noSymbols Do not print symbols (d,',") - use spaces instead; default: false (do use symbols)
559 !! \retval dmmmmm2 Angle as dd.d string
560
561 pure function dmmmmm2(angle, noSymbols)
562 use sufr_kinds, only: double
563 use sufr_constants, only: r2d
564 use sufr_angles, only: rev2
565
566 implicit none
567 real(double), intent(in) :: angle
568 logical, intent(in), optional :: nosymbols
569 real(double) :: a,m
570 integer :: d
571 character :: dmmmmm2*(12),mm*(6),dd*(4),sig
572 logical :: usesymbols
573
574 a = angle
575 a = rev2(a)*r2d
576 sig = '+'
577 if(a.lt.0.d0) then
578 sig = '-'
579 a = -1.d0*a
580 end if
581
582 d = int(a)
583 m = (a-d)*60.d0
584 if(m.ge.59.95d0) then
585 d = d+1
586 m = abs(m-60d0)
587 end if
588
589 write(dd,'(A1,I3.3)') sig,d
590 write(mm,'(F6.3)') m
591 if(m.lt.9.9995d0) write(mm,'(I1,F5.3)') 0,m
592
593 usesymbols = .true.
594 if(present(nosymbols)) usesymbols = .not. nosymbols
595
596 if(usesymbols) then
597 write(dmmmmm2,'(A4,A1,A6,A1)') dd,'d',mm,"'"
598 else
599 write(dmmmmm2,'(A4,A1,A6,A1)') dd,' ',mm,' '
600 end if
601
602 end function dmmmmm2
603 !*********************************************************************************************************************************
604
605
606
607 !*********************************************************************************************************************************
608 !> \brief Print angle as dd.d string, input in rad, output between -99.9 and +99.9 !!!
609 !!
610 !! \param angle Angle (rad)
611 !! \retval ddd2 Angle as dd.d string
612
613 pure function ddd2(angle)
614 use sufr_kinds, only: double
615 use sufr_angles, only: rev2
616 use sufr_constants, only: r2d
617
618 implicit none
619 real(double), intent(in) :: angle
620 real(double) :: a
621 character :: ddd2*(6),sig
622
623 a = rev2(angle)*r2d
624 sig = '+'
625 if(a.lt.0.d0) then
626 sig = '-'
627 a = -a
628 end if
629
630 write(ddd2,'(A1,F4.1,A1)') sig,a,'d'
631 if(a.lt.9.95d0) write(ddd2,'(A1,I1,F3.1,A1)') sig,0,a,'d'
632
633 end function ddd2
634 !*********************************************************************************************************************************
635
636
637
638
639
640
641
642
643
644
645 !*********************************************************************************************************************************
646 !> \brief Print angle as ddd.mm.ss string, input in rad with \&deg;, &rsquo; and &rdquo; - HTML version of dms()
647 !!
648 !! \param angle Angle (rad)
649 !! \retval wdms Angle as ddd.mm.ss HTML string
650
651 pure function wdms(angle)
652 use sufr_kinds, only: double
653 use sufr_angles, only: rev
654 use sufr_constants, only: r2d
655
656 implicit none
657 real(double), intent(in) :: angle
658 real(double) :: a
659 integer :: d,m,s
660 character :: wdms*(26),mm*(2),ss*(2),ddd*(3)
661
662 a = angle
663 a = rev(a)*r2d
664 d = int(a)
665 m = int((a-d)*60.d0)
666 s = nint((a-d-m/60.d0)*3600.d0)
667
668 if(s.eq.60) then
669 m = m+1
670 s = 0
671 end if
672 if(m.eq.60) then
673 d = d+1
674 m = 0
675 end if
676
677 write(ddd,'(I3.3)') d
678 write(mm,'(I2.2)') m
679 write(ss,'(I2.2)') s
680
681 write(wdms,'(A3,A5,A2,A7,A2,A7)') ddd,'&deg;',mm,'&rsquo;',ss,'&rdquo;'
682
683 end function wdms
684 !*********************************************************************************************************************************
685
686
687 !*********************************************************************************************************************************
688 !> \brief Print angle as ddd.mm.ss.ss string, input in rad with \&deg;, &rsquo; and &rdquo; - HTML version of dmss()
689 !!
690 !! \param angle Angle (rad)
691 !! \retval wdmss Angle as ddd.mm.ss.ss HTML string
692
693 pure function wdmss(angle)
694 use sufr_kinds, only: double
695 use sufr_angles, only: rev
696 use sufr_constants, only: r2d
697
698 implicit none
699 real(double), intent(in) :: angle
700 real(double) :: a,s
701 integer :: d,m
702 character :: wdmss*(29),mm*(2),ss*(5),ddd*(3)
703
704 a = angle
705 a = rev(a)*r2d
706 d = int(a)
707 m = int((a-d)*60.d0)
708 s = (a-d-m/60.d0)*3600.d0
709
710 if(s.ge.59.995d0) then
711 m = m+1
712 s = 0
713 end if
714 if(m.eq.60) then
715 d = d+1
716 m = 0
717 end if
718
719 write(ddd,'(I3.3)') d
720 write(mm,'(I2.2)') m
721 write(ss,'(F5.2)') s
722 if(s.lt.10) write(ss,'(A1,F4.2)') '0',s
723
724 write(wdmss,'(A3,A5,A2,A7,A5,A7)') ddd,'&deg;',mm,'&rsquo;',ss,'&rdquo;'
725
726 end function wdmss
727 !*********************************************************************************************************************************
728
729
730 !*********************************************************************************************************************************
731 !> \brief Print angle as dms string, input in rad, output between -180 and +180 with \&deg;, \&rsquo; and \&rdquo; -
732 !! HTML version of dms2()
733 !!
734 !! \param angle Angle (rad)
735 !! \retval wdms2 Angle as dms HTML string
736
737 pure function wdms2(angle)
738 use sufr_kinds, only: double
739 use sufr_angles, only: rev2
740 use sufr_constants, only: r2d
741
742 implicit none
743 real(double), intent(in) :: angle
744 real(double) :: a
745 integer :: d,m,s
746 character :: wdms2*(27),mm*(2),ss*(2),ddd*(4),sig
747
748 a = angle
749 a = rev2(a)*r2d
750
751 sig = '+'
752 if(a.lt.0.d0) then
753 sig = '-'
754 a = -1.d0*a
755 end if
756
757 d = int(a)
758 m = int((a-d)*60.d0)
759 s = nint((a-d-m/60.d0)*3600.d0)
760
761 if(s.eq.60) then
762 m = m+1
763 s = 0
764 end if
765 if(m.eq.60) then
766 d = d+1
767 m = 0
768 end if
769
770 write(ddd,'(A1,I3.3)') sig,d
771 write(mm,'(I2.2)') m
772 write(ss,'(I2.2)') s
773 write(wdms2,'(A4,A5,A2,A7,A2,A7)') ddd,'&deg;',mm,'&rsquo;',ss,'&rdquo;'
774
775 end function wdms2
776 !*********************************************************************************************************************************
777
778 !*********************************************************************************************************************************
779 !> \brief Print angle as ddd.mm.ss.ss string, input in rad, output between -180 and +180 with \&deg;, \&rsquo; and \&rdquo; -
780 !! HTML version of dmss2()
781 !!
782 !! \param angle Angle (rad)
783 !! \retval wdmss2 Angle as ddd.mm.ss.ss HTML string
784
785 pure function wdmss2(angle)
786 use sufr_kinds, only: double
787 use sufr_angles, only: rev2
788 use sufr_constants, only: r2d
789
790 implicit none
791 real(double), intent(in) :: angle
792 real(double) :: a,s
793 integer :: d,m
794 character :: wdmss2*(30),mm*(2),ss*(5),ddd*(4),sig
795
796 a = angle
797 a = rev2(a)*r2d
798
799 sig = '+'
800 if(a.lt.0.d0) then
801 sig = '-'
802 a = -1.d0*a
803 end if
804
805 d = int(a)
806 m = int((a-d)*60.d0)
807 s = (a-d-m/60.d0)*3600.d0
808
809 if(s.ge.59.995d0) then
810 m = m+1
811 s = 0
812 end if
813 if(m.eq.60) then
814 d = d+1
815 m = 0
816 end if
817
818 write(ddd,'(A1,I3.3)') sig,d
819 write(mm,'(I2.2)') m
820 write(ss,'(F5.2)') s
821 if(s.lt.10) write(ss,'(A1,F4.2)') '0',s
822
823 write(wdmss2,'(A4,A5,A2,A7,A5,A7)') ddd,'&deg;',mm,'&rsquo;',ss,'&rdquo;'
824
825 end function wdmss2
826 !*********************************************************************************************************************************
827
828
829 !*********************************************************************************************************************************
830 !> \brief Print angle as dd.mm'ss" string, input in rad, output between -99 and +99 with \&deg;, \&rsquo;
831 !! and \&rdquo; HTML version of ddms2()
832 !!
833 !! \param angle Angle (rad)
834 !! \retval wddms2 Angle as dd.mm'ss" HTML string
835
836 pure function wddms2(angle)
837 use sufr_kinds, only: double
838 use sufr_angles, only: rev2
839 use sufr_constants, only: r2d
840
841 implicit none
842 real(double), intent(in) :: angle
843 real(double) :: a
844 integer :: d,m,s
845 character :: wddms2*(26),mm*(2),ss*(2),dd*(3),sig
846
847 a = angle
848 a = rev2(a)*r2d
849
850 sig = '+'
851 if(a.lt.0.d0) then
852 sig = '-'
853 a = -1.d0*a
854 end if
855
856 d = int(a)
857 m = int((a-d)*60.d0)
858 s = nint((a-d-m/60.d0)*3600.d0)
859
860 if(s.eq.60) then
861 m = m+1
862 s = 0
863 end if
864 if(m.eq.60) then
865 d = d+1
866 m = 0
867 end if
868
869 write(dd,'(A1,I2.2)') sig,d
870 write(mm,'(I2.2)') m
871 write(ss,'(I2.2)') s
872 write(wddms2,'(A3,A5,A2,A7,A2,A7)') dd,'&deg;',mm,'&rsquo;',ss,'&rdquo;'
873
874 end function wddms2
875 !*********************************************************************************************************************************
876
877
878 !*********************************************************************************************************************************
879 !> \brief Print angle as d.mm.ss string, input in rad, output between -9 and +9 - HTML version of d1ms2
880 !!
881 !! \param angle Angle (rad)
882 !! \retval wd1ms2 Angle as d.mm.ss HTML string
883
884 pure function wd1ms2(angle)
885 use sufr_kinds, only: double
886 use sufr_angles, only: rev2
887 use sufr_constants, only: r2d
888
889 implicit none
890 real(double), intent(in) :: angle
891 real(double) :: a
892 integer :: d,m,s
893 character :: wd1ms2*(25),sig
894
895 a = angle
896 a = rev2(a)*r2d
897
898 sig = '+'
899 if(a.lt.0.d0) then
900 sig = '-'
901 a = -1.d0*a
902 end if
903
904 d = int(a)
905 m = int((a-d)*60.d0)
906 s = nint((a-d-m/60.d0)*3600.d0)
907
908 if(s.eq.60) then
909 m = m+1
910 s = 0
911 end if
912 if(m.eq.60) then
913 d = d+1
914 m = 0
915 end if
916
917 write(wd1ms2,'(A1,I1.1,A5,I2.2,A7,I2.2,A7)') sig,d,'&deg;',m,'&rsquo;',s,'&rdquo;'
918
919 end function wd1ms2
920 !*********************************************************************************************************************************
921
922
923 !*********************************************************************************************************************************
924 !> \brief Print angle as ddd:mm string, input in rad with \&deg; and \&rsquo; - HTML version of dm()
925 !!
926 !! \param angle Angle (rad)
927 !! \retval wdm Angle as ddd:mm HTML string
928
929 pure function wdm(angle)
930 use sufr_kinds, only: double
931 use sufr_angles, only: rev
932 use sufr_constants, only: r2d
933
934 implicit none
935 real(double), intent(in) :: angle
936 real(double) :: a
937 integer :: d,m
938 character :: wdm*(17),mm*(2),ddd*(3)
939
940 a = angle
941 a = rev(a)*r2d
942 d = int(a)
943 m = nint((a-d)*60.d0)
944
945 if(m.eq.60) then
946 d = d+1
947 m = 0
948 end if
949
950 write(ddd,'(I3)') d
951 write(mm,'(I2.2)') m
952 write(wdm,'(A3,A5,A2,A7)') ddd,'&deg;',mm,'&rsquo;'
953
954 end function wdm
955 !*********************************************************************************************************************************
956
957
958 !*********************************************************************************************************************************
959 !> \brief Print angle as ddd.mm string, input in rad, output between -180 and +180 with \&deg; and \&rsquo;
960 !!
961 !! \param angle Angle (rad)
962 !! \retval wdm2 Angle as ddd.mm HTML string
963
964 pure function wdm2(angle)
965 use sufr_kinds, only: double
966 use sufr_angles, only: rev2
967 use sufr_constants, only: r2d
968
969 implicit none
970 real(double), intent(in) :: angle
971 real(double) :: a
972 integer :: d,m
973 character :: wdm2*(18),mm*(2),ddd*(4),sig
974
975 a = angle
976 a = rev2(a)*r2d
977 sig = '+'
978 if(a.lt.0.d0) then
979 sig = '-'
980 a = -1.d0*a
981 end if
982
983 d = int(a)
984 m = nint((a-d)*60.d0)
985 if(m.eq.60) then
986 d = d+1
987 m = 0
988 end if
989
990 write(ddd,'(A1,I3.3)') sig,d
991 write(mm,'(I2.2)') m
992 write(wdm2,'(A4,A5,A2,A7)') ddd,'&deg;',mm,'&rsquo;'
993
994 end function wdm2
995 !*********************************************************************************************************************************
996
997
998
999
1000 !*********************************************************************************************************************************
1001 !> \brief Print angle as dd.mm string, HTML version input in rad, output between -99 and +99 !!!
1002 !!
1003 !! \param angle Angle (rad)
1004 !! \retval wdmm2 Angle as dd.mm string
1005
1006 pure function wdmm2(angle)
1007 use sufr_kinds, only: double
1008 use sufr_angles, only: rev2
1009 use sufr_constants, only: r2d
1010
1011 implicit none
1012 real(double), intent(in) :: angle
1013 real(double) :: a
1014 integer :: d,m
1015 character :: wdmm2*(17),mm*(2),dd*(3),sig
1016
1017 a = angle
1018 a = rev2(a)*r2d
1019 sig = '+'
1020 if(a.lt.0.d0) then
1021 sig = '-'
1022 a = -1.d0*a
1023 end if
1024
1025 d = int(a)
1026 m = nint((a-d)*60.d0)
1027 if(m.eq.60) then
1028 d = d+1
1029 m = 0
1030 end if
1031
1032 write(dd,'(A1,I2.2)') sig,d
1033 write(mm,'(I2.2)') m
1034 write(wdmm2,'(A3,A5,A2,A7)') dd,'&deg;',mm,'&rsquo;'
1035
1036 end function wdmm2
1037 !*********************************************************************************************************************************
1038
1039
1040 !*********************************************************************************************************************************
1041 !> \brief Print angle as dd:mm.m string, HTML version. Input in rad, output between -99 and +99 !!!
1042 !!
1043 !! \param angle Angle (rad)
1044 !! \retval wdmmm2 Angle as dd:mm.m HTML string
1045
1046 pure function wdmmm2(angle)
1047 use sufr_kinds, only: double
1048 use sufr_angles, only: rev2
1049 use sufr_constants, only: r2d
1050
1051 implicit none
1052 real(double), intent(in) :: angle
1053 real(double) :: a,m
1054 integer :: d
1055 character :: wdmmm2*(19),mm*(4),dd*(3),sig
1056
1057 a = angle
1058 a = rev2(a)*r2d
1059 sig = '+'
1060 if(a.lt.0.d0) then
1061 sig = '-'
1062 a = -1.d0*a
1063 end if
1064
1065 d = int(a)
1066 m = (a-d)*60.d0
1067 if(m.ge.59.95d0) then
1068 d = d+1
1069 m = abs(m-60d0)
1070 end if
1071
1072 write(dd,'(A1,I2.2)') sig,d
1073 write(mm,'(F4.1)') m
1074 if(m.lt.9.95d0) write(mm,'(I1,F3.1)') 0,m
1075 write(wdmmm2,'(A3,A5,A4,A7)') dd,'&deg;',mm,'&rsquo;'
1076
1077 end function wdmmm2
1078 !*********************************************************************************************************************************
1079
1080
1081 !*********************************************************************************************************************************
1082 !> \brief Print angle as dd.d string, HTML version input in rad, output between -99.9 and +99.9 !!!
1083 !!
1084 !! \param angle Angle (rad)
1085 !! \retval wddd2 Angle as dd.d HTML string
1086
1087 pure function wddd2(angle)
1088 use sufr_kinds, only: double
1089 use sufr_angles, only: rev2
1090 use sufr_constants, only: r2d
1091
1092 implicit none
1093 real(double), intent(in) :: angle
1094 real(double) :: a
1095 character :: wddd2*(10),sig
1096
1097 a = rev2(angle)*r2d
1098 sig = '+'
1099 if(a.lt.0.d0) then
1100 sig = '-'
1101 a = -a
1102 end if
1103
1104 write(wddd2,'(A1,F4.1,A5)') sig,a,'&deg;'
1105 if(a.lt.9.95d0) write(wddd2,'(A1,I1,F3.1,A5)') sig,0,a,'&deg;'
1106
1107 end function wddd2
1108 !*********************************************************************************************************************************
1109
1110
1111
1112
1113
1114
1115
1116
1117 !*********************************************************************************************************************************
1118 !> \brief Print angle as mm:ss.s string, input in rad
1119 !!
1120 !! \param angle Angle (rad)
1121 !! \retval ams Angle as mm:ss.s string
1122
1123 pure function ams(angle)
1124 use sufr_kinds, only: double
1125 use sufr_angles, only: rev
1126 use sufr_constants, only: r2d
1127
1128 implicit none
1129 real(double), intent(in) :: angle
1130 real(double) :: a,s
1131 integer :: m
1132 character :: ams*(8),mm*(2),ss*(4)
1133
1134 a = angle
1135 a = rev(a)*r2d
1136 m = int((a)*60.d0)
1137 s = (a-m/60.d0)*3600.d0
1138
1139 write(mm,'(I2.2)') m
1140 write(ss,'(F4.1)') s
1141 !if(s.lt.9.95d0) write(ss,'(A1,F3.1)') '0',s
1142 if(nint(s*10).lt.100) write(ss,'(A1,F3.1)') '0',s
1143 write(ams,'(A2,A1,A4,A1)') mm,"'",ss,'"'
1144
1145 end function ams
1146 !*********************************************************************************************************************************
1147
1148
1149 !*********************************************************************************************************************************
1150 !> \brief Print angle as mm:ss.s string, input in rad
1151 !!
1152 !! \param angle Angle (rad)
1153 !! \retval ams2 Angle as mm:ss.s string
1154
1155 pure function ams2(angle)
1156 use sufr_kinds, only: double
1157 use sufr_angles, only: rev2
1158 use sufr_constants, only: r2d
1159
1160 implicit none
1161 real(double), intent(in) :: angle
1162 real(double) :: a,s
1163 integer :: m
1164 character :: ams2*(9),mm*(2),ss*(4),sig
1165
1166 a = angle
1167 a = rev2(a)*r2d
1168
1169 sig = '+'
1170 if(a.lt.0.d0) then
1171 sig = '-'
1172 a = -1.d0*a
1173 end if
1174
1175 m = int((a)*60.d0)
1176 s = (a-m/60.d0)*3600.d0
1177
1178 write(mm,'(I2.2)') m
1179 write(ss,'(F4.1)') s
1180 if(s.lt.9.95) write(ss,'(A1,F3.1)') '0',s
1181 write(ams2,'(A1,A2,A1,A4,A1)') sig,mm,"'",ss,'"'
1182
1183 end function ams2
1184 !*********************************************************************************************************************************
1185
1186
1187 !*********************************************************************************************************************************
1188 !> \brief Print angle as mm:ss.ss string, input in rad
1189 !!
1190 !! \param angle Angle (rad)
1191 !! \retval amss Angle as mm:ss.ss string
1192
1193 pure function amss(angle)
1194 use sufr_kinds, only: double
1195 use sufr_angles, only: rev
1196 use sufr_constants, only: r2d
1197
1198 implicit none
1199 real(double), intent(in) :: angle
1200 real(double) :: a,s
1201 integer :: m
1202 character :: amss*(9),mm*(2),ss*(5)
1203
1204 a = angle
1205 a = rev(a)*r2d
1206 m = int((a)*60.d0)
1207 s = (a-m/60.d0)*3600.d0
1208
1209 write(mm,'(I2.2)') m
1210 write(ss,'(F5.2)') s
1211 if(s.lt.9.995d0) write(ss,'(A1,F4.2)') '0',s
1212 write(amss,'(A2,A1,A5,A1)') mm,"'",ss,'"'
1213
1214 end function amss
1215 !*********************************************************************************************************************************
1216
1217
1218 !*********************************************************************************************************************************
1219 !> \brief Print angle as a string of ss.s", input in rad
1220 !!
1221 !! \param angle Angle (rad)
1222 !! \retval ass Angle as a string of ss.s"
1223
1224 pure function ass(angle)
1225 use sufr_kinds, only: double
1226 use sufr_angles, only: rev
1227 use sufr_constants, only: r2d
1228
1229 implicit none
1230 real(double), intent(in) :: angle
1231 real(double) :: a,s
1232 integer :: m
1233 character :: ass*(5)
1234
1235 a = angle
1236 a = rev(a)*r2d
1237 m = int((a)*60.d0)
1238 s = (a-m/60.d0)*3600.d0
1239
1240 write(ass,'(F4.1,A1)') s,'"'
1241
1242 end function ass
1243 !*********************************************************************************************************************************
1244
1245
1246
1247
1248
1249
1250
1251
1252 !*********************************************************************************************************************************
1253 !> \brief Print angle as mm'ss.s" string, input in rad; HTML version of ams()
1254 !!
1255 !! \param angle Angle (rad)
1256 !! \retval wams Angle as mm'ss.s" HTML string
1257
1258 pure function wams(angle)
1259 use sufr_kinds, only: double
1260 use sufr_angles, only: rev
1261 use sufr_constants, only: r2d
1262
1263 implicit none
1264 real(double), intent(in) :: angle
1265 real(double) :: a,s
1266 integer :: m
1267 character :: wams*(20),mm*(2),ss*(4)
1268
1269 a = angle
1270 a = rev(a)*r2d
1271 m = int((a)*60.d0)
1272 s = (a-m/60.d0)*3600.d0
1273
1274 write(mm,'(I2.2)') m
1275 write(ss,'(F4.1)') s
1276 !if(s.lt.9.95d0) write(ss,'(A1,F3.1)') '0',s
1277 if(nint(s*10).lt.100) write(ss,'(A1,F3.1)') '0',s
1278 write(wams,'(A2,A7,A4,A7)') mm,'&rsquo;',ss,'&rdquo;'
1279
1280 end function wams
1281 !*********************************************************************************************************************************
1282
1283
1284 !*********************************************************************************************************************************
1285 !> \brief Print angle as mm'ss.s" string, input in rad - html version of ams2()
1286 !!
1287 !! \param angle Angle (rad)
1288 !! \retval wams2 Angle as mm'ss.s" HTML string
1289
1290 pure function wams2(angle)
1291 use sufr_kinds, only: double
1292 use sufr_angles, only: rev2
1293 use sufr_constants, only: r2d
1294
1295 implicit none
1296 real(double), intent(in) :: angle
1297 real(double) :: a,s
1298 integer :: m
1299 character :: wams2*(21),mm*(2),ss*(4),sig
1300
1301 a = angle
1302 a = rev2(a)*r2d
1303
1304 sig = '+'
1305 if(a.lt.0.d0) then
1306 sig = '-'
1307 a = -1.d0*a
1308 end if
1309
1310 m = int((a)*60.d0)
1311 s = (a-m/60.d0)*3600.d0
1312
1313 write(mm,'(I2.2)') m
1314 write(ss,'(F4.1)') s
1315 if(s.lt.9.95) write(ss,'(A1,F3.1)') '0',s
1316 write(wams2,'(A1,A2,A7,A4,A7)') sig,mm,"&rsquo;",ss,'&rdquo;'
1317
1318 end function wams2
1319 !*********************************************************************************************************************************
1320
1321
1322 !*********************************************************************************************************************************
1323 !> \brief Print angle as HTML mm:ss.ss string, input in rad - HTML version of amss()
1324 !!
1325 !! \param angle Angle (rad)
1326 !! \retval wamss Angle as HTML mm:ss.ss string
1327
1328 pure function wamss(angle)
1329 use sufr_kinds, only: double
1330 use sufr_angles, only: rev
1331 use sufr_constants, only: r2d
1332
1333 implicit none
1334 real(double), intent(in) :: angle
1335 real(double) :: a,s
1336 integer :: m
1337 character :: wamss*(21),mm*(2),ss*(5)
1338
1339 a = angle
1340 a = rev(a)*r2d
1341 m = int((a)*60.d0)
1342 s = (a-m/60.d0)*3600.d0
1343
1344 write(mm,'(I2.2)') m
1345 write(ss,'(F5.2)') s
1346 if(s.lt.9.995d0) write(ss,'(A1,F4.2)') '0',s
1347 write(wamss,'(A2,A,A5,A)') mm,"&rsquo;",ss,'&rdquo;'
1348
1349 end function wamss
1350 !*********************************************************************************************************************************
1351
1352
1353 !*********************************************************************************************************************************
1354 !> \brief Print angle as a string of ss.s", input in rad - HTML version of ass()
1355 !!
1356 !! \param angle Angle (rad)
1357 !! \retval wass Angle as a HTML string of ss.s"
1358
1359 pure function wass(angle)
1360 use sufr_kinds, only: double
1361 use sufr_angles, only: rev
1362 use sufr_constants, only: r2d
1363
1364 implicit none
1365 real(double), intent(in) :: angle
1366 real(double) :: a,s
1367 integer :: m
1368 character :: wass*(11)
1369
1370 a = angle
1371 a = rev(a)*r2d
1372 m = int((a)*60.d0)
1373 s = (a-m/60.d0)*3600.d0
1374
1375 write(wass,'(F4.1,A7)') s,'&rdquo;'
1376
1377 end function wass
1378 !*********************************************************************************************************************************
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389end module sufr_angle2string
1390!***********************************************************************************************************************************
1391
Procedures to convert angles to formatted text strings.
pure character function, dimension(10) wddd2(angle)
Print angle as dd.d string, HTML version input in rad, output between -99.9 and +99....
pure character function, dimension(9) dmmm2(angle)
Print angle as dd:mm.m string, input in rad, output between -99 and +99 !!!
pure character function, dimension(7) prs(angle)
Print separation angle (>0) as ddd.mm or mm.ss string, input in rad.
pure character function, dimension(19) wdmmm2(angle)
Print angle as dd:mm.m string, HTML version. Input in rad, output between -99 and +99 !...
pure character function, dimension(18) wdm2(angle)
Print angle as ddd.mm string, input in rad, output between -180 and +180 with &deg; and &rsquo;.
pure character function, dimension(11) wass(angle)
Print angle as a string of ss.s", input in rad - HTML version of ass()
pure character function, dimension(25) wd1ms2(angle)
Print angle as d.mm.ss string, input in rad, output between -9 and +9 - HTML version of d1ms2.
pure character function, dimension(8) ams(angle)
Print angle as mm:ss.s string, input in rad.
pure character function, dimension(10) dms(angle)
Print angle as ddd.mm.ss string, input in rad - See wdms() for HTML version.
pure character function, dimension(29) wdmss(angle)
Print angle as ddd.mm.ss.ss string, input in rad with &deg;, ’ and ” - HTML version of dmss()
pure character function, dimension(21) wamss(angle)
Print angle as HTML mm:ss.ss string, input in rad - HTML version of amss()
pure character function, dimension(27) wdms2(angle)
Print angle as dms string, input in rad, output between -180 and +180 with &deg;, &rsquo; and &rdquo; - HTML ver...
pure character function, dimension(26) wddms2(angle)
Print angle as dd.mm'ss" string, input in rad, output between -99 and +99 with &deg;,...
pure character function, dimension(17) wdm(angle)
Print angle as ddd:mm string, input in rad with &deg; and &rsquo; - HTML version of dm()
pure character function, dimension(21) wams2(angle)
Print angle as mm'ss.s" string, input in rad - html version of ams2()
pure character function, dimension(9) d1ms2(angle)
Print angle as d.mm.ss string, input in rad, output between -9 and +9 !!!
pure character function, dimension(14) dmss2(angle, nosymbols)
Print angle as dms.ss string, input in rad, output between -180 and +180.
pure character function, dimension(9) amss(angle)
Print angle as mm:ss.ss string, input in rad.
pure character function, dimension(8) dm2(angle)
Print angle as ddd.mm string, input in rad, output between -180 and +180.
pure character function, dimension(7) dm(angle)
Print angle as ddd:mm string, input in rad.
pure character function, dimension(13) dmss(angle)
Print angle as a ddd.mm.ss.ss string, input in rad.
pure character function, dimension(6) ddd2(angle)
Print angle as dd.d string, input in rad, output between -99.9 and +99.9 !!!
pure character function, dimension(9) ams2(angle)
Print angle as mm:ss.s string, input in rad.
pure character function, dimension(11) dms2(angle)
Print angle as dms string, input in rad, output between -180 and +180 - See wdms2() for HTML version.
pure character function, dimension(20) wams(angle)
Print angle as mm'ss.s" string, input in rad; HTML version of ams()
pure character function, dimension(30) wdmss2(angle)
Print angle as ddd.mm.ss.ss string, input in rad, output between -180 and +180 with &deg;,...
pure character function, dimension(10) ddms2(angle)
Print angle as dd.mm.ss string, input in rad, output between -99 and +99 - See wddms2() for HTML vers...
pure character function, dimension(5) ass(angle)
Print angle as a string of ss.s", input in rad.
pure character function, dimension(12) dmmmmm2(angle, nosymbols)
Print angle as dd:mm.mmm string (for gps), input in rad, output between -180 and +180 !...
pure character function, dimension(7) dmm2(angle)
Print angle as dd.mm string, input in rad, output between -99 and +99 !!!
pure character function, dimension(26) wdms(angle)
Print angle as ddd.mm.ss string, input in rad with &deg;, ’ and ” - HTML version of dms()
pure character function, dimension(17) wdmm2(angle)
Print angle as dd.mm string, HTML version input in rad, output between -99 and +99 !...
Procedures to handle angles.
Definition angles.f90:23
pure real(double) function rev2(ang)
Returns angle in radians between -pi and pi.
Definition angles.f90:102
pure real(double) function rev(ang)
Returns angle in radians between 0 and 2pi.
Definition angles.f90:41
Provides all constants in the library, and routines to define them.
Definition constants.f90:23
real(double), parameter, public r2d
Radians to degrees.
Definition constants.f90:42
real(double), parameter, public mm
millimeter in cgs (cm)
Provides kinds and related constants/routines.
Definition kinds.f90:26
integer, parameter double
Double-precision float. Precision = 15, range = 307.
Definition kinds.f90:35