আমি আইইইই -754 কমিটির সদস্য ছিলাম, আমি কিছুটা পরিষ্কার করার জন্য সাহায্য করার চেষ্টা করব।
প্রথমত, ভাসমান-পয়েন্ট সংখ্যাগুলি আসল সংখ্যা নয় এবং ভাসমান-পয়েন্ট পাটিগণিত বাস্তব গাণিতিকের অক্ষগুলি পূরণ করে না। ট্রাইকোটমি একমাত্র আসল পাটিগণিতের সম্পত্তি নয় যা ভাসমানদের জন্য ধারণ করে না, এমনকি এটি সবচেয়ে গুরুত্বপূর্ণও নয়। উদাহরণ স্বরূপ:
- সংযোজন সাহসী নয়।
- বিতরণ আইন হোল্ড করে না।
- বিপরীত ছাড়াই ভাসমান-পয়েন্ট সংখ্যা রয়েছে।
আমি যেতে পারে। একটি নির্দিষ্ট আকারের গাণিতিক ধরণের নির্দিষ্ট করা সম্ভব নয় যা সকলকে সন্তুষ্ট করেআমরা জানি এবং পছন্দ করি এমন আসল পাটিগণিতের সম্পত্তি । 754 টি কমিটি তাদের কয়েকটিকে বাঁকানো বা ভাঙার সিদ্ধান্ত নিতে হবে। এটি বেশ কয়েকটি সহজ সরল নীতি দ্বারা পরিচালিত:
- আমরা যখন পারি, আমরা বাস্তব পাটিগণ্যের আচরণের সাথে মেলে।
- যখন আমরা না পারি, আমরা লঙ্ঘনগুলি অনুমানযোগ্য এবং যতটা সম্ভব নির্ণয়ের জন্য সহজ করার চেষ্টা করি।
আপনার মন্তব্য সম্পর্কে "এর অর্থ এই নয় যে সঠিক উত্তরটি মিথ্যা", এটি ভুল। শিকারী (y < x)
জিজ্ঞাসা করে যে এর y
চেয়ে কম কিনা x
। যদি y
NaN হয়, তবে এটি কোনও ভাসমান-বিন্দু মানের চেয়ে কম নয়x
, সুতরাং উত্তরটি অবশ্যই অমূলক।
আমি উল্লেখ করেছি যে ট্রাইকোটমি ভাসমান-পয়েন্টের মানগুলিতে ধারণ করে না। তবে, এখানে একই জাতীয় সম্পত্তি রয়েছে যা হোল্ড করে। ধারা 5.11, 754-2008 স্ট্যান্ডার্ডের অনুচ্ছেদ 2:
চারটি পারস্পরিক একচেটিয়া সম্পর্ক সম্ভব: এর চেয়ে কম, সমান, বৃহত্তর এবং আনঅর্ডারার্ড। সর্বশেষ কেস দেখা দেয় যখন কমপক্ষে একটি অপারেন্ড নাএন হয়। প্রতিটি এনএএন নিজেকে সহ সমস্ত কিছুর সাথে আনর্ডার্ডের তুলনা করবে।
NaNs পরিচালনা করতে অতিরিক্ত কোড লেখার ক্ষেত্রে আপনার কোডটি এমনভাবে কাঠামো করা সাধারণত সম্ভব (যদিও সর্বদা সহজ নয়) যেভাবে NaN গুলি সঠিকভাবে পড়ে, তবে এটি সবসময় হয় না। যখন এটি না হয়, কিছু অতিরিক্ত কোডের প্রয়োজন হতে পারে, তবে বীজগণিত বন্ধটি ভাসমান-পয়েন্ট পাটিগণিতের কাছে নিয়ে আসা সুবিধার জন্য মূল্য দিতে খুব কম দাম price
সংযোজন: অনেক মন্তব্যকারী যুক্তি দেখিয়েছেন যে NaN অবলম্বন করার কারণে সমতা এবং ট্রাইকোটমির প্রতিচ্ছবি সংরক্ষণ করা আরও কার্যকর হবে! = NaN কোনও পরিচিত অক্ষর সংরক্ষণ করে বলে মনে হয় না। আমি এই দৃষ্টিভঙ্গির প্রতি কিছুটা সহানুভূতি রয়েছে বলে স্বীকার করছি, তাই আমি ভেবেছিলাম এই উত্তরটি আবার ঘুরে দেখব এবং আরও কিছু প্রসঙ্গ সরবরাহ করব।
কাহানের সাথে কথা বলা থেকে আমার বোঝা যায় যে NaN! = NaN দুটি বাস্তববাদী বিবেচনার মধ্য দিয়ে উদ্ভূত:
এটি যখনই সম্ভব x == y
সমতুল্য হওয়া উচিত x - y == 0
(আসল পাটিগণিতের উপপাদ্য হওয়ার বাইরে, এটি তুলনামূলকভাবে হার্ডওয়্যার বাস্তবায়নকে আরও স্থান-দক্ষ করে তোলে, যা মান বিকাশের সময় অত্যন্ত গুরুত্বপূর্ণ ছিল - নোট, তবে, এটি x এর জন্য লঙ্ঘিত হয়েছে = y = অনন্ত, সুতরাং এটি নিজেরাই একটি দুর্দান্ত কারণ নয়; এটি যুক্তিযুক্তভাবে বাঁকানো যেতে পারে (x - y == 0) or (x and y are both NaN)
)।
আরও গুরুত্বপূর্ণ বিষয়, সেই isnan( )
সময়টিতে কোনও পূর্বাভাস ছিল না যে 8087 গণিতগুলিতে NaN আনুষ্ঠানিকভাবে চালু হয়েছিল; প্রোগ্রামার ভাষাগুলির উপর নির্ভর করে না এমন এনএএন মানগুলি সনাক্ত করার একটি সুবিধাজনক এবং দক্ষ উপায় isnan( )
যা প্রোগ্রামার ভাষাগুলির উপর নির্ভর করে না যা অনেক বছর সময় নিতে পারে তার জন্য প্রোগ্রামার সরবরাহ করা প্রয়োজন ছিল । আমি এই বিষয়ে কাহানের নিজের লেখাটি উদ্ধৃত করব:
এনএএনগুলি থেকে মুক্তি পাওয়ার কোনও উপায় না থাকলে তারা সিআরএআই-তে ইন্ডাফিনাইটগুলির মতো অপদার্থ হবে; যতক্ষণ না কোনও মুখোমুখি হয়েছিল, অনির্দিষ্টকালের জন্য অনির্দিষ্টকালের জন্য অব্যাহত না রেখে গণনাটি ভালভাবে থামানো হবে। এ কারণেই NaN- এর উপর কিছু ক্রিয়াকলাপ অবশ্যই নন-এনএন-এর ফলাফল সরবরাহ করবে। কোন অপারেশন? … ব্যতিক্রমগুলি হ'ল সি x পূর্বাভাসগুলি হ'ল "x == x" এবং "x! = X", যা প্রতিটি অসীম বা সীমাবদ্ধ সংখ্যা x এর জন্য যথাক্রমে 1 এবং 0 হয় তবে x যদি নম্বর না হয় তবে বিপরীত হয় (এনএন); এগুলি NaN এবং একটি ভাষার ভবিষ্যদ্বাণীপূর্ণ ইসনন (এক্স) এর অভাবের জন্য ভাষার মধ্যে NaN এবং সংখ্যার মধ্যে একমাত্র সহজ অবাস্তব পার্থক্য সরবরাহ করে।
মনে রাখবেন যে এটি একটি যুক্তি যা "নোট-এ-বুলিয়ান" এর মতো কোনও কিছু ফেরত দেয় না। হতে পারে এই বাস্তববাদ ভুল জায়গায় প্রতিস্থাপন করা হয়েছিল, এবং মানটির প্রয়োজন হওয়া উচিতisnan( )
, তবে এটি বেশ কয়েক বছর ধরে কার্যকরভাবে এবং সুবিধামতোভাবে ব্যবহার করা নাএনকে প্রায় অসম্ভব করে দিয়েছিল যখন বিশ্ব প্রোগ্রামিং ভাষা গ্রহণের জন্য অপেক্ষা করেছিল। আমি বিশ্বাস করি না যে এটি একটি যুক্তিসঙ্গত বাণিজ্য ছিল।
ভোঁতা হতে: NaN == NaN এর ফলাফল এখন পরিবর্তন হবে না। ইন্টারনেটে অভিযোগ করার চেয়ে এর সাথে বাঁচতে শেখা ভাল। আপনি যুক্তি দিতে চাই যে একটা অর্ডার সম্পর্ক পাত্রে জন্য উপযুক্ত উচিত চান এছাড়াও বিদ্যমান, আমি সমর্থনে সুপারিশ করবে আপনার প্রিয় প্রোগ্রামিং ভাষা বাস্তবায়ন totalOrder
সম্পৃক্ত আইইইই-754 (2008) মধ্যে মান। এটি ইতিমধ্যে কাহানের উদ্বেগের বৈধতার সাথে কথা বলেনি যা বর্তমান পরিস্থিতি প্রেরণা জোগায়।
while (fabs(x - oldX) > threshold)
, যদি কনভার্জেশন ঘটে বা কোনও এনএএন গণনে প্রবেশ করে তবে লুপটি প্রস্থান করে। NaN সনাক্তকরণ এবং উপযুক্ত প্রতিকারটি তখন লুপের বাইরে ঘটে।