]> www.ginac.de Git - cln.git/blob - src/integer/output/cl_I_dprint.cc
82d6c0c956d47a04a419a69fcdd206a4ad472b9f
[cln.git] / src / integer / output / cl_I_dprint.cc
1 // print_integer().
2
3 // General includes.
4 #include "cl_sysdep.h"
5
6 // Specification.
7 #include "cl_integer_io.h"
8
9
10 // Implementation.
11
12 #include "cl_output.h"
13
14 void print_integer (cl_ostream stream, const cl_print_rational_flags& flags, const cl_I& z)
15 {
16         var unsigned int base = flags.rational_base;
17         if (flags.rational_readably)
18                 // Radix-Specifier ausgeben:
19                 switch (base) {
20                 case 2:
21                         fprintchar(stream,'#');
22                         fprintchar(stream,'b');
23                         break;
24                 case 8:
25                         fprintchar(stream,'#');
26                         fprintchar(stream,'o');
27                         break;
28                 case 16:
29                         fprintchar(stream,'#');
30                         fprintchar(stream,'x');
31                         break;
32                 case 10:
33                         // Basis 10 bei Integers durch
34                         // nachgestellten Punkt kennzeichnen:
35                         print_integer(stream,base,z);
36                         fprintchar(stream,'.');
37                         return;
38                 default:
39                         // Basis in #nR-Schreibweise ausgeben:
40                         fprintchar(stream,'#');
41                         print_integer(stream,10,base);
42                         fprintchar(stream,'r');
43                         break;
44                 }
45         // Integer in Basis base ausgeben:
46         print_integer(stream,base,z);
47 }