आईबीएम हेक्साडेसिमल फ़्लोटिंग-पॉइंट

हेक्साडेसिमल फ़्लोटिंग-पॉइंट अंकगणित जिसे आईबीएम द्वारा एचएफपी कहा जाता है, इन फ़्लोटिंग-पॉइंट संख्याओं को एन्कोड करने का प्रारूप है, जिसे पहली बार आईबीएम आईबीएम सिस्टम/360 या सिस्टम/360 कंप्यूटरों पर प्रस्तुत किया गया था, और उस आर्किटेक्चर के आधार पर बाद की मशीनों पर समर्थित है,  इसके साथ ही ऐसी मशीनें जिनका उद्देश्य सिस्टम/360 के साथ एप्लिकेशन-संगत होना था।

आईईईई 754 फ़्लोटिंग पॉइंट की तुलना में, एचएफपी प्रारूप का महत्व लंबा है, और एक्सपोनेंटिएशन छोटा है। इस प्रकार की सभी एचएफपी प्रारूपों में 64 के घातांक पूर्वाग्रह के साथ घातांक के 7 बिट हैं। इस प्रतिनिधित्व में योग्य संख्याओं की सामान्यीकृत सीमा 16−65से 1663 (लगभग 5.39761 × 10−79 से 7.237005 × 1075) तक है।

इन संख्या को निम्नलिखित सूत्र के रूप में दर्शाया गया है: (−1)sign × 0. significand × 16exponent−64

एकल-परिशुद्धता 32-बिट
एक एकल परिशुद्धता या एकल-परिशुद्धता एचएफपी संख्या, जिसे आईबीएम द्वारा संक्षिप्त कहा जाता है, इनको 32-बिट वाले शब्दों में संग्रहीत किया जाता है:



इस प्रारूप में प्रारंभिक बिट को दबाया नहीं जाता है, और मूलांक (हेक्साडेसिमल) बिंदु को आईबीएम डाॅक्यूमेंट और आंकड़ों में अंश के महत्व के बाईं ओर स्थिति किया गया है।
 * - style="text-align:center"
 * style="width:20px"|1
 * style="width:20px"|
 * style="width:50px"|7
 * style="width:20px"|
 * style="width:20px"|
 * style="width:210px"|24
 * style="width:20px"|
 * style="text-align:left"|(width in bits)
 * - style="text-align:center"
 * colspan="1" style="text-align:center;background-color:#FC9"|S
 * colspan="3" style="text-align:center;background-color:#99F"|Exp
 * colspan="3" style="text-align:center;background-color:#9F9"|Fraction
 * colspan="1" style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * 31
 * 30
 * 24
 * 23
 * 0
 * align="left"|(bit index)*
 * colspan="8"| * आईबीएम डाॅक्यूमेंटेशन बिट्स को बाएं से दाएं तक क्रमांकित करता है, जिससे कि सबसे महत्वपूर्ण बिट को बिट संख्या 0 के रूप में निर्दिष्ट किया जा सके।
 * }
 * colspan="8"| * आईबीएम डाॅक्यूमेंटेशन बिट्स को बाएं से दाएं तक क्रमांकित करता है, जिससे कि सबसे महत्वपूर्ण बिट को बिट संख्या 0 के रूप में निर्दिष्ट किया जा सके।
 * }
 * }

चूँकि आधार 16 है, इस रूप में घातांक आईईईई 754 के समतुल्य से लगभग दोगुना बड़ा है, इस प्रकार बाइनरी में समान घातांक सीमा रखने के लिए 9 घातांक बिट्स की आवश्यकता होगी।

उदाहरण
मान -118.625 को एचएफपी एकल-परिशुद्धता फ़्लोटिंग-पॉइंट मान के रूप में एन्कोड करने पर विचार करें।

यह मान ऋणात्मक है, इसलिए साइन बिट 1 है।

मान 118.62510 बाइनरी में (1110110.101)2 है, यह मान मूलांक बिंदु को समय में चार बिट्स (एक हेक्साडेसिमल अंक) के बाईं ओर ले जाकर सामान्यीकृत किया जाता है, जब तक कि सबसे बायां अंक शून्य न हो जाए, जिससे (0.01110110101)2 प्राप्त होता है, जिसे शेष सबसे दाहिने अंक शून्य से भरे हुए हैं, जिससे (.0111 0110 1010 0000 0000 0000)2 का 24-बिट अंश प्राप्त होता है।

