خوارزمية القسمة

خوارزمية القسمة هي خوارزمية تقوم، عند إعطاء عددين صحيحين N و D (البسط والمقام على التوالي)، بحساب ناتج قسمتهما و /أو باقي القسمة ، وهو نتيجة القسمة الإقليدية . تُطبق بعض هذه الخوارزميات يدويًا، بينما تُستخدم أخرى في تصميم الدوائر الرقمية والبرمجيات.

تنقسم خوارزميات القسمة إلى فئتين رئيسيتين: القسمة البطيئة والقسمة السريعة. تُنتج خوارزميات القسمة البطيئة رقمًا واحدًا من ناتج القسمة النهائي في كل تكرار. ومن أمثلة القسمة البطيئة: القسمة مع استعادة الأرقام ، والقسمة مع استعادة الأرقام غير الفعالة، والقسمة بدون استعادة الأرقام ، وقسمة SRT . أما طرق القسمة السريعة ، فتبدأ بتقريب دقيق لناتج القسمة النهائي، وتُنتج ضعف عدد أرقام ناتج القسمة النهائي في كل تكرار. [ 1 ] وتندرج خوارزميات نيوتن-رافسون وجولدشميت ضمن هذه الفئة.

تسمح بعض صيغ هذه الخوارزميات باستخدام خوارزميات الضرب السريعة . ونتيجة لذلك، بالنسبة للأعداد الصحيحة الكبيرة، يكون وقت الحساب اللازم للقسمة هو نفسه، حتى عامل ثابت، الوقت اللازم للضرب، بغض النظر عن خوارزمية الضرب المستخدمة.

ستتناول المناقشة النموذجشمال/د=(سؤال،R){\displaystyle N/D=(Q,R)}، أين

المدخل، و

هذا هو الناتج.

القسمة بالطرح المتكرر

إن أبسط خوارزمية للقسمة، والتي تم دمجها تاريخياً في خوارزمية القاسم المشترك الأكبر المقدمة في كتاب العناصر لإقليدس ، الكتاب السابع، القضية 1، تجد الباقي عند إعطاء عددين صحيحين موجبين باستخدام عمليات الطرح والمقارنة فقط:

دالة divide_unsigned ( N , D ) إذا كان D = فسيتم تنفيذ خطأ ( DivisionByZero ) نهاية R : = N Q : = 0 طالما R D ، يتم تنفيذ R : = R D Q : = Q + 1 نهاية الإرجاع ( Q , R ) نهاية

إن إثبات وجود ناتج القسمة والباقي وكونهما فريدين (كما هو موضح في القسمة الإقليدية ) يؤدي إلى خوارزمية قسمة كاملة، قابلة للتطبيق على كل من الأعداد السالبة والموجبة، باستخدام عمليات الجمع والطرح والمقارنة:

دالة القسمة ( N ، D ) إذا كان D = 0، فسيتم عرض خطأ (القسمة على صفر) نهاية إذا كان D < 0، فسيتم قسمة (Q، R) := قسمة (N، -D) إرجاع (-Q، R ) نهاية إذا كان N < 0 ، فسيتم قسمة ( Q ، R ) := قسمة (-N ، D ) إذا كان R = 0 ، فسيتم إرجاع ( -Q ، 0 ) وإلا -- مثال : N = -7 ، D = 3 -- قسمة ( - N ، D ) = قسمة ( 7 ، 3 ) = ( 2 ، 1 ) -- R 0 ، لذا يتم إرجاع (-2 - 1، 3 - 1) = (-3، 2) التحقق: (-3)*3 + 2 = -7 إرجاع ( -Q - 1 ، D - R ) نهاية نهاية -- عند هذه النقطة، N ≥ 0 و D > 0 إرجاع قسمة_غير_موقّعة ( N ، D ) نهاية

تُنتج هذه العملية دائمًا قيمة R ≥ 0. على الرغم من بساطتها، إلا أنها تتطلب Ω (Q) خطوة، وبالتالي فهي أبطأ بشكل كبير حتى من خوارزميات القسمة البطيئة مثل القسمة المطولة. تُعدّ هذه العملية مفيدة إذا كانت قيمة Q صغيرة (لأنها خوارزمية حساسة للمخرجات )، ويمكن استخدامها كمواصفات قابلة للتنفيذ.

التنفيذ البديل

يقوم تطبيق بديل بزيادة الباقي وإعادة ضبطه عندما يصل إلى المقسوم عليه.

لx،yشمال0{\displaystyle x,y\in \mathbb {N} _{0}}، تقوم الخوارزمية بحسابq،ر{\displaystyle q,r\,}بحيثx=qy+ر{\displaystyle x=qy+r\,}، مع0ر<y{\displaystyle 0\leq r<y}:

div(x،y)=x/y{\displaystyle \operatorname {div} (x,y)=\left\lfloor x/y\right\rfloor }
xتعديلy=x-yx/y{\displaystyle x{\bmod {y}}=xy\left\lfloor x/y\right\rfloor }

انظر إلى هذا الكود المكتوب بلغة بايثون :

دالة ` divide_unsigned2` ( البسط : عدد صحيح ، المقام : عدد صحيح ) -> tuple [ عدد صحيح ، عدد صحيح ] الناتج : عدد صحيح = 0 الباقي : عدد صحيح = 0 لكل _ في نطاق ( البسط ) : الباقي += 1 إذا كان الباقي يساوي المقام : الناتج + = 1 الباقي = 0 ...

ملحوظات

  • الحالات الخاصة هي
xتعديل1=0{\displaystyle x{\bmod {1}}=0}وxتعديل0=x{\displaystyle x{\bmod {0}}=x}[ 2 ]
  • لا تتم قراءة المتغير quotientمطلقًا. لذا، عند إزالة قيمه المُسندة - المُظللة - من الكود وإزالته quotientمن قائمة الإخراج، فإن دالة divide_unsigned2 ، مثل دالة divide_unsigned ، ستظل تُحسب.xتعديلy{\displaystyle x{\bmod {y}}}.

التنفيذ البديل كآلة عدّ: يمكن بناء آلة عدّ بسيطة (CM) على التنفيذ البديل. تعليمات آلة العدّ هي [ 3 ] [ 4 ]

  • Z (n): استبدل r n بـ 0.
  • S (n): أضف 1 إلى r n .
  • J (m, n, q): إذا كان r m = r n ، انتقل إلى التعليمات رقم q؛ وإلا فانتقل إلى التعليمات التالية في البرنامج.

برنامج آلة العد هو [ 5 ]

1: J(1,5,0) 2: S(4) 3: J(4,2,6) 4: S(5) 5: J(0,0,1) 6: S(3) 7: Z(4) 8: S(5) 9: J(0,0,1) 

بعد أن ينتهي المعالج من الحساب على قيم السجلات الأولية R1=N، R2=D (السجلات المتبقية = 0)،

يحتوي المسجل R3 على الجزء الصحيح من ناتج قسمة N/D، و
يحتفظ السجل R4 بالباقي.

القسمة المطولة

القسمة المطولة هي الخوارزمية القياسية المستخدمة في قسمة الأعداد متعددة الأرقام المكتوبة بالصيغة العشرية باستخدام القلم والورقة. وتنتقل هذه العملية تدريجياً من يسار المقسوم إلى يمينه، حيث يُطرح أكبر مضاعف ممكن للمقسوم عليه (على مستوى الأرقام) في كل مرحلة؛ ثم تصبح هذه المضاعفات أرقام ناتج القسمة، ويكون الفرق النهائي هو الباقي.

