 موڈیول 53 ہے About Floating Point Exceptions. Floating Point Exceptions صرف تب ہی کروں گی اگر آپ Floating Point Numbers کے ساتھ کام کریں اگر آپ کے پاس ایسے Variables ہیں جو Floating Point ہیں اور ان کے اوپر آپ Floating Point کے اوپر اراثمیٹیک Operations پر فام کریں جیسے Divided, Multiplied وغیرہ ہو گئے کس طرح کی Floating Point Exceptions ہو ستنی ہے جو آپ Floating Point Numbers کے ساتھ کام کرتے ہیں نو مختلف کسم کے اراثمیٹیک Errors دا ستنے ہیں For example, اگر آپ ایک Floating Point کو کسی ایک Variable سے Divided کریں اور جو Variable ہے وہ 0 بھی کبھی ہو سکتا تو اگر وہ Variable کسی بای چانس اگر 0 ہو جائے تو Divided by 0 کا اراثر ہو گا اسی طرح Divided over Flow کا اراثر ہو سکتا Under Flow کا اراثر ہو سکتا Over Flow کا اراثر ہو سکتا تو مختلف کسم کے اراثمیٹیک Operations پر فام کر رہے ہوتے ہیں جو کیا کر رہے ہوتے ہیں اور اگر Floating Points کے ساتھ کام کر رہے ہیں تو آپ کو پھر اس کے لیے اس طرح کی Exceptions کو Catch کرنے کی ضرورت پڑھ سکتی ہے By default جو ہے Windows کے اندر اگر آپ ایک Windows کی اپلیکشن بنا رہے ہیں تو اس کے اندر عام طور پر وہ اپلیکشن Floating Point Exceptions کو Catch نہیں کرتی لیکن اگر آپ نے SPECIFICALLY Floating Point Operations پر فام کرنے تو آپ کو یہ اس کی ابلیٹی انیبل کرنے پڑے گی By default جو Floating Point Exceptions ہیں وہ Disabled ہیں ایسا کرنے کے لیے کیا چیز use ہو گی Of course اس کے لیے Windows ایک API پروائیٹ کرتی ہے اس API کی مدرس سے آپ Floating Point Exceptions جو ہے ان کو Enable کر سکتے ہیں اس API کا کیا نام ہے ControlFP Floating Point FP is for Floating Point فلوٹنگ پائٹ Exceptions کو کنٹرول کرنے کے لیے یہ API use ہوتی ہے اور اس کی مدرس سے آپ Floating Point Exceptions کو Enable یا Disabled کر سکتے ہیں جو Floating Point Exceptions کو کنٹرول کرنے Windows ویسکلی یہ ایک Machine Independent Framework ہے اس کے اندرزوری نہیں ہے کہ ہمیشنہ جو مشین ہے انٹلیوں کوئی اور مشین جو ہے اس کے اوپر بھی یہ Operating System work کر سکتا اس کی Implementation کیا دفرنت ہوگی لیکن یہ Design S3 کیسے کیا گیا ہے کہ آپ کی جو Applications ہیں وہ Applications کی Code جو ہے وہ Change Now اگر آپ Underline Hardware کو Change کر داتے ہیں کہاں اگر انٹل ڈیوز کر رہے ہیں یا ARM ڈیوز کر رہے ہیں ایک جو آپ کی ڈیوز کی Code ہے say in C Language اس کے اندر کوئی ڈیوز نہیں آئے گا just Compiler ڈیوز میں بھی ہو سکتا ہے different for Intel ARM کے لیے different compiler رو Code آپ کی وہی رہے گی وہی Code جو ہے انٹل کیلی بھی work کرے گی وہی Code ARM کیلی بھی work کرے گی تو اس کو کہتے ہیں Machine Independence تو Windows کے Internal Data Structures کے اندر ہی ایک Machine Independent Floating Point status word ہوتا تو status word کو چینج کرنے کے لیے یہ API ڈیوز ہوتی ہے Ctrl Fp تو Programmatic ڈیوز کے لیے اگر آپ نے Exceptions کو Enable کرنا تو اس کے لیے آپ یہ API ڈیوز کریں گے Ctrl Fp اس کے لیوہ Compiler ڈیوز کے اندر بھی کچھ option ہیں آپ ان کو بھی چینج کرکے Floating Point Exceptions جو ہے ان کو Enable کر سکتے ہیں آگے ہم یہ دیکھیں گے یہ والا جو function ہے Ctrl Fp اس کو ہم کس طریقے سے استعمال کرتے ہیں اس لائیڈ کے اندر آپ دیکھ سکتے ہیں کہ جو Ctrl Fp کا function ہے یہ ایک D word return کرتا اور دو D words as input لیتا New New بسکلی ایک Value ڈیوز سائیز کی اس کے اندر مختلف Bits ہیں اور ہر Bits یہ سپسفائے کرتا ہے کہ آپ نے کس طرح کی Exception کو Enable کرنا ہر Bits جو ہے وہ کسی ایک Exception کو Correspond کرتا ہے کچھ رہ اس کے اندر Reserve Bits بھی ہوں گے اس کے لیوہ ایک اور اس کے اندر Double Word ہے جو Masking کا کام کرے گا کئی کسم کی Exceptions ہے ایک وقت میں آپ کو ہر طرح کی Exceptions کی ضرورت نہیں پڑھتی جن SPECIFIC Exceptions کی آپ کو ضرورت پڑھتی ہے اس کے لیے Mask بنے ہوئے جو بھی آپ کو Exceptions چاہیے ہوں گی اس کے ایکارڈنگلی آپ Mask چوز کر سکتے ہیں وہ Windows.H کے اندر Defined ہے آپ ان کو Include کر کے اور اپنے Program کے اندر Use کر سکتے ہیں تو جب بھی آپ نے اگر کوئی اپنی نئی Value سیٹ کرنی ہے اور Floating Point Exceptions کو کنٹرول کرنے کے لیے تو اس کے لیے آپ کو دو چیزیں چاہیے ایک New Value چاہیے اور ایک Mask چاہیے یہ New Value اور Mask کا جو اپس میں Relationship ہے یہ آپ اس کے اندر دیکھ سکتے ہیں Slide کے اندر Case Equation کے اندر Defined ہے Current Mask جو بھی Mask کی Current Value ہوگی اس کا And Operation ہو رہا ہے with the Not of Mask اور پھر سارے کا Or Operation ہو رہا ہے with New and Mask Bitwise Handing ہو رہے ہیں یہاں یہ ControlFP کا Function جو ہے جب Flags کو Enable یا Disable کرتا ہے تو exactly وہ یہی Bitwise Operation پرفوم کرتا ہے اور اس کے Result میں جو بھی Value آتی ہے وہ نہیں Value سیٹ کرتا ہے Current Mask جو Flags کی Current Value ہے وہ Represents کر رہا ہے اور Mask جو بھی آپ SPECIFIC جن Exceptions کو Enable کرنا چاہ رہے ہیں اس کے Accordingly Value ہے تو آپ بس اپنی مرزی کے مطابقے جن جن آپ نے Exceptions کو Enable کرنا اس کے مطابق New کی Value ہوگی اور آپ نے Mask جن Subset of Exceptions کو Enable کرنا اس کے لیے آپ Mask چوز کریں گے یہ دو Value آپ اس کو Specify کریں گے اور یہ جو ہے Function Windows کے اندر Floting Point Exceptions جو ہے ان کو Enable کر دے گا پر اگر آپ نے Mask جو ہے اس کو سارے One's کرتی ہے FFF FFF اس کی آپ نے Value رکھ دی ہے تو جو Value سیٹ ہوگی اس Word کے اندر وہ وہی Value ہوگی جو New کی Value ہوگی According to that Logical Operation جو ہم نے Previously Discuss کیا اور اس کے لیے جو Mask Defined ہے Windows.h کے اندر اس کے اندر موست بھی جو آپ use کرے ہوگے باس MCW E M اس کے لیے وہ اور بھی کچھ Mask ہے عام طور پر Floting Point Operations کیلئے وہ rarely use ہوں گے آپ مزید اگر اس کی Detail جانا جاتے ہیں تو MSDN کے اندر آپ اس کی Detail مزید دیکھ سکتے ہیں کہ اور کون کون سے Mask Exist کرتے ہیں Once آپ Floting Point Exceptions کو Catch کرتے ہیں اور Catch کرنے کے بعد اس کو Process کرلتے ہیں تو آپ نے اس Flag کو یہ جو آپ نے Flag Set کیا تھے ان کو آپ نے Clear کرنا Clear کرنے کے لیے جو API use ہو رہی ہے وہ Clear FP ہے یہاں پہ ایک Template ہم دیکھ سکتے ہیں ایک Program کا Template ہے یہ Program Template جو یہ آپ کو بسکلی یہی شوہ کر رہا کہ آپ کیس طرح سے Floting Point Exceptions جو ہاں ان کو Enable کر سکتے ہیں اس کے اندر دیکھیں آپ نے پہلے Control FP کو 00 pass کیا ہے اس سے کیا ہوا کہ آپ کے پاس جو بھی اس کی Flags کی جو old value ہے وہ آپ کے پاس Return ہوگی ہے FP Old کے اندر آپ نے دیکھا تھا کہ Control FP کی ایک Return Value بھی ہے تو Return Value کے اندر وہ کیا Return کرتا ہے جو اس کی Previous Value ہوتی ہے وہ Previous Value Return ہوگی آپ نے اس Previous Value کو And کیا کس کے ساتھ New Value کے ساتھ آپ Overflow کا Error بھی چاہتے ہیں آپ Underflow بھی چاہتے ہیں آپ Inexact Exceptions بھی کچھ کرنا جاتے ہیں DeNormal Beid 0 Division by 0B اور Invalid Operation بھی ان سارے Mask کو کتھا کر کے اس کا Not لے کے آپ نے FP Old کے ساتھ اس کو And کر لیے آپ کے پاس آگیا FP New اب یہ جو New آپ کے پاس آئے یہ آپ Control FP کی مدہ سے New Value سیٹ کر سکتے ہیں اور یہاں پہاں اپنا Mask جو رکھیں گے وہ MCW EM رکھیں گے MCW EM وہ آپ کو بتایا ہے کہ ایک Subset Of Exceptions which are relevant to Floating point operations ان کو Enable کرنے کے لیے use ہوتا Once آپ نے this Control FP سے ایک Exceptions enable کر دی اب جب بھی آپ کو Floating Point Operations performs کرتے ہیں اور اس کی اندر کو Exceptions کتی ہے تو اس Exception کو آپ Catch کر سکتے ہیں آگیا جس طرح آپ دیکھنے ہیں یہ While کا Loop اس While کے Loop کی اندر آپ نے TRIED کیا TRIED کی اندر وہ ساری Code ہے جو Floating Point Operations Perform کر رہیے ہیں اگر ان فلوٹنگ پورٹنگ پوریشنز کے اندر کسی کسم کی کوئی ایکسپشنہ کر ہوتی ہے تو آپ کیا کر سکتے ہیں؟ آپ ایکسپٹ کے کلوز کے اندر ایکسپٹ کے بلوک کے اندر اس فلوٹنگ پوریشنز کو کچھ کر سکتے ہیں اور اس کو پروسس کر سکتے ہیں اور once جب وہ پروسس ہو جاتی ہے جو آپ نے رسورسز اکوائر کیے بہتے ہیں ان رسورسز کو آپ دیالوکیٹ کر دتے ہیں تو آپ نے کلیر ایپی بھی کرنا کلیر ایپی اس لیے کرنا ہے کہ اب آپ نے جو فلوٹنگ پوریشنز انیبل کیا ان کو واپس دیسیبل بھی کرنا اور جو پریویس اولڈ ویلیو تھی وہ ہم نے ایپی اولڈ کے اندر سیب کر لی تھی وہی ویلیو آپ نے سیٹ کر دینا ہے ساکے پکرام کی جو نورمل ایکسیکشنہ ہے وہ کانتینیو ہو سکے