सामान्यीकृत मान ने मूलांक बिंदु को दो हेक्साडेसिमल अंकों को बाईं ओर ले जाया, जिससे 16+2 का गुणक और घातांक प्राप्त होता हैं। जिसके लिए घातांक (+2) में +64 का पूर्वाग्रह जोड़ा जाता है, जिससे +66 प्राप्त होता है, जिसका मान (100 0010)2 है.

चिह्न, घातांक प्लस पूर्वाग्रह और सामान्यीकृत अंश का संयोजन इस एन्कोडिंग का उत्पादन करता है:



दूसरे शब्दों में, प्रदर्शित संख्या −0.76A00016 × 1666 − 64 = −0.4633789… × 16+2 = −118.625 है।
 * - style="text-align:center"
 * style="width:20px;text-align:center;background-color:#FC9"|S
 * style="width:90px;text-align:center;background-color:#99F"|Exp
 * style="width:250px;text-align:center;background-color:#9F9"|Fraction
 * style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * style="text-align:center;background-color:#FEC"|1
 * style="text-align:center;background-color:#CCF"|100 0010
 * style="text-align:center;background-color:#CFC"|0111 0110 1010 0000 0000 0000
 * style="text-align:center;background-color:#FFF"|
 * }

सबसे बड़ी प्रतिनिधित्व योग्य संख्या


प्रदर्शित संख्या +0.FFFFFF16 × 16127 − 64 = (1 − 16−6) × 1663 ≈ +7.2370051 × 1075 है।
 * - style="text-align:center"
 * style="width:20px;text-align:center;background-color:#FC9"|S
 * style="width:90px;text-align:center;background-color:#99F"|Exp
 * style="width:250px;text-align:center;background-color:#9F9"|Fraction
 * style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * style="text-align:center;background-color:#FEC"|0
 * style="text-align:center;background-color:#CCF"|111 1111
 * style="text-align:center;background-color:#CFC"|1111 1111 1111 1111 1111 1111
 * style="text-align:center;background-color:#FFF"|
 * }

सबसे छोटी धनात्मक सामान्यीकृत संख्या


दर्शाई गई संख्या +0.116 × 16 − 64 = 16 −1×16 −64 ≈ +5.397605 × 10 −79 है।
 * - style="text-align:center"
 * style="width:20px;text-align:center;background-color:#FC9"|S
 * style="width:90px;text-align:center;background-color:#99F"|Exp
 * style="width:250px;text-align:center;background-color:#9F9"|Fraction
 * style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * style="text-align:center;background-color:#FEC"|0
 * style="text-align:center;background-color:#CCF"|000 0000
 * style="text-align:center;background-color:#CFC"|0001 0000 0000 0000 0000 0000
 * style="text-align:center;background-color:#FFF"|
 * }

शून्य


शून्य (0.0) को सभी शून्य बिट्स के रूप में सामान्यीकृत रूप में दर्शाया जाता है, जो अंकगणितीय रूप से मान +0.016 × 16− 64 = +0 × 16−64 ≈ +0.000000 × 10−79 = 0 है। इस प्रकार की ऑल-बिट्स शून्य के अंश को देखते हुए धनात्मक या ऋणात्मक साइन बिट और गैर-शून्य पक्षपाती घातांक का कोई भी संयोजन अंकगणितीय रूप से शून्य के बराबर मान प्राप्त करेगा। चूंकि सीपीयू हार्डवेयर द्वारा शून्य के लिए उत्पन्न सामान्यीकृत रूप सभी-बिट्स शून्य है। यह तीनों फ़्लोटिंग-पॉइंट सटीक प्रारूपों के लिए सत्य है। अन्य घातांक मानों के साथ जोड़ या घटाव परिणाम में सटीकता खो सकता है।
 * - style="text-align:center"
 * style="width:20px;text-align:center;background-color:#FC9"|S
 * style="width:90px;text-align:center;background-color:#99F"|Exp
 * style="width:250px;text-align:center;background-color:#9F9"|Fraction
 * style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * style="text-align:center;background-color:#FEC"|0
 * style="text-align:center;background-color:#CCF"|000 0000
 * style="text-align:center;background-color:#CFC"|0000 0000 0000 0000 0000 0000
 * style="text-align:center;background-color:#FFF"|
 * }