عند استخدام هذا الأسلوب مع نظام العد الثنائي، فإنه يُشكل أساس خوارزمية القسمة على الأعداد الصحيحة (غير المُوقّعة) مع الباقي الموضحة أدناه. القسمة المختصرة هي شكل مُختصر من القسمة المطولة، وهي مُناسبة للمقسوم عليه المكون من رقم واحد. أما طريقة التجزئة - المعروفة أيضًا بطريقة النواتج الجزئية أو طريقة المشنقة - فهي شكل أقل كفاءة من القسمة المطولة، ولكنها قد تكون أسهل في الفهم. ومن خلال السماح بطرح مُضاعفات أكثر مما هو موجود حاليًا في كل مرحلة، يُمكن تطوير صيغة أكثر مرونة للقسمة المطولة.  

القسمة الصحيحة (بدون إشارة) مع الباقي

ستقوم الخوارزمية التالية، وهي النسخة الثنائية من عملية القسمة المطولة الشهيرة ، بقسمة N على D ، ووضع الناتج في Q والباقي في R. في الشفرة الزائفة التالية، تُعامل جميع القيم كأعداد صحيحة غير مُوقّعة.

إذا كانت D = فسيتم تنفيذ خطأ ( DivisionByZeroException ). Q : = 0 -- تهيئة ناتج القسمة والباقي إلى الصفر. R : = 0 for i : = n 1 .. 0 do -- حيث n هو عدد البتات في N. R : = R << 1 -- إزاحة R إلى اليسار بمقدار بت واحد. R ( 0 ) : = N ( i ) -- تعيين أقل بت أهمية في R مساويًا للبت i من البسط. إذا كانت R D، فسيتم تنفيذ ما يلي: R : = R D. Q ( i ) : = 1 end end

مثال

إذا أخذنا N=1100 2 (12 10 ) و D=100 2 (4 10 )

الخطوة 1 : اجعل R=0 و Q=0. الخطوة 2 : اجعل i=3 (أقل بواحد من عدد البتات في N). الخطوة 3 : اجعل R=00 (إزاحة لليسار بمقدار 1). الخطوة 4 : اجعل R=01 (جعل R(0) يساوي N(i)). الخطوة 5 : R < D، لذا تخطى هذه العبارة.

الخطوة 2 : اضبط i=2، الخطوة 3 : R=010، الخطوة 4 : R=011، الخطوة 5 : R < D، تم تخطي العبارة

الخطوة 2 : اضبط i=1 الخطوة 3 : R=0110 الخطوة 4 : R=0110 الخطوة 5 : R>=D، تم إدخال العبارة الخطوة 5ب : R=10 (R−D) الخطوة 5ج : Q=10 (ضبط Q(i) على 1)

الخطوة 2 : اضبط i=0 الخطوة 3 : R=100 الخطوة 4 : R=100 الخطوة 5 : R>=D، تم إدخال العبارة الخطوة 5ب : R=0 (R−D) الخطوة 5ج : Q=11 (ضبط Q(i) على 1)

نهاية Q=11 2 (3 10 ) و R=0.

طريقة القسمة البطيئة

تعتمد جميع طرق القسمة البطيئة على معادلة تكرار قياسية [ 6 ]

Rج+1=ب×Rج-qن-(ج+1)×د،{\displaystyle R_{j+1}=B\times R_{j}-q_{n-(j+1)}\times D,}

أين:

  • R j هو الباقي الجزئي رقم j  من عملية القسمة ( يتم تضمين خطوة R(0) := N(i))
  • B هو الأساس (القاعدة، وعادة ما تكون 2 داخليًا في أجهزة الكمبيوتر والآلات الحاسبة)
  • يمثل q n ​​− ( j + 1) رقم ناتج القسمة في الموضع n − ( j + 1)، حيث يتم ترقيم مواضع الأرقام من الأقل أهمية 0 إلى الأكثر أهمية n − 1
  • يمثل n عدد الأرقام في ناتج القسمة
  • D هو القاسم

إعادة توحيد الصفوف

تعتمد عملية القسمة الاسترجاعية على الأعداد الكسرية ذات النقطة الثابتة وتعتمد على الافتراض 0 < D < N.

يتم تكوين أرقام القسمة q من مجموعة الأرقام {0,1}.

الخوارزمية الأساسية لعملية القسمة الثنائية (الأساس 2) هي:

R : = N D : = D << n -- يحتاج كل من R و D إلى ضعف عرض الكلمة لكل من N و Q for i : = n 1 .. 0 do -- على سبيل المثال 31..0 لـ 32 بت R : = 2 * R D -- طرح تجريبي من القيمة المُزاحة (الضرب في 2 هو إزاحة في التمثيل الثنائي) if R >= 0 then q ( i ) : = 1 -- البت الناتج 1 else q ( i ) : = 0 -- البت الناتج 0 R : = R + D -- الباقي الجزئي الجديد هو القيمة المُزاحة (المُستعادة) end endحيث: N = البسط، D = المقام، n = عدد البتات، R = الباقي الجزئي، q(i) = البت رقم i من ناتج القسمة

القسمة الاستعادة غير الفعالة تشبه القسمة الاستعادة باستثناء أنه يتم حفظ قيمة 2R، لذلك لا يلزم إضافة D مرة أخرى في حالة R < 0.

قسم غير قابل للاستعادة

تستخدم عملية القسمة غير المُستعادة مجموعة الأرقام { −1 , 1} لأرقام ناتج القسمة بدلاً من {0, 1}. ورغم أن هذه الخوارزمية أكثر تعقيدًا، إلا أنها تتميز عند تطبيقها على الأجهزة بوجود عملية قرار واحدة فقط وعملية جمع/طرح واحدة لكل بت من بتات ناتج القسمة؛ فلا توجد خطوة استعادة بعد الطرح، [ 7 ] مما يُقلل عدد العمليات إلى النصف تقريبًا ويُسرّع تنفيذها. [ 8 ] الخوارزمية الأساسية للقسمة غير المُستعادة للأعداد غير السالبة في النظام الثنائي (الأساس 2) هي:

-- المدخلات: N (البسط)، D (المقام) -- n = عدد البتات عادةً ما يتم تخزين R و D في سجلات بعرض 2n أو ما شابه ذلك للتعامل مع عمليات الإزاحةR : = N -- تهيئة الباقيfor i = n 1 .. 0 do -- على سبيل المثال 31..0 لـ 32 بت -- إزاحة الباقي إلى اليسار (جبريًا: 2 * R) if R >= 0 then R : = 2 * R - D ; -- طرح D q ( i ) : = 1 ; -- تسجيل بت الناتج كـ 1 else R : = 2 * R + D ; -- إضافة D (استعادة) q ( i ) : = - 1 ; -- تسجيل بت الناتج كـ -1 end if end for

باتباع هذه الخوارزمية، يكون ناتج القسمة بصيغة غير قياسية تتكون من الرقمين -1 و+1. يجب تحويل هذه الصيغة إلى النظام الثنائي للحصول على ناتج القسمة النهائي. مثال:

