1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
|
Independent Submission M. Danielson
Request for Comments: 8135 Net Insight AB
Category: Experimental M. Nilsson
ISSN: 2070-1721 Besserwisser Networks
1 April 2017
Complex Addressing in IPv6
Abstract
The 128-bit length of IPv6 addresses (RFC 4291) allows for new and
innovative address schemes that can adapt to the challenges of
today's complex network world. It also allows for new and improved
security measures and supports advanced cloud computing challenges.
Status of This Memo
This document is not an Internet Standards Track specification; it is
published for examination, experimental implementation, and
evaluation.
This document defines an Experimental Protocol for the Internet
community. This is a contribution to the RFC Series, independently
of any other RFC stream. The RFC Editor has chosen to publish this
document at its discretion and makes no statement about its value for
implementation or deployment. Documents approved for publication by
the RFC Editor are not a candidate for any level of Internet
Standard; see Section 2 of RFC 7841.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
http://www.rfc-editor.org/info/rfc8135.
Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document.
Danielson & Nilsson Experimental [Page 1]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
Table of Contents
1. Introduction ....................................................3
2. Requirements Language ...........................................3
3. Natural Addresses ...............................................3
3.1. Integer Addresses ..........................................3
3.2. Prime Addresses ............................................3
3.3. Composite Addresses ........................................4
4. Complex Addresses ...............................................4
4.1. Floating Addresses .........................................4
4.2. Real Addresses .............................................5
4.3. Imaginary Addresses ........................................5
4.4. Flying Addresses ...........................................5
4.5. Complex Addresses ..........................................6
5. Supported Addressing Schemes ....................................6
5.1. Absolute Addresses .........................................6
5.2. Address Argument ...........................................6
5.3. Safe Addresses .............................................6
5.4. Virtual Addresses ..........................................7
5.5. Rational Addresses .........................................7
5.6. Irrational Addresses .......................................7
5.7. Transcendent Addresses .....................................8
6. Geometric Addresses .............................................8
6.1. Round Addresses ............................................8
6.2. Square Addresses ...........................................8
6.3. Polar Addresses ............................................9
6.4. Root Server ................................................9
6.5. Implementation Considerations ..............................9
7. IPv6 Address Mapping ...........................................10
8. IANA Considerations ............................................10
9. Security Considerations ........................................10
10. References ....................................................11
10.1. Normative References .....................................11
10.2. Informative References ...................................12
Appendix A. Square Pi ............................................13
Appendix B. Implementation Example ...............................14
Authors' Addresses ................................................16
Danielson & Nilsson Experimental [Page 2]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
1. Introduction
This document introduces the fundamental concepts of complex
addressing in IPv6, allowing for a wide range of complex addressing
schemes to be supported and further developed.
Traditional network addressing schemes such as those used in IPv4
[RFC791] and IPv6 [RFC4291] have been confined to unsigned or integer
numbers, representing fixed-point numbers. This has provided natural
numbers for early implementations but is not well adapted to the
challenges of future networks. Further, these fixed addresses have
been proven unsuitable for mobility and virtualization in today's
world, where cloud computing defies the traditional fixed addressing
model. The increased size of addresses as allowed in IPv6, the
significant drop in price of floating-point hardware, and the
availability of a well-established floating-point format in IEEE 754
[IEEE754] allow for taking not only the step to floating-point
addressing but also the step to complex addressing.
2. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
3. Natural Addresses
3.1. Integer Addresses
Traditional addresses are integer addresses and can be expressed in a
three-dot format, for example, 113.129.213.11 for the integer
1904334091, a rare IPv4 double-palindromic address. These fixed-
point addresses were well adapted to early network usage where each
computer on the Internet had a fixed location and thus a fixed
address. These addresses are also known as natural addresses. As
computers have become more powerful and able to handle larger numbers
and thus larger addresses, they have also become more transportable
(e.g., laptops and mobile phones). The transportable aspect of
computers makes fixed-point addresses moot, as machines can move
around rather than be confined to a relatively fixed point.
3.2. Prime Addresses
The prime address (that is, the primary address of a recipient) is an
important subclass of integer addresses. Such an address is not
divisible by anything but the recipient itself, which means it must
be regarded as a unique address. While many prime addresses have
been experimentally identified, it has proven to be quite hard to
Danielson & Nilsson Experimental [Page 3]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
identify a prime address amongst other addresses without resorting to
time-consuming computations. Current use includes security and
intelligence, where post boxes are obscured amongst others using
large prime addresses.
3.3. Composite Addresses
Composite addresses are formed by two or more prime addresses and
thus constitute a shared address, allowing the address to be home for
multiple prime addresses. Large composite addresses can be difficult
to distinguish from prime addresses, which can be a factor to
consider. Composite addresses have also become quite important in
addressing new light structures and are used in airplanes to make
them lightweight and durable. This is important in connecting to the
cloud.
4. Complex Addresses
4.1. Floating Addresses
Floating-point addresses allow for a more flexible addressing scheme
better adapted for today's mobile computers, thus allowing for mobile
IP [RFC5944]. Support for floating-point numbers is well established
in the form of floating numbers as described in IEEE 754 [IEEE754],
which allows both 32-bit and 64-bit floating-point numbers to be
represented; this is well matched to the requirements of fitting into
a 128-bit IPv6 address.
The use of floating addresses does not, however, imply that devices
will be watertight. Please download the watertight app from your app
store or distribution server. Also, keep your device well patched,
as long-term durability of duct tape is limited, particularly if
exposure to salt water is expected. Apply suitable environmentally
sound lubricants for best sliding performance.
Duct tape can be used to affix a floating address to a fixed address,
such as a physical address. For long-term outdoor adhesion, please
use UV-stable, nuclear-grade duct tape in layers: Layer 1 [OSI], the
physical layer, for affixing the floating address to the physical
address and then final layer, called Layer 7, for the application of
UV protection. Intermediate layers can be applied depending on the
complexity needed.
Danielson & Nilsson Experimental [Page 4]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
4.2. Real Addresses
An important aspect of floating-point addresses is that one needs to
establish the real address of a device that has a floating address,
such that IP packets can be routed to it through the network.
Letting part of the address act as the real floating-point value
allows means to express real addresses within this address scheme,
thus solving a complex addressing problem.
Real addresses are typically assigned to real estate. Multi-homing
is supported when the real estate connects to two or more road
networks over individual road interfaces. Each road interface can
often handle multiple real addresses. Mobile homes are assigned
their current real address.
4.3. Imaginary Addresses
Another important aspect of floating-point addresses is that they can
be in several possible locations; thus, one must be able to imagine
the address as being somewhere other than where the real address
would make you believe. The imaginary address provides this
orthogonal property. When the imaginary address is found to be 0,
then the imaginary address and the real address are considered equal,
and the real address has been found.
Imaginary addresses are important in handling home locations above
the normal real estate, that is, for cloud computing. The cloud can
be identified using the imaginary address, whose floating address is
adapted to a real address as the cloud gently floats by. During
windy conditions, this may be difficult to achieve; during network
storms, the real address of a cloud can become very unstable. Such
storms can occasionally become so strong that they impact real estate
and rearrange homes, making the real address quite surreal.
4.4. Flying Addresses
An extension to the imaginary address is the flying address format,
which is adapted to the mobility of avian carriers. Avian carriers
and their datagrams, as described in [RFC6214], are best addressed
with flying addresses, which typically take up ICAO Class G
[ICAO-A11] airspace, below the cloud, as can be expected from a
lower-layer technology.
Danielson & Nilsson Experimental [Page 5]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
4.5. Complex Addresses
With the introduction of the real address and imaginary address
parts, the full width of complex addresses can be realized. Both the
real and imaginary parts are represented in 64-bit floating-point
numbers as described in [IEEE754], thus allowing for the floating-
point aspect of addresses. The real address part provides for the
real address of a device, whereas the imaginary part allows for the
orthogonal addressing of the floating-point address. This allows for
complex addressing schemes where both the real and imaginary
addresses can be found.
Complex addresses allow for address arithmetic in the usual way but
can now go beyond the fixed-point limitations. Adding imaginary
parts to the address has not been possible before due to the high
cost of early floating-point hardware, which hampered imagination.
5. Supported Addressing Schemes
5.1. Absolute Addresses
It has become increasingly important to establish the absolute
address of a device for many purposes, including but not limited to,
use by law enforcement. This was manageable with fixed-point
addresses but has become increasingly difficult with increased
address mobility and floating-point addresses. The complex address
scheme provides a method for getting the absolute address by
performing the absolute function on the complex address.
5.2. Address Argument
It has become increasingly obvious that there is debate about the
address of certain services or functions, leading to address
arguments. This is another difficulty with fixed-point addresses, as
their one-dimensional form does not allow for an argument to be
resolved. The complex addressing scheme provides an elegant solution
to these address arguments, as the result of the address argument can
trivially be found by taking the argument (i.e., arctan or atan)
function of the complex address. Using the appropriate function,
full argument resolution can be found without signs of ambiguity.
5.3. Safe Addresses
A safe address is the address of a safe house. This is used in
various security scenarios -- the safety lies in that those in need
can reach the safe house at the safe address but there is no
indication that the address has this role. By use of the
imagination, this address can be made less real, simply by making the
Danielson & Nilsson Experimental [Page 6]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
imaginary part large enough not to be taken as a real address. Since
it is a floating address, the real address can be made 0, thus making
it completely imaginary, and the address argument will be orthogonal
to any real address, providing it is hard to establish its real
address. It is naturally still possible to establish the absolute
address when needed.
5.4. Virtual Addresses
Virtual addresses, where the same network interface can have multiple
addresses, have traditionally been an important concept. With the
complex addressing scheme, the imaginary part allows for a much wider
range of virtualization than just normal multiple real addresses for
a particular interface. This goes beyond normal cloud computing,
where virtualization just allows you to operate somebody else's
computer. The new imaginative address capabilities and higher
altitude addresses due to the increased range allow you to operate a
cloud within a cloud, so that you just run on top of somebody else's
cloud. This high altitude allows for supersonic cruise speed for
high-performance computing.
5.5. Rational Addresses
Engineers tend to always look at problems rationally, including the
problem of addressing. The traditional fixed-point address has,
however, only supported a subset of rational addresses, but with the
new complex addressing scheme, a larger subset of rational addresses
can be reached or approximated, allowing for a larger rationale to be
found.
The rationale for this is that with the use of floating addresses,
the power of 2 now can perfectly divide. Further, approximations for
other dividends can often be sufficiently precise. The full scope of
rational numbers has not been reached, however, as the committee was
quite imprecise on the use of floating addresses but agreed that this
initial support of rational addresses could be acknowledged and
helpful while its usage is TBD.
5.6. Irrational Addresses
Support for irrational addresses has been very poor in the
traditional addressing scheme, since fixed-point addresses did not
support any irrational behavior by design, even if proofs for
irrational addresses have been known to be jotted down. The new
scheme allows for approximations of irrational addresses to be
supported; even though no rationale for why this would be needed
could be found, it is a neat feature to handle the irrationality of
the world today.
Danielson & Nilsson Experimental [Page 7]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
5.7. Transcendent Addresses
As a natural extension to irrational addresses, one can include
approximation to the transcendent addresses, which transcend beyond
the physical address or even the real address. While only
approximated due to limited precision, they can still be used to
locate the floating address for the life of Pi [PI], as Pi's life
floats by.
6. Geometric Addresses
6.1. Round Addresses
In order to cope with the complexity of the real world, real
addresses (both rational or irrational) have always needed to be
rounded up for them to be represented. This rounding provides what
is known as round addresses and is achieved using a rounding
function. This practice is maintained in the complex addressing
scheme and is a necessity for support of rational and irrational
addresses.
Round addresses are needed to efficiently forward packets around
ring-type networks like Token Ring [IEEE-802.5] or Resilient Packet
Ring (RPR) [IEEE-802.17].
Common round words include "ring", "circle", and "sphere"; other
round words are discouraged, especially when using the network.
6.2. Square Addresses
As is well established, some addresses regularly in use cannot be
directly used on the Internet. Addresses in text form are often
referred to as square addresses, because the characters traditionally
take up a square on the screen and because they act as a square peg
in the round hole of Internet addresses. In order to convert these
square addresses into round floating-point numbers, the Domain Name
Service (DNS) was introduced to replace the host tables.
Host tables are the old-school way of looking up a square number and
converting it to round form. Such tables were published for all
known square numbers, but they where inherently out of date as new
square numbers kept occurring -- new round numbers had to be
calculated from these square numbers and then had to be tabulated and
published.
Square addresses often use square pi (see Appendix A).
Danielson & Nilsson Experimental [Page 8]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
6.3. Polar Addresses
A misconception on square addresses is that they would represent the
world as being a flat earth. While the complex addressing scheme
supports Cartesian coordinates, alternative polar addresses can be
formed. Since a flat earth would not have poles through which the
rotation axis would fit, this proves that the earth is not flat in
terms of square addresses but only has a square address
representation. Polar addresses are trivially achieved using the
absolute address and address argument methods. Recovering the
complex address is trivially achieved using the exponential function
on the complex polar address.
The polar address also has a use for addressing Santa Claus, who is
well known for living at the North Pole. This address can only be
reached by use of the imaginary address, as it takes a certain amount
of imagination in order to address Santa Claus. Traditional integer
and fixed addressing schemes do not allow for such imaginative
addresses, but the complex addressing scheme trivially handles it.
The North American Aerospace Defense Command (NORAD) Santa Tracker
would not have been possible without imaginative use of polar
addresses when their secret phone address was revealed.
6.4. Root Server
The DNS system uses a small set of known root servers, which provides
the root service in order to attain the address of a node. The
complex address provides a solution such that each client can in
itself act as a root server as they now can use built-in floating-
point hardware or software to get the root address from the squared
address. This offloads the root servers for common benefits, but the
traditional root servers can operate in parallel, easing the
transition to the complex address system.
6.5. Implementation Considerations
Implementation of floating-point addresses and complex addresses, as
needed for complex addressing schemes, is trivial in today's context.
IEEE 754 [IEEE754] allows for a common and agreed-upon format for
representing floating-point numbers. The 64-bit floating-point
representation is well established and supported throughout a wide
range of devices. Support also exists in a wide range of computer
languages, including C and FORTRAN. The C standard library (or libc)
essentially makes all modern languages support it in a consistent
manner. An independent implementation exists for Intercal. With ISO
C99 [C99], the <complex.h> include provides even more direct support
for complex numbers, enabling efficient handling of all aspects of
complex addressing with minimal implementation effort.
Danielson & Nilsson Experimental [Page 9]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
7. IPv6 Address Mapping
In order to convey complex addresses in the IPv6 address format, the
following mapping is provided:
3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|6 3|
|3 complex address (real part) 2|
+---------------------------------------------------------------+
|3 |
|1 complex address (real part) 0|
+---------------------------------------------------------------+
|6 3|
|3 complex address (imaginary part) 2|
+---------------------------------------------------------------+
|3 |
|1 complex address (imaginary part) 0|
+---------------------------------------------------------------+
The 128-bit IPv6 address is divided into two 64-bit parts, where the
upper half holds the real part of the address while the lower half
holds the imaginary part of the complex address. These are
represented as 64-bit floating-point numbers as defined in [IEEE754];
therefore, the real and imaginary address MUST be in the format
described in IEEE 754.
Since the real address is held in the real part of the complex
address and the imaginary address is held in the imaginary part of
the complex address, the proposed representation allows for compiler
optimization such that these operations can be performed without
performance hits, as could otherwise be expected with any real or
complex addressing scheme.
8. IANA Considerations
This document does not require any IANA actions, though IANA may find
it mildly amusing.
9. Security Considerations
Complex addressing is considered unsafe, as division by 0 still
provides Not a Number (NaN) values. Users will have to be careful to
identify the NaN as they can indicate infinity addresses, which are
unrealistic as one needs to confine the address length to the address
space. Many other traditional unsafe operations for fixed-point
addresses have, however, been resolved. For example, the error
Danielson & Nilsson Experimental [Page 10]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
condition of having the square address of -1 is readily resolved as
the root address becomes the complex address i. Thus, it has the
real part of 0, which is reasonable for an address that is not real,
and an imaginary part of 1, which is in itself reasonable since one
can imagine this error to occur.
Division by 0 and other floating-point address calculations can cause
a floating-point interrupt, which causes the execution address to
deviate; it is typically pushed on a stack and replaced by the
interrupt handler address. Recovery from such interrupts may require
further recursive calls; hence, the overall computation time is
unpredictable. It can cause a complete core dump, and dumping the
core can have significant effects on the propulsion system and the
time to reach anywhere in the address space. Care must be taken to
avoid such measures, or engineering will be quite upset. Dumping the
core also widely breaks security protocols, as leaks can have
widespread consequences. NaN is also known as "No Agency Number", to
mark the importance of keeping things secure.
10. References
10.1. Normative References
[C99] ISO, "Information technology -- Programming Languages --
C", ISO/IEC 9899, 1999.
[IEEE754] IEEE, "IEEE Standard for Floating-Point Arithmetic",
IEEE 754, DOI 10.1109/IEEESTD.2008.4610935.
[OSI] ISO, "Information technology -- Open Systems
Interconnection -- Basic Reference Model: The Basic
Model", ISO/IEC 7498-1, 1994.
[RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791,
DOI 10.17487/RFC0791, September 1981,
<http://www.rfc-editor.org/info/rfc791>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing
Architecture", RFC 4291, DOI 10.17487/RFC4291, February
2006, <http://www.rfc-editor.org/info/rfc4291>.
Danielson & Nilsson Experimental [Page 11]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
[RFC6214] Carpenter, B. and R. Hinden, "Adaptation of RFC 1149 for
IPv6", RFC 6214, DOI 10.17487/RFC6214, April 2011,
<http://www.rfc-editor.org/info/rfc6214>.
10.2. Informative References
[ICAO-A11] ICAO, "Air Traffic Services, Annex 11 to the Convention on
International Civil Aviation", July 2001,
<http://www.icao.int/secretariat/PostalHistory/
annex_11_air_traffic_services.htm>.
[IEEE-802.17]
IEEE, "IEEE Standard for Information Technology -
Telecommunications and Information Exchange between
Systems - Local and Metropolitan Area Networks - Specific
Requirements Part 17: Resilient Packet Ring (RPR) Access
Method and Physical Layer Specifications", IEEE 802.17,
DOI 10.1109/IEEESTD.2011.6026209.
[IEEE-802.5]
IEEE, "IEEE Standard for Information Technology -
Telecommunications and Information Exchange between
Systems - Local and Metropolitan Area Networks - Part 5:
Token Ring Access Method and Physical Layer
Specifications", IEEE 802.5,
DOI 10.1109/IEEESTD.1992.7438701.
[PI] "Life of Pi", 20th Century Fox, 2012.
[pibill] Wikipedia, "Indiana Pi Bill", March 2017,
<https://en.wikipedia.org/w/
index.php?title=Indiana_Pi_Bill&oldid=770393894>.
[RFC5944] Perkins, C., Ed., "IP Mobility Support for IPv4, Revised",
RFC 5944, DOI 10.17487/RFC5944, November 2010,
<http://www.rfc-editor.org/info/rfc5944>.
Danielson & Nilsson Experimental [Page 12]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
Appendix A. Square Pi
When using square numbers, it is customary to use square pi, a number
that has seen limited exposure in traditional texts but is widely
used in computer science. It is thus appropriate to publish a few
related notes on square pi in order to assist users of square
addresses on its correct usage.
While traditional pi or round pi is an irrational number, it can be
rounded off to 3.14 or 3.14159; it has an incomprehensible number of
decimals, which is quite inappropriate for a round number, but as we
keep rounding it to fit our needs, we keep rationalizing it from its
irrational behavior.
The radius of an object is the closest to the center of the object
you get. The circumference is the radius times 2 pi. The diameter
is the shortest distance across the object, which is thus the radius
times 2. The area is pi times the square of radius.
For a round circle, the radius is from the center to anywhere on the
circumference. For a square circle, the radius only reaches the
circumference on the four points located closest to the center.
These are typically oriented such that the real and imaginary axis
goes through them, which is helpful in calculations, and no rotation
symmetries need to be considered.
The square pi fills the same purpose as the round pi, but rather than
being adapted to round objects, it is adapted to square objects. For
a square circle, the math is exactly the same as for round circles,
provided that the square pi is used with square circles and that
round pi is used with round circles.
The value of square pi is 4.
The value of square pi adapts really well to the way that computers
calculate, which is also why computer results often are represented
in square numbers, providing a bit of a square feeling. It should be
noted that the square root of pi is often used, and the square root
of square pi is naturally 2, which is very easy to handle in
calculations and effectively reduces the risk of irrational numbers.
Please note that the square pi should not be confused with the
Indiana Pi Bill [pibill], which does not discuss the square pi but a
failed attempt to do square calculation of the area and circumference
of a round circle using traditional tools like rulers and compasses.
Danielson & Nilsson Experimental [Page 13]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
Appendix B. Implementation Example
The following is a simple implementation example to illustrate how
some core concepts can be implemented in <complex.h> (as defined in
ISO C99 [C99]).
#include <complex.h>
#include <math.h>
#include <stdio.h>
// Define type for complex address
typedef complex ca;
// Create complex address
ca ca_create_complex_address(double real_address,
double imaginary_address)
{
return real_address + I * imaginary_address;
}
// Get real address
double ca_get_real_address(ca ca_val)
{
return creal(ca_val);
}
// Get imaginary address
double ca_get_imaginary_address(ca ca_val)
{
return cimag(ca_val);
}
// Get complex address
complex ca_get_complex_address(ca ca_val)
{
return ca_val;
}
// Get floating address
double ca_get_floating_address(ca ca_val)
{
return creal(ca_val);
}
// Get physical address
double ca_get_physical_address(ca ca_val)
{
return cimag(ca_val);
Danielson & Nilsson Experimental [Page 14]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
}
// Get absolute address
double ca_get_absolute_address(ca ca_val)
{
return cabs(ca_val);
}
// Get address argument
double ca_get_address_argument(ca ca_val)
{
return carg(ca_val)*360/(2*M_PI);
}
int main()
{
ca ca1, ca2;
ca1 = ca_create_complex_address(1.0, 0.0);
printf("The complex address (%f,%f)\n",
creal(ca1), cimag(ca1));
printf("has the real address %f and imaginary address %f\n",
ca_get_real_address(ca1),
ca_get_imaginary_address(ca1));
printf("This represents the floating address %e and \
physical address %f\n", \
ca_get_floating_address(ca1),
ca_get_physical_address(ca1));
ca2 = ca_create_complex_address(0.0, 1.0);
printf("The complex address (%f,%f)\n",
creal(ca2), cimag(ca2));
printf("This represents the absolute address %f\n",
ca_get_absolute_address(ca2));
printf("The address argument resolution is %f\n",
ca_get_address_argument(ca2));
return 0;
}
Danielson & Nilsson Experimental [Page 15]
^L
RFC 8135 Complex Addressing in IPv6 1 April 2017
Authors' Addresses
Magnus Danielson
Net Insight AB
Vastberga Alle 9
Hagersten 12630
Sweden
Email: magda@netinsight.net
Mans Nilsson
Besserwisser Networks
Email: mansaxel@besserwisser.org
Danielson & Nilsson Experimental [Page 16]
^L
|