परिशुद्धता मुद्दे
चूँकि आधार 16 है, बाइनरी महत्व में अधिकतम तीन अग्रणी शून्य बिट हो सकते हैं। इसका अर्थ है कि जब संख्या को बाइनरी में परिवर्तित किया जाता है, तो सटीकता के कम से कम 21 बिट हो सकते हैं। इस प्रकार की त्रुटि पूर्ण परिशुद्धता के प्रभाव के कारण, इसके कारण कुछ गणनाएँ बहुत ग़लत हो सकती हैं। इसकी अत्यधिक आलोचना हुई हैं।

अशुद्धि का अच्छा उदाहरण दशमलव मान 0.1 का प्रतिनिधित्व है। इसका कोई सटीक बाइनरी या हेक्साडेसिमल प्रतिनिधित्व नहीं है। हेक्साडेसिमल प्रारूप में, इसे 0.19999999...16 या 0.0001 1001 1001 1001 1001 1001 1001...2 के रूप में दर्शाया गया है, यह इस प्रकार हैं:



इसमें केवल 21 बिट्स हैं, जबकि बाइनरी संस्करण में 24 बिट्स परिशुद्धता है।
 * - style="text-align:center"
 * style="width:20px;text-align:center;background-color:#FC9"|S
 * style="width:90px;text-align:center;background-color:#99F"|Exp
 * style="width:250px;text-align:center;background-color:#9F9"|Fraction
 * style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * style="text-align:center;background-color:#FEC"|0
 * style="text-align:center;background-color:#CCF"|100 0000
 * style="text-align:center;background-color:#CFC"|0001 1001 1001 1001 1001 1010
 * style="text-align:center;background-color:#FFF"|
 * }

परिशुद्धता के छह हेक्साडेसिमल अंक लगभग छह दशमलव अंकों के समान हैं, अर्ताथ (6 - 1) Log10(16) ≈ 6.02) के समान हैं। इस प्रकार की एकल परिशुद्धता हेक्साडेसिमल फ्लोट को दशमलव स्ट्रिंग में परिवर्तित करने के लिए कम से कम 9 महत्वपूर्ण अंकों के लिए अर्ताथ 6 Log10(16) + 1 ≈ 8.22) की आवश्यकता होगी वापस उसी हेक्साडेसिमल फ्लोट मान में परिवर्तित करने के लिए आवश्यक हैं।

डबल-सटीक 64-बिट
दोहरी सुनिश्चितता या डबल-प्रिसिजन एचएफपी प्रारूप के लिए आईबीएम द्वारा लॉन्ग कहा जाता है, इस प्रकार लघु प्रारूप के समान है, इसके अतिरिक्त इसके कि अंश क्षेत्र व्यापक है, और डबल-प्रिसिजन संख्या डबल शब्द (8 बाइट्स) में संग्रहीत है:



इस प्रारूप का प्रतिपादक संबंधित आईईईई बाइनरी प्रारूप के रूप में केवल चौथाई सीमा को कवर करता है।
 * - style="text-align:center"
 * style="width:20px"|1
 * style="width:20px"|
 * style="width:50px"|7
 * style="width:20px"|
 * style="width:20px"|
 * style="width:320px"|56
 * style="width:20px"|
 * style="text-align:left"|(width in bits)
 * - style="text-align:center"
 * colspan="1" style="text-align:center;background-color:#FC9"|S
 * colspan="3" style="text-align:center;background-color:#99F"|Exp
 * colspan="3" style="text-align:center;background-color:#9F9"|Fraction
 * colspan="1" style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * 63
 * 62
 * 56
 * 55
 * 0
 * align="left"|(bit index)*
 * colspan="8"| * आईबीएम डाॅक्यूमेंटेशन बिट्स को बाएं से दाएं तक क्रमांकित करता है, जिससे कि सबसे महत्वपूर्ण बिट को बिट संख्या 0 के रूप में निर्दिष्ट किया जा सके।
 * }
 * colspan="8"| * आईबीएम डाॅक्यूमेंटेशन बिट्स को बाएं से दाएं तक क्रमांकित करता है, जिससे कि सबसे महत्वपूर्ण बिट को बिट संख्या 0 के रूप में निर्दिष्ट किया जा सके।
 * }
 * }