حوّل ناتج القسمة التالي إلى مجموعة الأرقام {0,1}:
يبدأ:سؤال=1111¯11¯11¯{\displaystyle Q=111{\bar {1}}1{\bar {1}}1{\bar {1}}}
1. تكوين الحد الموجب:P=11101010{\displaystyle P=11101010\,}
2. إخفاء الحد السالب: [ ملاحظة 1 ]م=٠٠٠١٠١٠١{\displaystyle M=00010101\,}
3. اطرح:P-م{\displaystyle P-M}:سؤال=11010101{\displaystyle Q=11010101\,}
  1. تدوين ثنائي موقّع مع المتمم الأحادي بدون المتمم الثنائي .

إذا كانت الأرقام -1 منسؤال{\displaystyle Q}يتم تخزينها على شكل أصفار (0) كما هو شائع، ثمP{\displaystyle P}يكونسؤال{\displaystyle Q}والحوسبةم{\displaystyle M}الأمر بسيط: قم بإجراء عملية المتمم الأحادي (المتمم بتًا بتًا) على الأصلسؤال{\displaystyle Q}.

Q : = Q bit . bnot ( Q ) -- مناسب إذا تم تمثيل الأرقام -1 في Q كأصفار كما هو شائع.

أخيرًا، تكون نواتج القسمة المحسوبة بهذه الخوارزمية فردية دائمًا، ويكون الباقي في R ضمن النطاق −D R < D. على سبيل المثال، 5 / 2 = 3R − 1. لتحويل الباقي إلى قيمة موجبة، قم بخطوة استعادة واحدة بعد تحويل Q من الصيغة غير القياسية إلى الصيغة القياسية.

إذا كان R < 0 فإن Q : = Q 1 و R : = R + D -- مطلوب فقط إذا كان الباقي هو المطلوب. نهاية الشرط

الباقي الفعلي هو R >> n. (كما هو الحال مع القسمة الاسترجاعية، يتم استخدام البتات ذات الترتيب الأدنى من R بنفس معدل إنتاج بتات ناتج القسمة Q، ومن الشائع استخدام مسجل إزاحة واحد لكليهما.)

قسم SRT

تُعدّ قسمة SRT طريقة شائعة للقسمة في العديد من تطبيقات المعالجات الدقيقة . [ 9 ] [ 10 ] سُمّيت الخوارزمية نسبةً إلى دي دبليو سويني من شركة IBM ، وجيمس إي روبرتسون من جامعة إلينوي ، وكيه دي توشر من إمبريال كوليدج لندن . وقد طوّروا جميعًا الخوارزمية بشكل مستقل في نفس الفترة الزمنية تقريبًا (نُشرت في فبراير 1957، وسبتمبر 1958، ويناير 1958 على التوالي). [ 11 ] [ 12 ] [ 13 ]

القسمة SRT تشبه القسمة غير المستعادة، ولكنها تستخدم جدول بحث يعتمد على المقسوم والمقسوم عليه لتحديد كل رقم من أرقام ناتج القسمة.

يتمثل الاختلاف الأهم في استخدام تمثيل زائد للناتج. فعلى سبيل المثال، عند تطبيق قسمة SRT ذات الأساس 4، يُختار كل رقم من أرقام الناتج من بين خمسة احتمالات: -2، -1، 0، +1، أو +2. ولهذا السبب، لا يشترط أن يكون اختيار رقم الناتج مثاليًا؛ إذ يمكن للأرقام اللاحقة تصحيح الأخطاء الطفيفة. (على سبيل المثال، زوجا أرقام الناتج (0،  +2) و(1،  -2) متكافئان، لأن 0 × 4 + 2 = 1 × 4 - 2 ). يسمح هذا التسامح باختيار أرقام الناتج باستخدام عدد قليل فقط من البتات الأكثر أهمية في المقسوم والمقسوم عليه، بدلًا من الحاجة إلى طرح كامل العرض. وهذا التبسيط بدوره يسمح باستخدام أساس أكبر من 2.

مثل القسمة غير المستعادة، فإن الخطوات النهائية هي طرح كامل العرض لحل بت القسمة الأخير، وتحويل القسمة إلى الشكل الثنائي القياسي.

كان سبب خطأ قسمة الأعداد العشرية الشهير في معالج إنتل بنتيوم الأصلي هو جدول بحث مُبرمج بشكل خاطئ. استخدمت معالجات بنتيوم جدولًا مكونًا من 2048 خلية، وكان من المفترض ملء 1066 خلية منها، ولكن تم حذف قيم من خمس خلايا عن طريق الخطأ. [ 14 ] [ 15 ] [ 16 ]

طرق القسمة السريعة

تقسيم نيوتن-رافسون

تستخدم طريقة نيوتن-رافسون طريقة نيوتن لإيجاد مقلوبد{\displaystyle D}واضرب ذلك المقلوب فيشمال{\displaystyle N}لإيجاد ناتج القسمة النهائيسؤال{\displaystyle Q}.

خطوات قسمة نيوتن-رافسون هي:

  1. احسب تقديرًاX0{\displaystyle X_{0}}للمقابل1/د{\displaystyle 1/D}من المقسوم عليهد{\displaystyle D}.
  2. حساب تقديرات أكثر دقة بشكل متتابعX1،X2،...،XS{\displaystyle X_{1},X_{2},\ldots ,X_{S}}من المقلوب. وهنا يتم استخدام طريقة نيوتن-رافسون على هذا النحو.
  3. احسب ناتج القسمة بضرب المقسوم في مقلوب المقسوم عليه:سؤال=شمالXS{\displaystyle Q=NX_{S}}.

من أجل تطبيق طريقة نيوتن لإيجاد مقلوبد{\displaystyle D}، من الضروري إيجاد دالةو(X){\displaystyle f(X)}الذي يحتوي على صفر فيX=1/د{\displaystyle X=1/D}الدالة الواضحة من هذا النوع هيو(X)=دX-1{\displaystyle f(X)=DX-1}لكن تكرار نيوتن-رافسون لهذا الأمر غير مفيد، لأنه لا يمكن حسابه دون معرفة مقلوبه مسبقًا.د{\displaystyle D}(علاوة على ذلك، تحاول هذه الطريقة حساب المقلوب الدقيق في خطوة واحدة، بدلاً من السماح بالتحسينات التكرارية). إحدى الدوال التي تعمل بشكل صحيح هيو(X)=(1/X)-د{\displaystyle f(X)=(1/X)-D}، والتي تعطيها عملية التكرار نيوتن-رافسون

