সমানতার জন্য ভাসমান-পয়েন্ট সংখ্যাগুলির তুলনা করা যায় না এমন সাধারণ জ্ঞানটি সঠিক নয়। ভাসমান-পয়েন্ট সংখ্যাগুলি পূর্ণসংখ্যার চেয়ে পৃথক নয়: আপনি যদি "a == খ" মূল্যায়ন করেন তবে সেগুলি যদি অভিন্ন সংখ্যা এবং অন্যথায় মিথ্যা হয় তবে সত্য হবে (এই বোঝার সাথে যে দুটি এনএএন অবশ্যই অভিন্ন সংখ্যা নয়)।
আসল সমস্যাটি হ'ল: আমি যদি কিছু গণনা করেছি এবং আমি নিশ্চিত হতে পারি না যে দুটি সংখ্যার সাথে আমার তুলনা করতে হবে ঠিক সঠিক, তবে কী? এই সমস্যাটি ভাসমান-পয়েন্টের ক্ষেত্রে একই হিসাবে এটি পূর্ণসংখ্যার জন্য। যদি আপনি "7/3 * 3" পূর্ণসংখ্যাটি মূল্যায়ণ করেন তবে এটি "7 * 3/3" এর সাথে তুলনা করবে না।
সুতরাং ধরুন আমরা জিজ্ঞাসা করেছি "সাম্যের জন্য আমি কীভাবে পূর্ণসংখ্যার তুলনা করব?" এমন পরিস্থিতিতে কোন একক উত্তর নেই; আপনার কী করা উচিত তা নির্দিষ্ট পরিস্থিতির উপর নির্ভর করে, উল্লেখযোগ্যভাবে আপনার কী ধরণের ত্রুটি রয়েছে এবং আপনি কী অর্জন করতে চান।
এখানে কয়েকটি সম্ভাব্য পছন্দ রয়েছে।
আপনি যদি গাণিতিকভাবে সঠিক সংখ্যা সমান হয় তবে আপনি যদি "সত্য" ফলাফল পেতে চান তবে আপনি দুটি সংখ্যায় একই ত্রুটি পেয়েছেন তা প্রমাণ করার জন্য আপনি যে গণনা সম্পাদন করেছেন তার বৈশিষ্ট্যগুলি ব্যবহার করার চেষ্টা করতে পারেন। যদি এটি সম্ভব হয় এবং আপনি দুটি সংখ্যার সাথে তুলনা করেন যা এক্সপ্রেশন থেকে ফলাফল করে যা সঠিকভাবে গণনা করা হলে সমান সংখ্যা দেয় তবে আপনি তুলনা থেকে "সত্য" পাবেন। আরেকটি পদ্ধতি হ'ল আপনি গণনার বৈশিষ্ট্যগুলি বিশ্লেষণ করতে পারেন এবং প্রমাণ করতে পারেন যে ত্রুটিটি কোনও নির্দিষ্ট পরিমাণের বেশি হয় না, সম্ভবত একটি পরম পরিমাণ বা ইনপুটগুলির একটির বা আউটপুটগুলির সাথে সম্পর্কিত একটি পরিমাণ। সেক্ষেত্রে, আপনি গণনা করা দুটি সংখ্যা সর্বাধিক পরিমাণে পৃথক কিনা তা জিজ্ঞাসা করতে পারেন এবং যদি তারা ব্যবধানের মধ্যে থাকে তবে "সত্য" ফিরে আসতে পারেন। যদি আপনি কোনও ত্রুটি আবদ্ধ প্রমাণ করতে না পারেন, আপনি অনুমান করতে পারেন এবং সেরা আশা করি অনুমান করার একটি উপায় হ'ল অনেক এলোমেলো নমুনার মূল্যায়ন করা এবং ফলাফলগুলিতে আপনি কী ধরণের বিতরণ পান তা দেখতে।
অবশ্যই, যেহেতু আমরা কেবল এই প্রয়োজনীয়তাটি নির্ধারণ করেছি যে আপনি গাণিতিকভাবে সঠিক ফলাফল সমান হলে "সত্য" পেয়ে যাবেন, তাই অসম হলেও আপনি "সত্য" হওয়ার সম্ভাবনাটি আমরা ছেড়ে দিয়েছি। (প্রকৃতপক্ষে, আমরা সর্বদা "সত্য" ফেরত দিয়ে প্রয়োজনীয়তাটি পূরণ করতে পারি simple এটি গণনাটিকে সহজ করে তোলে তবে সাধারণত অনাকাঙ্ক্ষিত হয়, তাই আমি নীচের পরিস্থিতির উন্নতি নিয়ে আলোচনা করব))
আপনি যদি গাণিতিকভাবে সঠিক সংখ্যাটি অসম হলে "মিথ্যা" ফলাফল পেতে চান, আপনার যদি প্রমাণ করা দরকার যে গাণিতিকভাবে সঠিক সংখ্যাটি অসম হবে তবে সংখ্যার আপনার মূল্যায়নের বিভিন্ন সংখ্যা পাওয়া যায়। অনেক সাধারণ পরিস্থিতিতে ব্যবহারিক উদ্দেশ্যে এটি অসম্ভব হতে পারে। সুতরাং আসুন একটি বিকল্প বিবেচনা করা যাক।
একটি দরকারী প্রয়োজনীয়তা হ'ল আমরা যদি একটি "ভুয়া" ফলাফল পাই তবে যদি গাণিতিকভাবে সঠিক সংখ্যা নির্দিষ্ট পরিমাণের চেয়ে আলাদা হয়। উদাহরণস্বরূপ, সম্ভবত আমরা গণনা করতে যাচ্ছি যে কম্পিউটারের গেমটিতে ফেলে দেওয়া একটি বল কোথায় ভ্রমণ করেছিল এবং আমরা এটি জানতে চাই যে এটি কোনও ব্যাটে আঘাত করেছিল কিনা। এই ক্ষেত্রে, বলটি যদি ব্যাটে আঘাত করে তবে আমরা অবশ্যই "সত্য" পেতে চাই এবং বল যদি ব্যাট থেকে দূরে থাকে তবে আমরা "মিথ্যা" পেতে চাই এবং যদি বলটি থাকে তবে আমরা একটি ভুল "সত্য" উত্তর দিতে পারি একটি গাণিতিকভাবে সঠিক সিমুলেশন ব্যাট মিস করে তবে ব্যাটটি আঘাত করার এক মিলিমিটারের মধ্যে। সেক্ষেত্রে আমাদের প্রমাণ করতে হবে (বা অনুমান / অনুমান) যে আমাদের বলের অবস্থান এবং ব্যাটের অবস্থান গণনা করার ক্ষেত্রে সর্বাধিক এক মিলিমিটার (আগ্রহের সমস্ত অবস্থানের জন্য) এর সম্মিলিত ত্রুটি রয়েছে। এটি আমাদের সর্বদা ফিরে আসার অনুমতি দেবে "
সুতরাং, ভাসমান-পয়েন্ট সংখ্যাগুলির তুলনা করার সময় কী কী ফিরে আসবেন তা আপনি কীভাবে সিদ্ধান্ত নেবেন তা আপনার নির্দিষ্ট পরিস্থিতির উপর নির্ভর করে।
আপনি কীভাবে গণনার জন্য ত্রুটির সীমা প্রমাণ করতে যান, এটি একটি জটিল বিষয় হতে পারে। রাউন্ড-টু-নিকটতম মোডে আইইইই 754 মান ব্যবহার করে যে কোনও ফ্লোটিং-পয়েন্ট বাস্তবায়ন কোনও বুনিয়াদী ক্রিয়াকলাপের জন্য সঠিক ফলাফলের নিকটস্থ ভাসমান-পয়েন্ট নম্বর প্রদান করে (উল্লেখযোগ্যভাবে গুণ, বিভাগ, সংযোজন, বিয়োগ, বর্গমূল)। (টাইয়ের ক্ষেত্রে, গোলটি যাতে নিম্ন বিটটি সমান হয়)) (বর্গমূল এবং বিভাগ সম্পর্কে বিশেষভাবে সতর্ক থাকুন; আপনার ভাষা প্রয়োগের ক্ষেত্রে এমন পদ্ধতি ব্যবহার করা যেতে পারে যা আইআইইই 754 এর সাথে খাপ খায় না)) এই প্রয়োজনীয়তার কারণে, আমরা জানি একক ফলাফলের ত্রুটি হ'ল নূন্যতম উল্লেখযোগ্য বিটের মানের সর্বাধিক 1/2। (এটি যদি আরও বেশি হয় তবে গোলটি অন্য কোনও সংখ্যায় চলে যেত যা 1/2 মানের মধ্যে।
সেখান থেকে যাওয়া যথেষ্ট জটিল হয়ে যায়; পরবর্তী পদক্ষেপটি একটি অপারেশন করছে যেখানে ইতিমধ্যে ইনপুটগুলির মধ্যে একটিতে কিছু ত্রুটি রয়েছে। সাধারণ অভিব্যক্তির জন্য, এই ত্রুটিগুলি গণনার মাধ্যমে চূড়ান্ত ত্রুটির গণ্ডিতে পৌঁছতে অনুসরণ করা যেতে পারে। অনুশীলনে, এটি কেবল কয়েকটি পরিস্থিতিতে যেমন একটি উচ্চমানের গণিতের লাইব্রেরিতে কাজ করা হয়। এবং অবশ্যই, আপনার ঠিক কোনটি অপারেশন সঞ্চালিত হয় তার উপর নির্ভুল নিয়ন্ত্রণ প্রয়োজন। উচ্চ-স্তরের ভাষাগুলি প্রায়শই সংকলককে প্রচুর আলগা করে দেয়, তাই আপনি জানেন না যে কোন ক্রমের ক্রিয়াকলাপ হয়।
এই বিষয় সম্পর্কে আরও অনেক কিছুই লেখা যেতে পারে (এবং হয়) তবে আমাকে সেখানে থামতে হবে। সংক্ষেপে, উত্তরটি হল: এই তুলনা করার জন্য লাইব্রেরির কোনও রুটিন নেই কারণ কোনও একক সমাধান নেই যা বেশিরভাগ প্রয়োজনের সাথে খাপ খায় যা লাইব্রেরির রুটিনে রাখার মতো worth (যদি কোনও আপেক্ষিক বা পরম ত্রুটি ব্যবধানের সাথে তুলনা করা আপনার পক্ষে যথেষ্ট হয় তবে আপনি এটি লাইব্রেরির রুটিন ব্যতীত সহজভাবে করতে পারেন)