परिशुद्धता के 14 हेक्साडेसिमल अंक लगभग 17 दशमलव अंकों के समान हैं। इसके लिए डबल प्रिसिजन हेक्साडेसिमल फ्लोट को दशमलव स्ट्रिंग में बदलने के लिए वापस उसी हेक्साडेसिमल फ्लोट मान में परिवर्तित करने के लिए कम से कम 18 महत्वपूर्ण अंकों की आवश्यकता होगी।

विस्तारित-परिशुद्धता 128-बिट
आईबीएम द्वारा विस्तारित-परिशुद्धता कहा जाता है, यह चौगुनी परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप या चौगुनी-परिशुद्धता एचएफपी प्रारूप को सिस्टम/370 श्रृंखला में जोड़ा गया था और कुछ एस/360 मॉडल (एस/360-85, -195, और अन्य विशेष अनुरोध पर या ओएस सॉफ्टवेयर द्वारा सिम्युलेटेड) पर उपलब्ध था। इसके कारण विस्तारित होने वाले सटीक अंश क्षेत्र के लिए व्यापक है, और विस्तारित-सटीक संख्या को दो दोहरे शब्दों (16 बाइट्स) के रूप में संग्रहीत किया जाता है:



परिशुद्धता के 28 हेक्साडेसिमल अंक लगभग 32 दशमलव अंकों के समान हैं। इसके विस्तारित परिशुद्धता एचएफपी को दशमलव स्ट्रिंग में परिवर्तित करने के लिए उसी एचएफपी मान में वापस परिवर्तित करने के लिए कम से कम 35 महत्वपूर्ण अंकों की आवश्यकता होगी। इस प्रकार के निम्न-क्रम वाले भाग में संग्रहीत घातांक उच्च-क्रम वाले भाग से 14 कम है, जब तक कि यह शून्य से कम न हो।
 * colspan="8" |High-order part
 * - style="text-align:center"
 * style="width:20px"|1
 * style="width:20px"|
 * style="width:50px"|7
 * style="width:20px"|
 * style="width:20px"|
 * style="width:320px"|56
 * style="width:20px"|
 * style="text-align:left"|(width in bits)
 * - style="text-align:center"
 * colspan="1" style="text-align:center;background-color:#FC9"|S
 * colspan="3" style="text-align:center;background-color:#99F"|Exp
 * colspan="3" style="text-align:center;background-color:#9F9"|Fraction (high-order 14 digits)
 * colspan="1" style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * 127
 * 126
 * 120
 * 119
 * 64
 * align="left"|(bit index)*
 * colspan="8" |Low-order part
 * - style="text-align:center"
 * colspan="4"|8
 * 56
 * style="text-align:left"|(width in bits)
 * - style="text-align:center"
 * colspan="4" style="text-align:center;background-color:#CCC"|Unused
 * colspan="3" style="text-align:center;background-color:#9F9"|Fraction (low-order 14 digits)
 * colspan="1" style="text-align:center;background-color:#FFF"|
 * - style="text-align:center"
 * 63
 * colspan="2"|...
 * 56
 * 55
 * 0
 * align="left"|(bit index)*
 * colspan="8"| * आईबीएम डाॅक्यूमेंटेशन बिट्स को बाएं से दाएं तक क्रमांकित करता है, ताकि सबसे महत्वपूर्ण बिट को बिट संख्या 0 के रूप में निर्दिष्ट किया जा सके।
 * }
 * 56
 * 55
 * 0
 * align="left"|(bit index)*
 * colspan="8"| * आईबीएम डाॅक्यूमेंटेशन बिट्स को बाएं से दाएं तक क्रमांकित करता है, ताकि सबसे महत्वपूर्ण बिट को बिट संख्या 0 के रूप में निर्दिष्ट किया जा सके।
 * }
 * colspan="8"| * आईबीएम डाॅक्यूमेंटेशन बिट्स को बाएं से दाएं तक क्रमांकित करता है, ताकि सबसे महत्वपूर्ण बिट को बिट संख्या 0 के रूप में निर्दिष्ट किया जा सके।
 * }

