ভাসমান পয়েন্ট গোলাকার


13

কোনও আইইইই-754৪ ভাসমান পয়েন্ট নম্বর <১ (যেমন একটি এলোমেলো সংখ্যার জেনারেটর দিয়ে উত্পাদিত হয় যা একটি সংখ্যা> = 0.0 এবং <1.0 জেনারেট করে) কোনও সংখ্যার (ভাসমান বিন্দু আকারে) দ্বারা গুণমানের সমান বা বড় পেতে কখনই কোনও সংখ্যার দ্বারা গুণিত হতে পারে? বৃত্তাকার কারণে পূর্ণসংখ্যা?

অর্থাত

double r = random() ; // generates a floating point number in [0, 1)
double n = some_int ;
if (n * r >= n) {
    print 'Rounding Happened' ;
}

এটি বলার সমতুল্য হতে পারে যে কোনও এন এবং আর এর অস্তিত্ব রয়েছে যে যদি আই সবচেয়ে বড় সংখ্যা 1 এর চেয়ে কম হয় যা আইইইই -754 তে প্রতিনিধিত্ব করা যায় তবে এন * আর> = এন (যেখানে * এবং> = উপযুক্ত আইইইইই- 754 অপারেটর)

এটি এই ডকুমেন্টেশন এবং পোস্টগ্র্যাসকিএল র্যান্ডম ফাংশনের উপর ভিত্তি করে এই প্রশ্ন থেকে আসে


আপনি এন এর ব্যাপ্তি সম্পর্কে কিছু বলতে পারেন, অর্থাৎ আইইইই -754 ডাবল-স্পষ্টতাতে হুবহু প্রতিনিধিত্ব করা কি যথেষ্ট ছোট?
— পেড্রো

@ পেড্রো এই বিশেষ ক্ষেত্রে, হ্যাঁ, এটি একটি ছোট পূর্ণসংখ্যা হবে - যেমন 10। আমি ধরে নিচ্ছি আপনি বলছেন যে এন যদি খুব বড় সংখ্যক উল্লেখযোগ্য সংখ্যার সাথে খুব বড় পূর্ণসংখ্যা হয় তবে এটি সঠিকভাবে উপস্থাপন করতে সক্ষম না হতে পারে?
— ক্যাড রক্স

হুবহু, যদি , তবে f l ( R × f l ( N ) ) আর এন এর চেয়ে বড় হতে পারে । fl(N)>Nfl(R×fl(N))RN
— পেড্রো

উত্তর:


8

রাউন্ড-টু-নিকটতম এবং সেই , তারপরে N ∗ R < N সর্বদা। (খুব বড় একটি পূর্ণসংখ্যার রূপান্তর না করার বিষয়ে সতর্ক হন))N>0N∗R<N

যাক , যেখানে সি ∈ [ 1 , 2 ) হ'ল তাত্পর্য এবং Q হল পূর্ণসংখ্যা ব্যয়কারী। যাক 1 - 2 - গুলি = আর ও বাঁধা আহরণc2−q=Nc∈[1,2)q1−2−s=R

NR=c2−q(1−2−s)≤c2−q−2−q−s,

সাম্যতার সাথে এবং যদি কেবল । ডানদিকে চেয়ে কম হয় এন এবং যেহেতু, 2 - কুই - গুলি ঠিক 0.5 শেষ জায়গায় ইউনিট এন , হয় গ = 1 এবং 2 - কুই - 2 - কুই - গুলি ঠিক representable (যেহেতু এন স্বাভাবিক এবং সবচেয়ে ছোটটি নয়) বা সি > 1 এবং নিকটতম বৃত্তাকারটি নিচে। উভয় ক্ষেত্রে, এন ∗ আর এন এর চেয়ে কম isc=1N2−q−s0.5Nc=12−q−2−q−sNc>1N∗RN।


Wardর্ধ্বমুখী রাউন্ডিং একটি সমস্যা তৈরি করতে পারে, এটি কখনও সন্দেহহীন ব্যবহারকারীদের উপস্থিতিতে নির্বাচন করা উচিত নয়। এখানে কিছু সি 99 রয়েছে যা "0\n1\n"আমার মেশিনে প্রিন্ট করে।

#include <fenv.h>
#include <math.h>
#include <stdio.h>

int main(void) {
    double n = 10;
    double r = nextafter(1, 0);
    printf("%d\n", n == (n * r));
    fesetround(FE_UPWARD);
    printf("%d\n", n == (n * r));
}

আমি দুঃখিত, এই দিনগুলিতে আমি কিছুটা ধীরে ধীরে - এই বৈষম্যের অংশ পেতে আমার সমস্যা হচ্ছে
-গ2-কুই2-গুলি≤-2-কুইগুলি
— ক্যাড রক্স

@ কেড আপাতদৃষ্টিতে আমি আজ বীজগণিত করতে পারি না। আমি বলতে চাইছি2-কুই-গুলি।
— টায়রোন

ধন্যবাদ, আমি নিশ্চিত ছিলাম না যে আমি আর কোনও পদক্ষেপ মিস করছি কিনা।
— কেড রক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.