Xأنا+1=Xأنا-و(Xأنا)و(Xأنا)=Xأنا-1/Xأنا-د-1/Xأنا2=Xأنا+Xأنا(1-دXأنا)=Xأنا(2-دXأنا)،{\displaystyle X_{i+1}=X_{i}-{f(X_{i}) \over f'(X_{i})}=X_{i}-{1/X_{i}-D \over -1/X_{i}^{2}}=X_{i}+X_{i}(1-DX_{i})=X_{i}(2-DX_{i}),}

والتي يمكن حسابها منXأنا{\displaystyle X_{i}}باستخدام الضرب والطرح فقط، أو باستخدام عمليتي الضرب والجمع المدمجتين .

من وجهة نظر حسابية، فإن التعبيراتXأنا+1=Xأنا+Xأنا(1-دXأنا){\displaystyle X_{i+1}=X_{i}+X_{i}(1-DX_{i})}وXأنا+1=Xأنا(2-دXأنا){\displaystyle X_{i+1}=X_{i}(2-DX_{i})}ليست متكافئة. للحصول على نتيجة بدقة 2^ n بت مع استخدام التعبير الثاني، يجب حساب حاصل الضرب بينXأنا{\displaystyle X_{i}}و(2-دXأنا){\displaystyle (2-DX_{i})}بدقة مضاعفة لـXأنا{\displaystyle X_{i}}( ن بت). في المقابل، يكون الناتج بينXأنا{\displaystyle X_{i}}و(1-دXأنا){\displaystyle (1-DX_{i})}يكفي حسابها بدقة n بت، لأن البتات n الأولى (بعد الفاصلة الثنائية) من(1-دXأنا){\displaystyle (1-DX_{i})}هي أصفار.

إذا تم تعريف الخطأ على النحو التاليεأنا=1-دXأنا{\displaystyle \varepsilon _{i}=1-DX_{i}}، ثم:

εأنا+1=1-دXأنا+1=1-د(Xأنا(2-دXأنا))=1-2دXأنا+د2Xأنا2=(1-دXأنا)2=εأنا2.{\displaystyle {\begin{aligned}\varepsilon _{i+1}&=1-DX_{i+1}\\&=1-D(X_{i}(2-DX_{i}))\\&=1-2DX_{i}+D^{2}X_{i}^{2}\\&=(1-DX_{i})^{2}\\&={\varepsilon _{i}}^{2}.\\\end{aligned}}}

يؤدي تربيع الخطأ في كل خطوة تكرارية - ما يُعرف بالتقارب التربيعي لطريقة نيوتن-رافسون - إلى مضاعفة عدد الأرقام الصحيحة في النتيجة تقريبًا مع كل تكرار ، وهي خاصية بالغة الأهمية عندما تحتوي الأعداد المعنية على العديد من الأرقام (كما هو الحال في مجال الأعداد الصحيحة الكبيرة). ولكن هذا يعني أيضًا أن التقارب الأولي للطريقة قد يكون بطيئًا نسبيًا، خاصةً إذا كانت التقديرات الأولية  X0{\displaystyle X_{0}}اختيار سيء.

التقدير الأولي

بالنسبة للمسألة الفرعية المتمثلة في اختيار تقدير أوليX0{\displaystyle X_{0}}من الملائم تطبيق إزاحة بتية على المقسوم عليه D لتغيير مقياسه بحيث يكون 0.5  D ≤ 1. تطبيق الإزاحة البتية نفسها على البسط N يضمن عدم تغيير الناتج. بمجرد الوصول إلى نطاق محدود، يمكن استخدام تقريب متعدد الحدود بسيط لإيجاد تقدير أولي.   

التقريب الخطي ذو أقل خطأ مطلق في أسوأ الحالات على الفترة[0.5،1]{\displaystyle [0.5,1]}يكون:

X0=4817-3217د.{\displaystyle X_{0}={48 \over 17}-{32 \over 17}D.}

معاملات التقريب الخطيتي0+تي1د{\displaystyle T_{0}+T_{1}D}يتم تحديدها على النحو التالي. القيمة المطلقة للخطأ هي|ε0|=|1-د(تي0+تي1د)|{\displaystyle |\varepsilon _{0}|=|1-D(T_{0}+T_{1}D)|}يتم تحديد الحد الأدنى للقيمة المطلقة القصوى للخطأ بواسطة نظرية تشيبيشيف للتوازن المطبق علىF(د)=1-د(تي0+تي1د){\displaystyle F(D)=1-D(T_{0}+T_{1}D)}الحد الأدنى المحلي لـF(د){\displaystyle F(D)}يحدث ذلك عندماF(د)=0{\displaystyle F'(D)=0}، والذي له حلد=-تي0/(2تي1){\displaystyle D=-T_{0}/(2T_{1})}يجب أن تكون إشارة الدالة عند تلك القيمة الدنيا معاكسة لإشارة الدالة عند نقطتي النهاية، أيF(1/2)=F(1)=-F(-تي0/(2تي1)){\displaystyle F(1/2)=F(1)=-F(-T_{0}/(2T_{1}))}للمعادلتين في المجهولين حل وحيدتي0=48/17{\displaystyle T_{0}=48/17}وتي1=-32/17{\displaystyle T_{1}=-32/17}، والخطأ الأقصى هوF(1)=1/17{\displaystyle F(1)=1/17}باستخدام هذا التقريب، تكون القيمة المطلقة لخطأ القيمة الأولية أقل من

|ε0|1170.059.{\displaystyle \vert \varepsilon _{0}\vert \leq {1 \over 17}\approx 0.059.}

أفضل معادلة تربيعية لـ1/د{\displaystyle 1/D}في الفترة

X:=14033-6411د+25699د2.{\displaystyle X:={\frac {140}{33}}-{\frac {64}{11}}D+{\frac {256}{99}}D^{2}.}

تم اختيار هذه الطريقة لجعل الخطأ مساويًا لكثير حدود تشيبيشيف من الدرجة الثالثة المعاد قياسها من النوع الأول، مما يعطي قيمة مطلقة للخطأ أقل من أو تساوي 1/99. هذا التحسين يعادلسجل2(سجل99/سجل17)0.7{\displaystyle \log _{2}(\log 99/\log 17)\approx 0.7}تكرارات نيوتن-رافسون، بتكلفة حسابية أقل من تكرار واحد.

من الممكن توليد معادلة متعددة الحدود من الدرجة الثانية أو أعلى، وذلك بحساب المعاملات باستخدام خوارزمية ريميز . ويكمن المقابل في أن التخمين الأولي يتطلب دورات حسابية أكثر، ولكن يُؤمل أن يكون ذلك في المقابل بتقليل عدد تكرارات خوارزمية نيوتن-رافسون.

بما أن التقارب في هذه الطريقة يكون تربيعيًا تمامًا، فإنه يترتب على ذلك أنه، انطلاقًا من خطأ أوليε0{\displaystyle \varepsilon _{0}}،S{\displaystyle S}ستعطي التكرارات إجابة دقيقة لـ

P=-2Sسجل2ε0-1=2Sسجل2(1/ε0)-1{\displaystyle P=-2^{S}\log _{2}\varepsilon _{0}-1=2^{S}\log _{2}(1/\varepsilon _{0})-1}

المنازل الثنائية. القيم النموذجية هي:

الأرقام الثنائية ذات الدقة المتبادلة
ε0{\displaystyle \varepsilon _{0}}التكرارات
01234
1/17{\displaystyle 1/17}3.097.1715.3531.7064.40
1/99{\displaystyle 1/99}5.6312.2625.5252.03105.07

يُعدّ التقدير الأولي التربيعي بالإضافة إلى تكرارين كافيًا لدقة IEEE المفردة ، بينما يُعدّ ثلاثة تكرارات غير كافية للدقة المزدوجة . أما التقدير الأولي الخطي بالإضافة إلى أربعة تكرارات فهو كافٍ لكل من صيغتي الدقة المزدوجة والمزدوجة الموسعة .

الشفرة الزائفة

يحسب ما يلي ناتج قسمة N و D بدقة P خانة ثنائية:

عبّر عن D بالصيغة M × 2e حيث 1 M < 2 (تمثيل الفاصلة العائمة القياسي) D'  := D / 2e+1 // مقياس بين 0.5 و1، يمكن إجراؤه باستخدام إزاحة البتات / طرح الأس N'  := N / 2e +1 X  := 48/17 − 32/17 × D' // حساب الثوابت مسبقًا بنفس دقة D كررسجل2P+1سجل217{\displaystyle \left\lceil \log _{2}{\frac {P+1}{\log _{2}17}}\right\rceil \,}يمكن حساب الأوقات مسبقًا بناءً على قيمة P ثابتة . X := X + X × (1 - D' × X) نهاية الإرجاع N' × X

على سبيل المثال، بالنسبة لعملية قسمة الفاصلة العائمة ذات الدقة المزدوجة، تستخدم هذه الطريقة 10 عمليات ضرب، و9 عمليات جمع، و2 عملية إزاحة.

التكرار التكعيبي

هناك تكرار يستخدم ثلاث عمليات ضرب لتكعيب الخطأ:

εأنا=1-دXأنا{\displaystyle \varepsilon _{i}=1-DX_{i}}
Yأنا=Xأناεأنا{\displaystyle Y_{i}=X_{i}\varepsilon _{i}}
Xأنا+1=Xأنا+Yأنا+Yأناεأنا.{\displaystyle X_{i+1}=X_{i}+Y_{i}+Y_{i}\varepsilon _{i}.}

مصطلح Y i ε i جديد.

بتوسيع ما سبق،Xأنا+1{\displaystyle X_{i+1}}يمكن كتابتها على النحو التالي

Xأنا+1=Xأنا+Xأناεأنا+Xأناεأنا2=Xأنا+Xأنا(1-دXأنا)+Xأنا(1-دXأنا)2=3Xأنا-3دXأنا2+د2Xأنا3،{\displaystyle {\begin{aligned}X_{i+1}&=X_{i}+X_{i}\varepsilon _{i}+X_{i}\varepsilon _{i}^{2}\\&=X_{i}+X_{i}(1-DX_{i})+X_{i}(1-DX_{i})^{2}\\&=3X_{i}-3DX_{i}^{2}+D^{2}X_{i}^{3},\end{aligned}}}

ونتيجة لذلك، فإن حد الخطأ

εأنا+1=1-دXأنا+1=1-3دXأنا+3د2Xأنا2-د3Xأنا3=(1-دXأنا)3=εأنا3.{\displaystyle {\begin{aligned}\varepsilon _{i+1}&=1-DX_{i+1}\\&=1-3DX_{i}+3D^{2}X_{i}^{2}-D^{3}X_{i}^{3}\\&=(1-DX_{i})^{3}\\&=\varepsilon _{i}^{3}.\end{aligned}}}

هذا يمثل 3/2 من حساب التكرار التربيعي، ولكنه يحققسجل3/سجل21.585{\displaystyle \log 3/\log 2\approx 1.585}يُحقق هذا الأسلوب نفس القدر من التقارب، لذا فهو أكثر كفاءةً بشكل طفيف. بعبارة أخرى، يؤدي تكراران لهذا الأسلوب إلى رفع الخطأ إلى القوة التاسعة بنفس التكلفة الحسابية لثلاثة تكرارات تربيعية، والتي ترفع الخطأ إلى القوة الثامنة فقط.

عدد البتات الصحيحة بعدS{\displaystyle S}التكرارات هي

P=-3Sسجل2ε0-1=3Sسجل2(1/ε0)-1{\displaystyle P=-3^{S}\log _{2}\varepsilon _{0}-1=3^{S}\log _{2}(1/\varepsilon _{0})-1}

المنازل الثنائية. القيم النموذجية هي:

بعض الدقة المتبادلة
ε0{\displaystyle \varepsilon _{0}}التكرارات
0123
1/17{\displaystyle 1/17}3.0911.2635.79109.36
1/99{\displaystyle 1/99}5.6318.8958.66177.99

يُوفر التقدير الأولي التربيعي بالإضافة إلى تكرارين تكعيبيين دقة كافية للحصول على نتيجة ذات دقة مزدوجة وفقًا لمعيار IEEE. كما يُمكن استخدام مزيج من التكرارات التربيعية والتكعيبية.

يضمن استخدام تكرار تربيعي واحد على الأقل أن يكون الخطأ موجبًا، أي أن المقلوب يُقلل من قيمته الحقيقية. [ 17 ] : 370 وهذا يُسهّل خطوة التقريب اللاحقة إذا لزم الحصول على ناتج قسمة مقرب بدقة.

يؤدي استخدام كثيرات الحدود ذات الدرجة الأعلى في التهيئة أو التكرار إلى تدهور الأداء لأن عمليات الضرب الإضافية المطلوبة يمكن استغلالها بشكل أفضل في إجراء المزيد من التكرارات.

قسم غولدشميت

تستخدم عملية القسمة لجولدشميت [ 18 ] (نسبة إلى روبرت إليوت جولدشميت) [ 19 ] عملية تكرارية لضرب كل من المقسوم والمقسوم عليه بشكل متكرر بعامل مشترك F i ، يتم اختياره بحيث يتقارب المقسوم عليه إلى 1. وهذا يؤدي إلى تقارب المقسوم إلى ناتج القسمة المطلوب Q :

سؤال=شمالدF1F1F2F2F...F....{\displaystyle Q={\frac {N}{D}}{\frac {F_{1}}{F_{1}}}{\frac {F_{2}}{F_{2}}}{\frac {F_{\ldots }}{F_{\ldots }}}.}

خطوات تقسيم غولدشميت هي:

  1. قم بإنشاء تقدير لعامل الضرب F i .
  2. اضرب المقسوم والمقسوم عليه في F i .
  3. إذا كان المقسوم عليه قريبًا بما فيه الكفاية من 1، فأرجع المقسوم، وإلا، فانتقل إلى الخطوة 1.

بافتراض أن N / D قد تم تغيير مقياسها بحيث يكون 0  < D < 1، فإن كل F i يعتمد على D :   

Fأنا+1=2-دأنا.{\displaystyle F_{i+1}=2-D_{i}.}

ينتج عن ضرب المقسوم والمقسوم عليه في العامل ما يلي:

شمالأنا+1دأنا+1=شمالأنادأناFأنا+1Fأنا+1.{\displaystyle {\frac {N_{i+1}}{D_{i+1}}}={\frac {N_{i}}{D_{i}}}{\frac {F_{i+1}}{F_{i+1}}}.}

بعد عدد كافٍ k من التكراراتسؤال=شمالك{\displaystyle Q=N_{k}}.

تُستخدم طريقة غولدشميت في معالجات AMD Athlon والطرازات الأحدث منها. [ 20 ] [ 21 ] تُعرف أيضًا باسم خوارزمية أندرسون إيرل غولدشميت باورز (AEGP) وتُطبّق في العديد من معالجات IBM . [ 22 ] [ 23 ] على الرغم من أنها تتقارب بنفس معدل تقارب تطبيق نيوتن-رافسون، إلا أن إحدى مزايا طريقة غولدشميت هي إمكانية إجراء عمليات الضرب في البسط والمقام بالتوازي. [ 23 ]

نظرية ذات الحدين

يمكن استخدام طريقة غولدشميت مع عوامل تسمح بالتبسيطات باستخدام نظرية ذات الحدين . افترضشمال/د{\displaystyle N/D}تم تعديلها بضربها في قوة العدد اثنين بحيثد(12،1]{\displaystyle D\in \left({\tfrac {1}{2}},1\right]}نختارد=1-x{\displaystyle D=1-x}وFأنا=1+x2أنا{\displaystyle F_{i}=1+x^{2^{i}}}وهذا ينتج عنه

شمال1-x=شمال(1+x)1-x2=شمال(1+x)(1+x2)1-x4==سؤال=شمال=شمال(1+x)(1+x2)(1+x2(ن-1))د=1-x2ن1{\displaystyle {\frac {N}{1-x}}={\frac {N\cdot (1+x)}{1-x^{2}}}={\frac {N\cdot (1+x)\cdot (1+x^{2})}{1-x^{4}}}=\cdots =Q'={\frac {N'=N\cdot (1+x)\cdot (1+x^{2})\cdot \cdot \cdot (1+x^{2^{(n-1)}})}{D'=1-x^{2^{n}}\approx 1}}}.

بعد n خطوة(x[0،12)){\displaystyle \left(x\in \left[0,{\tfrac {1}{2}}\right)\right)}المقام1-x2ن{\displaystyle 1-x^{2^{n}}}يمكن تقريبها إلى1 مع خطأ نسبي

εن=سؤال-شمالسؤال=x2ن{\displaystyle \varepsilon _{n}={\frac {Q'-N'}{Q'}}=x^{2^{n}}}

وهو الحد الأقصى عند2-2ن{\displaystyle 2^{-2^{n}}}متىx=12{\displaystyle x={\tfrac {1}{2}}}وبالتالي توفير حد أدنى من الدقة2ن{\displaystyle 2^{n}}الأرقام الثنائية.

طرق الأعداد الصحيحة الكبيرة

لا تتناسب الطرق المصممة للتنفيذ على الأجهزة عمومًا مع الأعداد الصحيحة التي تحتوي على آلاف أو ملايين الأرقام العشرية؛ وتحدث هذه الأعداد بكثرة، على سبيل المثال، في عمليات الاختزال المعيارية في علم التشفير . بالنسبة لهذه الأعداد الصحيحة الكبيرة، تُحوّل خوارزميات القسمة الأكثر كفاءة المسألة إلى استخدام عدد قليل من عمليات الضرب، والتي يمكن إجراؤها باستخدام خوارزمية ضرب فعالة تقاربياً مثل خوارزمية كاراتسوبا ، أو ضرب توم-كوك، أو خوارزمية شونهاج-ستراسن . والنتيجة هي أن التعقيد الحسابي للقسمة يكون من نفس رتبة (حتى ثابت ضربي) تعقيد الضرب. تشمل الأمثلة الاختزال إلى الضرب باستخدام طريقة نيوتن كما هو موضح أعلاه ، [ 24 ] بالإضافة إلى قسمة بيرنيكل-زيغلر الأسرع قليلاً ، [ 25 ] وخوارزميات اختزال باريت ومونتغمري . [ 26 ] طريقة نيوتن فعالة بشكل خاص في السيناريوهات التي يجب فيها القسمة على نفس القاسم عدة مرات، لأنه بعد عملية نيوتن العكسية الأولية، لا يلزم سوى عملية ضرب واحدة (مقتطعة) لكل قسمة.

القسمة على ثابت

القسمة على ثابت D تُكافئ الضرب في مقلوبه . بما أن المقام ثابت، فإن مقلوبه (1/ D ) ثابت أيضًا. لذا، يُمكن حساب قيمة (1/ D ) مرة واحدة أثناء الترجمة، ثم إجراء عملية الضرب N · (1/ D ) أثناء التشغيل بدلًا من القسمة N / D. في حسابات الفاصلة العائمة، لا يُمثل استخدام (1/ D ) مشكلة تُذكر، [ أ ] ولكن في حسابات الأعداد الصحيحة ، ستكون قيمة المقلوب دائمًا صفرًا (بافتراض أن | D | > 1).

ليس من الضروري استخدام (1/ D ) تحديدًا؛ يمكن استخدام أي قيمة ( X / Y ) تُختزل إلى (1/ D ). على سبيل المثال، للقسمة على 3، يمكن استخدام العوامل 1/3، 2/6، 3/9، أو 194/582. بالتالي، إذا كانت Y قوة للعدد 2، فإن خطوة القسمة ستُختزل إلى إزاحة بت سريعة إلى اليمين. تأثير حساب N / D على النحو ( N · X )/ Y يستبدل القسمة بالضرب والإزاحة. لاحظ أن الأقواس مهمة، لأن N · ( X / Y ) ستكون قيمتها صفرًا.

مع ذلك، ما لم يكن D نفسه قوةً للعدد اثنين، فلا يوجد X و Y يحققان الشروط المذكورة أعلاه. لحسن الحظ، فإن ( N · X ) / Y تعطي نفس نتيجة N / D في الحساب الصحيح حتى عندما لا يساوي ( X / Y ) تمامًا 1 / D ، ولكنه "قريب بما يكفي" بحيث يكون الخطأ الناتج عن التقريب في البتات التي يتم تجاهلها بواسطة عملية الإزاحة. [ 27 ] [ 28 ] [ 29 ] يستخدم اختزال باريت قوى العدد 2 لقيمة Y لجعل القسمة على Y مجرد إزاحة بسيطة إلى اليمين. [ ب ]

كمثال عملي على العمليات الحسابية ذات الفاصلة الثابتة ، بالنسبة للأعداد الصحيحة غير الموقعة ذات 32 بت، يمكن استبدال القسمة على 3 بالضرب في 2863311531 / 2 ^ 33 ، وهو ضرب موسع في 2863311531 ( بالنظام الست عشري 0xAAAAAAAB) متبوعًا بإزاحة 33 بتًا إلى اليمين. تُحسب قيمة 2863311531 كـ 2 ^ 33 / 3 ، ثم تُقرّب إلى الأعلى. وبالمثل، يمكن التعبير عن القسمة على 10 بالضرب في 3435973837 (0xCCCCCCCD) متبوعًا بالقسمة على 2^ 35 (أو إزاحة 35 بتًا إلى اليمين). [ 31 ] : ص230-234 يوفر OEIS تسلسلات الثوابت للضرب كـ A346495 وللإزاحة إلى اليمين كـ A346496 .

بالنسبة لعملية القسمة العامة للأعداد الصحيحة غير الموقعة ذات x بت حيث لا يكون المقسوم عليه D قوة من قوى العدد 2، فإن المتطابقة التالية تحول عملية القسمة إلى عمليتي جمع/طرح لـ x بت، وعملية ضرب واحدة لـ x بت في x بت (حيث يتم استخدام النصف العلوي فقط من النتيجة)، وعدة عمليات إزاحة، بعد الحساب المسبق.ك=x+سجل2د{\displaystyle k=x+\lceil \log _{2}{D}\rceil }وأ=2كد-2x{\displaystyle a=\left\lceil {\frac {2^{k}}{D}}\right\rceil -2^{x}}:

شمالد=شمال-ب2+ب2ك-x-1 أين ب=شمالأ2x{\displaystyle \left\lfloor {\frac {N}{D}}\right\rfloor =\left\lfloor {\frac {\left\lfloor {\frac {N-b}{2}}\right\rfloor +b}{2^{k-x-1}}}\right\rfloor {\text{ where }}b=\left\lfloor {\frac {Na}{2^{x}}}\right\rfloor }

في بعض الحالات، يمكن إنجاز القسمة على ثابت في وقت أقل بتحويل عملية "الضرب في ثابت" إلى سلسلة من عمليات الإزاحة والجمع أو الطرح . [ 32 ] ومن الأمثلة المهمة القسمة على 10، حيث يتم الحصول على الناتج الدقيق، مع وجود الباقي إن لزم الأمر. [ 33 ]

خطأ التقريب

عند إجراء عملية القسمة، يكون الناتج الدقيق هوq{\displaystyle q}والباقير{\displaystyle r}يتم تقريب القيم لتتناسب مع حدود دقة الحاسوب. تنص خوارزمية القسمة على ما يلي:

[أ=بq+ر]{\displaystyle [a=bq+r]}

أين0ر<|ب|{\displaystyle 0\leq r<|b|}.

في الحساب ذي الفاصلة العائمة ، يكون ناتج القسمةq{\displaystyle q}يتم تمثيله على النحو التالي:q~{\displaystyle {\tilde {q}}}والباقير{\displaystyle r}مثلر~{\displaystyle {\tilde {r}}}مما يؤدي إلى أخطاء التقريبϵq{\displaystyle \epsilon _{q}}وϵر{\displaystyle \epsilon _{r}}:

[q~=q+ϵq][ر~=ر+ϵر]{\displaystyle [{\tilde {q}}=q+\epsilon _{q}][{\tilde {r}}=r+\epsilon _{r}]}

يُسبب هذا التقريب خطأً بسيطًا، قد ينتشر ويتراكم عبر العمليات الحسابية اللاحقة. تبرز هذه الأخطاء بشكل خاص في العمليات التكرارية وعند طرح قيم متقاربة جدًا، ويُطلق على هذه العملية اسم فقدان الدلالة الإحصائية . وللحد من هذه الأخطاء، تُستخدم تقنيات مثل استخدام أرقام حماية أو دقة أعلى (أو دقة اختيارية ). [ 34 ] [ 35 ]

انظر أيضاً

ملحوظات

  1. على الرغم من أن المشكلة "الصغيرة" التي يسببها التحسين، إلا أن هذا التحسين المتبادل لا يزال عادة ما يكون مخفيًا خلف علامة "الرياضيات السريعة" في المترجمات الحديثة لأنه غير دقيق.
  2. تقوم المترجمات الحديثةعادةً بإجراء تحسين الضرب والإزاحة للأعداد الصحيحة؛ ومع ذلك، بالنسبة للثابت الذي لا يُعرف إلا في وقت التشغيل، يجب على البرنامج تنفيذ التحسين بنفسه. [ 30 ]

مراجع

  1. روديهيفر، توماس ل. (26-08-2008). قسمة الأعداد الصحيحة البرمجية (ملف PDF) (تقرير فني). مايكروسوفت للأبحاث، وادي السيليكون.
  2. قارن: في الإجراء divide_unsigned ،denominatorيجب أن تكون القيمة موجبة تمامًا .
  3. شيبردسون، جيه سي ؛ ستورجيس، إتش إي (1963). "قابلية حساب الدوال التكرارية" . مجلة رابطة آلات الحوسبة . 10 (2): 217-255 . doi : 10.1145/321160.321170 .
  4. كاتلاند، نايجل (1980). قابلية الحوسبة: مقدمة في نظرية الدوال التكرارية (ملف PDF) . مطبعة جامعة كامبريدج . ص 12. ISBN  9780521223843تم الاطلاع عليه بتاريخ 16-09-2025 .
  5. يعمل الكود على "محاكي URM" . كلية أوكسيدنتال، لوس أنجلوس . محاكي آلة التسجيل غير المحدودة (URM) - وهو "آلة تسجيل غير محدودة افتراضية". تم تصميمه وفقًا لمواصفات URM الواردة في كتاب نايجل ج. كاتلاند، "الحوسبة: مقدمة في نظرية الدوال التكرارية"، الصادر عن مطبعة جامعة كامبريدج.
  6. موريس، جيمس إي؛ إنيفسكي، كريستوف (22-11-2017). دليل تطبيقات الأجهزة النانوإلكترونية . مطبعة سي آر سي. رقم ISBN 978-1-351-83197-0.
  7. شو، روبرت ف. (1950). "العمليات الحسابية في الحاسوب الثنائي" . مراجعة الأدوات العلمية . 21 (8): 690. رمز Bibcode : 1950RScI...21..687S . doi : 10.1063/1.1745692 . ISSN 0034-6748 . مؤرشف من الأصل بتاريخ 28-02-2022 . تم الاسترجاع بتاريخ 28-02-2022 . 
  8. فلين. "ستانفورد EE486 (القسمة الحسابية المتقدمة للحاسوب) - ملخص الفصل 5 (القسمة)" (ملف PDF) . جامعة ستانفورد . مؤرشف (ملف PDF) من الأصل بتاريخ 18 أبريل 2022. تم الاطلاع عليه بتاريخ 24 يونيو 2019 . 
  9. هاريس، ديفيد ل.؛ أوبرمان، ستيوارت ف.؛ هورويتز، مارك أ. (9 سبتمبر 1998). قسم SRT: البنى والنماذج والتطبيقات (ملف PDF) (تقرير فني). جامعة ستانفورد. مؤرشف (ملف PDF) من الأصل في 24 ديسمبر 2016. تم الاطلاع عليه في 23 ديسمبر 2016 .
  10. ماكان، مارك؛ بيبنجر، نيكولاس (2005). "خوارزميات قسمة SRT كنظم ديناميكية" . مجلة SIAM للحوسبة . 34 (6): 1279-1301 . CiteSeerX 10.1.1.72.6993 . doi : 10.1137/S009753970444106X . hdl : 2429/12179 . مؤرشف من الأصل في 24 أغسطس 2022. تم الاسترجاع في 24 أغسطس 2022 . 
  11. كوك، جون؛ سويني، د. و. (11 فبراير 1957)، الحساب عالي السرعة في جهاز متوازٍ (مذكرة الشركة)، آي بي إم، ص 20، مؤرشف من الأصل في 24 أغسطس 2022 ، تم استرجاعه في 24 أغسطس 2022 {{citation}}: CS1 maint: موقع الناشر مفقود ( رابط )
  12. روبرتسون، جيمس (1958-09-01). "فئة جديدة من طرق القسمة الرقمية". معاملات معهد مهندسي الكهرباء والإلكترونيات في الحواسيب الإلكترونية . EC-7 (3). IEEE: 218–222 . Bibcode : 1958IRTEC...7..218R . doi : 10.1109/TEC.1958.5222579 . hdl : 2027/uiuo.ark:/13960/t0gt7529c .
  13. توشر، ك. د. (1958-01-01). "تقنيات الضرب والقسمة للحواسيب الثنائية الآلية" . المجلة الفصلية للميكانيكا والرياضيات التطبيقية . 11 (3): 364-384 . doi : 10.1093/qjmam/11.3.364 . مؤرشف من الأصل في 2022-08-24 . تم الاسترجاع في 2022-08-24 .
  14. "التحليل الإحصائي لعيوب الفاصلة العائمة" . شركة إنتل. 1994. مؤرشف من الأصل في 23 أكتوبر 2013. تم الاطلاع عليه في 22 أكتوبر 2013 .
  15. أوبرمان، ستيوارت ف.؛ فلين، مايكل ج. (يوليو 1995). تحليل خوارزميات القسمة وتطبيقاتها (ملف PDF) (تقرير فني). جامعة ستانفورد. CSL-TR-95-675. مؤرشف (ملف PDF) من الأصل بتاريخ 17 مايو 2017. تم الاطلاع عليه بتاريخ 23 ديسمبر 2016 .
  16. شريف، كين (28 ديسمبر 2024). "خطأ إنتل الذي كلّفها 475 مليون دولار: السيليكون وراء خلل قسم بنتيوم" . رايتو . تم الاطلاع عليه بتاريخ 30 ديسمبر 2024 .
  17. إرسيجوفاك، ميلوش د.؛ لانغ، توماس (2004). "الفصل 7: المقلوب. القسمة، الجذر التربيعي للمقلوب، والجذر التربيعي بالتقريب التكراري". الحساب الرقمي . مورغان كوفمان. ص 367-395 . ISBN  1-55860-798-6.
  18. غولدشميت، روبرت إي. (1964). تطبيقات القسمة بالتقارب (ملف PDF) (رسالة ماجستير). رسالة ماجستير. معهد ماساتشوستس للتكنولوجيا OCLC 34136725. مؤرشفة ( ملف PDF) من الأصل بتاريخ 10 ديسمبر 2015. تم الاطلاع عليها بتاريخ 15 سبتمبر 2015 . 
  19. "المؤلفون" . مجلة آي بي إم للبحوث والتطوير . 11 : 125-127 . 1967. doi : 10.1147/rd.111.0125 . مؤرشف من الأصل في 18 يوليو 2018.
  20. أوبرمان، ستيوارت ف. (1999). "خوارزميات القسمة والجذر التربيعي للأعداد العشرية وتنفيذها في معالج AMD-K7" (ملف PDF) . وقائع الندوة الرابعة عشرة لمعهد مهندسي الكهرباء والإلكترونيات حول الحساب الحاسوبي (رقم التصنيف 99CB36336) . الصفحات 106-115 . doi : 10.1109/ARITH.1999.762835 . ISBN  0-7695-0116-8S2CID 12793819. مؤرشف (PDF) من الأصل بتاريخ 29-11-2015 . تم الاطلاع عليه بتاريخ 15-09-2015 . 
  21. سودركويست، بيتر؛ ليسر، ميريام (يوليو-أغسطس 1997). "القسمة والجذر التربيعي: اختيار التنفيذ الأمثل" . IEEE Micro . 17 (4): 56-66 . Bibcode : 1997IMicr..17d..56S . doi : 10.1109/40.612224 .
  22. إس إف أندرسون، جي جي إيرل، آر إي غولدشميت، دي إم باورز. وحدة تنفيذ الفاصلة العائمة IBM 360/370 طراز 91 ، مجلة IBM للبحوث والتطوير ، يناير 1997
  23. 1 2 غاي، إيفن؛ بيتر، سيدل؛ فيرغسون، وارن (1 فبراير 2005). "تحليل خطأ بارامتري لخوارزمية قسمة غولدشميت" . مجلة علوم الحاسوب والنظم . 70 (1): 118-139 . doi : 10.1016/j.jcss.2004.08.004 .
  24. هاسلستروم، كارل (2003). القسمة السريعة للأعداد الصحيحة الكبيرة: مقارنة بين الخوارزميات (ملف PDF) (رسالة ماجستير في علوم الحاسوب). المعهد الملكي للتكنولوجيا. مؤرشف من الأصل (ملف PDF) بتاريخ 8 يوليو 2017. تم الاطلاع عليه بتاريخ 8 يوليو 2017 .
  25. ^ يواكيم زيغلر، كريستوف بورنيكل (1998)، قسم العود السريع ، معهد ماكس بلانك للمعلوماتية، أرشفة من النسخة الأصلية بتاريخ 2011-04-26 ، استرجاعها 2021-09-10{{citation}}: CS1 maint: موقع الناشر مفقود ( رابط )
  26. باريت، بول (1987). "تطبيق خوارزمية تشفير المفتاح العام لريفست شامير وأدلمان على معالج إشارات رقمية قياسي" . وقائع مؤتمر التطورات في علم التشفير - CRYPTO '86 . لندن، المملكة المتحدة: سبرينغر-فيرلاغ. الصفحات 311-323 . ISBN  0-387-18047-8.
  27. غرانلوند، توربيورن؛ مونتغمري، بيتر ل. (يونيو 1994). "القسمة على الأعداد الصحيحة الثابتة باستخدام الضرب" (ملف PDF) . نشرة SIGPLAN . 29 (6): 61-72 . CiteSeerX 10.1.1.1.2556 . doi : 10.1145/773473.178249 . مؤرشف (PDF) من الأصل بتاريخ 2019-06-06 . تم الاطلاع عليه بتاريخ 2015-12-08 . 
  28. مولر، نيلز؛ غرانلوند، توربيورن (فبراير 2011). " تحسين القسمة على الأعداد الصحيحة الثابتة" (ملف PDF) . معاملات IEEE في الحوسبة . 60 (2): 165-175 . رمز Bibcode : 2011ITCmp..60..165M . doi : 10.1109/TC.2010.143 . S2CID 13347152. مؤرشف (PDF) من الأصل بتاريخ 22-12-2015 . تم الاسترجاع بتاريخ 08-12-2015 . 
  29. ridiculous_fish. "عملية القسمة (الحلقة الثالثة): قسمة أسرع على الثوابت بدون إشارة" مؤرشف بتاريخ 2022-01-08 في Wayback Machine . 2011.
  30. ridicual_fish. "libdivide، قسمة الأعداد الصحيحة المُحسّنة" . مؤرشف من الأصل في 23 نوفمبر 2021. تم الاطلاع عليه في 6 يوليو 2021 .
  31. وارن الابن، هنري س. (2013). متعة المخترق ( الطبعة الثانية). أديسون ويسلي - بيرسون للتعليم، المحدودة. ISBN  978-0-321-84268-8.
  32. لابود، روبرت أ.؛ غولوفشينكو، نيكولاي؛ نيوتن، جيمس؛ وباركر، ديفيد؛ ماسميند: "القسمة الثنائية على ثابت" مؤرشف بتاريخ 9 يناير 2022 في أرشيف الإنترنت
  33. فاولز، ر. أ. (1992). "القسمة على 10". المجلة الأسترالية للحاسوب . 24 (3): 81-85 .
  34. ل. بوبياك، جيفري (يونيو 2000). "خطأ التقريب" . جامعة دريكسل .
  35. "9. أرقام الآلة، خطأ التقريب وانتشار الخطأ" . كلية تشارلستون . 8 فبراير 2021.

للمزيد من القراءة

  • سافارد، جون جي جي (2018) [2006]. "تقنيات حسابية متقدمة" . كوادريبلوك . مؤرشف من الأصل بتاريخ 3 يوليو 2018. تم الاطلاع عليه بتاريخ 16 يوليو 2018 .