अंकगणितीय परिचालन
उपलब्ध अंकगणितीय परिचालन जोड़ और घटाव, सामान्यीकृत और असामान्यीकृत दोनों हैं और इसकी तुलना करते हैं। इस प्रकार घातांक अंतर के आधार पर पूर्वसामान्यीकरण किया जाता है। इसके कारण पूर्व-सामान्यीकृत असामान्य मानों को गुणा और विभाजित करें, और प्राप्त होने वाले परिणाम को गार्ड अंक के बाद छोटा करें। इस प्रकार दो से भाग को सरल बनाने के लिए आधा ऑपरेशन है। जिसके लिए ईएसए/390 से प्रारंभ होकर, वर्गमूल प्रक्रिया को प्रारंभ करता है। इस प्रकार की सटीक हानि से बचने के लिए सभी ऑपरेशनों में हेक्साडेसिमल गार्ड अंक होता है। इसके अधिकांश अंकगणितीय ऑपरेशन साधारण पॉकेट कैलकुलेटर की तरह छोटे-छोटे होते हैं। इसलिए, 1 − 16−8 = 1 की स्थिति में, परिणाम शून्य से पूर्णांकित है।

आईबीएम मेनफ्रेम पर आईईईई 754
1998 में S/390 G5 से प्रारंभ आईबीएम मेनफ्रेम में आईईईई बाइनरी फ़्लोटिंग-पॉइंट इकाइयां भी उपस्थित हैं जो फ़्लोटिंग-पॉइंट अंकगणित के लिए आईईईई 754 या आईईईई 754 मानक के अनुरूप हैं। इस प्रकार IEEE दशमलव फ़्लोटिंग-पॉइंट को IBM सिस्टम z9 GA2 में जोड़ा गया था, इसके लिए 2007 में मिलीकोड का उपयोग करके और 2008 में हार्डवेयर में आईबीएम सिस्टम z10 तक सीमित हैं।

आधुनिक आईबीएम मेनफ्रेम 3 हेक्साडेसिमल (एचएफपी) प्रारूप, 3 बाइनरी (बीएफपी) प्रारूप और 3 दशमलव (डीएफपी) प्रारूप के साथ तीन फ्लोटिंग-पॉइंट रेडिस का समर्थन करते हैं। इसलिए प्रति कोर दो फ़्लोटिंग-पॉइंट इकाइयाँ हैं, एचएफपी और बीएफपी का समर्थन करता है, और डीएफपी का समर्थन करता है, रजिस्टर फ़ाइल है, एफपीआर, जिसमें सभी 3 प्रारूप हैं। 2015 में IBM_z13_(माइक्रोप्रोसेसर) से प्रारंभ करते हुए, प्रोसेसर ने सदिश सुविधा जोड़ी है जिसमें 32 सदिश रजिस्टर उपस्थित हैं, प्रत्येक 128 बिट चौड़ा है, सदिश रजिस्टर में दो 64-बिट या चार 32-बिट फ़्लोटिंग-पॉइंट नंबर हो सकते हैं। इस प्रकार पारंपरिक 16 फ़्लोटिंग-पॉइंट रजिस्टरों को नए सदिश रजिस्टरों पर मढ़ा जाता है, इसलिए कुछ डेटा को पारंपरिक फ़्लोटिंग-पॉइंट निर्देशों या नए सदिश निर्देशों के साथ हेरफेर किया जा सकता है।

विशेष उपयोग
IBM HFP प्रारूप का उपयोग इसमें किया जाता है:

चूंकि आईबीएम एचएफपी प्रारूप का उपयोग करने वाला हार्डवेयर का एकमात्र शेष प्रदाता है, और उस प्रारूप का समर्थन करने वाली एकमात्र आईबीएम मशीनें उनके मेनफ्रेम हैं, कुछ फ़ाइल प्रारूपों को इसकी आवश्यकता होती है। अपवाद एसएएस 5 ट्रांसपोर्ट फ़ाइल प्रारूप है, जिसकी एफडीए को आवश्यकता होती है, उस प्रारूप में, फ़ाइल में सभी फ़्लोटिंग-पॉइंट नंबर आईबीएम मेनफ़्रेम प्रतिनिधित्व का उपयोग करके संग्रहीत किए जाते हैं। [...] अधिकांश प्लेटफ़ॉर्म फ़्लोटिंग-पॉइंट नंबरों के लिए IEEE प्रतिनिधित्व का उपयोग करते हैं। इस प्रकार [...] ट्रांसपोर्ट फ़ाइलों को पढ़ने और/या लिखने में आपकी सहायता के लिए, हम आईईईई प्रतिनिधित्व (या तो बड़े एंडियन या छोटे एंडियन) से ट्रांसपोर्ट प्रतिनिधित्व और फिर से वापस परिवर्तित करने के लिए रूटीन प्रदान कर रहे हैं। आईबीएम के प्रारूप के लिए कोड जीएनयू लेसर जनरल पब्लिक लाइसेंस|एलजीपीएलवी2.1 के तहत भी उपलब्ध है।
 * इस प्रकार के नए अनुप्रयोगों (एनडीए) के अध्ययन में उपयोग होने वाली प्रस्तुतियाँ के लिए खाद्य एवं औषधि प्रशासन (एफडीए) द्वारा आवश्यक एसएएस 5 परिवहन फ़ाइलें (.एक्सपीटी) उपयोग होती हैं।
 * मौसम भविष्यवाणी मॉडल के आउटपुट का आदान-प्रदान करने के लिए जीआरआईबी (जीआरआईडेड बाइनरी) डेटा फ़ाइलें (वर्तमान संस्करण में आईईईई एकल-सटीक फ़्लोटिंग-पॉइंट प्रारूप) उपयोग होती हैं।
 * GDSII (ग्राफ़िक डेटाबेस सिस्टम II) प्रारूप फ़ाइलें ओपन आर्टवर्क सिस्टम इंटरचेंज स्टैंडर्ड प्रतिस्थापन होती है, और
 * SEG Y (सोसायटी ऑफ एक्सप्लोरेशन जियोफिजिसिस्ट Y) प्रारूप फ़ाइलें IEEE एकल-परिशुद्धता फ़्लोटिंग-पॉइंट प्रारूप 2002 में प्रारूप में जोड़ा गया था।

सिस्टम जो आईबीएम फ़्लोटिंग-पॉइंट प्रारूप का उपयोग करते हैं

 * आईबीएम सिस्टम/360 और उत्तराधिकारी
 * आरसीए स्पेक्ट्रा 70
 * इंग्लिश इलेक्ट्रिक सिस्टम 4
 * GEC 4000 श्रृंखला के मिनी कंप्यूटर
 * इंटरडेटा 16-बिट और 32-बिट कंप्यूटर
 * एसडीएस सिग्मा श्रृंखला
 * डेटा जनरल मिनी कंप्यूटर
 * आईसीएल 2900 सीरीज के कंप्यूटर
 * सीमेंस 7.700 और 7.500 श्रृंखला मेनफ्रेम और उत्तराधिकारी

यह भी देखें

 * आईईईई 754 या फ़्लोटिंग-पॉइंट अंकगणित के लिए आईईईई 754 मानक
 * माइक्रोसॉफ्ट बाइनरी फॉर्मेट

अग्रिम पठन

 * Harding, L. J. (1966), "Idiosyncrasies of System/360 Floating-Point", Proceedings of SHARE 27, August 8–12, 1966, Presented at SHARE XXVII, Toronto, Canada
 * Harding, L. J. (1966), "Modifications of System/360 Floating Point", SHARE Secretary Distribution, pp. 11–27, SSD 157, C4470
 * Harding, L. J. (1966), "Idiosyncrasies of System/360 Floating-Point", Proceedings of SHARE 27, August 8–12, 1966, Presented at SHARE XXVII, Toronto, Canada
 * Harding, L. J. (1966), "Modifications of System/360 Floating Point", SHARE Secretary Distribution, pp. 11–27, SSD 157, C4470