2 ** এক্স কি এক্সপ্রেস (এক্স) এর চেয়ে বেশি গতিযুক্ত?


12

নাভিকেটকে ক্ষমা করুন যা আমি এই প্রশ্নটি জিজ্ঞাসার সাথে সাথে যে বিষয়টি আমি জিজ্ঞাসা করছি তা স্পষ্ট হবে be

গণিতবিদরা সাধারণত (ক্যালকুলাসের কারণে) সবচেয়ে সহজ / সর্বোত্তম বেস হিসাবে এক্সপ ব্যবহার করেন । কিন্তু কম্পিউটার, বাইনারি মধ্যে সবকিছু করতে হবে বলে মনে হচ্ছে তাই গনা একটি মেশিনে দ্রুত এটা চেয়ে ?exp2**xMath::exp(x)


7
আপনি কোন নাম্বার নিয়ে কথা বলছেন? সালিশ আকারের পূর্ণসংখ্যা? স্থির আকারের ভাসমান পয়েন্ট? নির্বিচারে-নির্ভুলতা ভাসমান পয়েন্ট?
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

@ গিলস এটি একটি ভাল পয়েন্ট। পার্থক্যটি গুরুত্বপূর্ণ তা আমি বুঝতে পারি নি।
isomorphismes

3
আমি কিছু ক্যাসিও পকেট ক্যালকুলেটরগুলিতে দেখেছি যে কোনও নন-ই নম্বরের লগ এবং শক্তি লন / এক্সপ্রেটের তুলনায় অনেক ধীর
ফুচলভ

2
ভোঁতা হওয়ার ঝুঁকি নিতে, আপনি কি উভয়কেই সময় দেওয়ার চেষ্টা করেছেন এবং কোনটি দ্রুত? অথবা আপনি কোনও জটিলতার অর্থে গতির কথা বলছেন ? O(f(n))
jmite

1
দ্রুততম উপায়টি বেছে নেওয়ার জন্য ভাষাটি দায়িত্বে রয়েছে এবং এটিতে ভাল কাজ করবে। কেবলমাত্র যদি সর্বাধিক গতি প্রয়োজন হয় এবং পরিমাপগুলি দেখিয়েছে যে এটি এই কাজের জন্য প্রাসঙ্গিক আপনি যদি এই ধরণের স্টাফ সম্পর্কে উদ্বিগ্ন হন
ভোনব্র্যান্ড

উত্তর:


18

যেহেতু এটি সিএস এবং স্ট্যাকওভারফ্লো নয়, আমি ধরে নেব যে আপনি সংখ্যার বিশ্লেষণ সম্পর্কে একটি প্রশ্ন জিজ্ঞাসা করছেন, এবং (বিষয়গুলিকে সহজ রাখতে) বিশেষত আইইইই -754 ভাসমান পয়েন্ট। সেক্ষেত্রে আপনার প্রশ্নের উত্তর আংশিকভাবে "সহজ" দ্বারা আপনি কী বোঝায় তার উপর এবং আংশিকভাবে সিস্টেমের বিশদগুলির উপর নির্ভর করে।

আমি যে আধুনিক সিপিইউ সম্পর্কে অবগত সে সম্পর্কে কোনও নির্দেশিকা তৈরি করা নেই যা আপনি অপারেশন (যার পরে আমরা কল করব , এর সি এর সাধারণ নাম) বা 2 x ( ) এর জন্য ঠিক তেমনটাই প্রত্যাশা করে যা আপনি চান । এগুলি উভয়ই গ্রন্থাগারের ফাংশন ব্যবহার করে প্রয়োগ করা হয়।exexp2xexp2

ট্রান্সসেন্টালেন্টাল ক্রিয়াকলাপের জন্য সমস্ত সংখ্যাসূচক পদ্ধতিগুলির ক্ষেত্রে যেমনটি বিবেচনার জন্য কয়েকটি বিশেষ বিষয় রয়েছে:

exp(NaN) = NaN
exp(+Inf) = +Inf
exp(-Inf) = 0

তবে, আরও একটি জিনিস রয়েছে যা সমস্যাটিকে কিছুটা কম জটিল করে তোলে: দরকারী ডোমেনটি বেশ ছোট। বাইনারি 32 এর জন্য, x < - 104 বা তার বেশি exp(x)হলে আন্ডারফ্লোস এবং x > 88.7 বা আরও বেশি হলে ওভারফ্লো হয় । ট্রান্সসেন্টালেন্টাল অপারেশনের জন্য অস্বাভাবিকভাবে, আমরা অস্বাভাবিক ক্ষেত্রে অবহেলা করতে পারি, যেহেতু যদি এটি অস্বাভাবিক হয় তবে তার থেকে আলাদা করা যায় না । উপরের সমস্তটির জন্যও সত্য , ব্যতীত ডোমেনটি কিছুটা আলাদা।x<104x>88.7exp(x)1.0xexp2

আপনার অন্তর্নিহিতটি বেশিরভাগ বাস্তবায়ন গণনা । যাইহোক, সেই গুণটির ব্যয় 1 করেex=2x/ln2 তুলনায় ln 2 তুচ্ছ। একটি সাধারণ পদ্ধতিতেকেউপাদানগুলিরসাথে প্রাক্পম্পিউটেড টেবিল ব্যবহারকরে:1ln2exp2K

exp2(x)=2n×T[j]×P(y)

যেখানে এর পূর্ণসংখ্যা অংশ এক্স টেবিলের টি মান ধারণ করে 2 / কে সবার জন্য সীমার মধ্যে [ 0 , কে ) , এবং পি কিছু বহুপদী পড়তা হয় 2 x এর (গণিত চতুর্ঘাত সমীকরণ হয় সীমার মধ্যে binary32 জন্য যথেষ্ট) [ 0 , 1nxT2j/Kj[0,K)P2x2এনযেহেতু এটি শুধু সূচক সাধিত অংশ, সস্তা। টিহল একটি সারণী। সুতরাংপিসম্ভবত অপারেশন ব্যয়বহুল অংশ হতে পারে।[0,1K)2nTP

আমি সম্পূর্ণতার জন্য নির্দেশ করা উচিত যে ইন্টেল এক্স 86 FPUs একটি নির্দেশ নামক অন্তর্ভুক্ত f2xm1, যা নির্ণয় জন্য এক্স সীমার মধ্যে [ - 1 , 1 ] । তবে, একটি আধুনিক সিপিইউতে এটি মোটামুটি ব্যয়বহুল এবং পাইপলাইনযুক্ত নির্দেশ নয় এবং আপনি এটি ব্যবহার থেকে নিরুৎসাহিত হয়েছেন। ইন্টেল অপটিমাইজেশন রেফারেন্স হিসাবে ম্যানুয়াল বিভাগ 3.8.5 যথাযথভাবে নোট করে:2x1x[1,1]

যদিও x87 ট্রান্সেন্ডেন্টাল নির্দেশাবলীর সমর্থন করে তবে সফ্টওয়্যার লাইব্রেরি ট্রান্সেন্ডেন্টাল ফাংশনের বাস্তবায়ন অনেক ক্ষেত্রে দ্রুততর হতে পারে।

সম্পাদনা করুন: মন্তব্যগুলিতে এটি ইঙ্গিত করা হয়েছে যে আইইইই 754-2008 এ ব্যবহৃত কিছু নতুন পরিভাষা আমার ব্যাখ্যা করা উচিত। 1985 এবং 1987 সাল থেকে কিছু ভাষার পরিবর্তন হয়েছে এবং বেশিরভাগ লোকেরা পুরানো জারগনের সাথে অনেক বেশি পরিচিত।

"বাইনারি 32" এবং "বাইনারি 64" পদগুলি 32-বিট এবং 64-বিট বাইনারি ভাসমান-পয়েন্ট সংখ্যাগুলির নতুন নাম, যা পুরানো স্ট্যান্ডার্ডকে যথাক্রমে "একক" এবং "ডাবল" বলে।

"সাবমনরমাল নাম্বার" শব্দটি আগের শব্দটিকে "ডেনারমাল সংখ্যা" বা "ডেনারমালাইজড নম্বর" প্রতিস্থাপন করে ।


আপনি যখন "সাবমনরমাল" বলবেন - আপনি স্পষ্টভাবে "উপ-গাউসিয়ান" অর্থ বোঝায় না; আপনি কি "[আদর্শের কিছু মানদণ্ড] এর চেয়ে খারাপ" মানে?
isomorphismes

2
@ আইসোমরফিস্মস, এখানে 'সাবমনোরম' ফ্লোটগুলি কীভাবে প্রয়োগ করা হয় সে সম্পর্কে। উইকিপিডিয়ায় ডেনরমাল নম্বর দেখুন ।
পল মানতা

ঘটনাক্রমে, আমি "সাধারণ পদ্ধতি" এর সামান্য কিছুটা বড় করেছিলাম। এখানে উপস্থাপিত পদ্ধতিতে মাত্র একটি ছোট (এবং বোঝার পক্ষে সহজ) এক্সটেনশনটি ব্যবহার করে উলপ নির্ভুলতার সাথে এক্সপ 2 () এবং এক্সপ () এক্সপ্লোর করা সম্ভব তবে ছোট-সহজে বোঝার এক্সটেনশনের ব্যাখ্যা সম্ভবত দৈর্ঘ্য দ্বিগুণ করবে উত্তর!
ছদ্মনাম

6

2**x2x<<1 << x


4
আসলে না। এক্স হতে পারে একটি ভাসমান-পয়েন্ট টাইপ
ফুলচলভি

1
x

যদি xকোনও পূর্ণসংখ্যা না হয় (বলুন 20.75), আপনি মান্টিসাকে 2এবং খাঁটিটিকে xসুনির্দিষ্ট নির্ভুল অনুমান হিসাবে নির্ধারণ করবেন (সঠিক প্রতিনিধিত্ব সম্ভব নয়)। যা খুব `পাওয়ারের চেয়েও দ্রুত ´
দামন

1

যদি 2**xপূর্ণসংখ্যার উপর কোনও ফাংশন হয় তবে আমি স্টিফেনের উত্তরের সাথে একমত, শিফটটি সস্তা। কিন্তু আমি সাধারণত যেমন দেখি যে 2^x**ফ্লোটিং পয়েন্ট exponentiation ইঙ্গিত। এই ক্ষেত্রে আমি মধ্যে অনুরূপ কর্মক্ষমতা আশা **এবং ^উভয় থেকে expএবং pow(জন্য অন্তর্নিহিত অপারেশন **) উভয় তুরীয় পড়তা অপারেশন হয়।


মজার বিষয়, আমি জানি না **যে ভাসমান-পয়েন্ট সংস্করণের প্রতিশব্দ হিসাবে বিবেচিত হত (এবং, আমাকে নির্বোধ, আমি ভুলে গিয়েছিলাম যে দুটি আলাদা হবে)।
isomorphismes

1

2 ^ x = e ^ (x * ln 2) এবং e ^ x = 2 ^ (x * লগ 2 (ই)) থেকে, আপনি খুব বেশি পার্থক্য আশা করবেন না।

শূন্যের কাছাকাছি এক্সের জন্য, সাধারণত একটি বহুবর্ষীয় ই ^ x = 1 + x + x ^ 2/2 + x ^ 3/6 ... ব্যবহার করা হবে, গোলাকার ত্রুটিটি ছোট রেখে যত তাড়াতাড়ি সম্ভব কেটে ফেলার জন্য সুন্দরভাবে অনুকূলিত । স্পষ্টত 2 ^ x গণনা করা খুব ক্ষুদ্র, ক্ষুদ্র বিট। "x এর কাছাকাছি" সাধারণত x এর মান হবে যেখানে স্কয়ার্ট (1/2) <= ই ^ x <= স্কয়ার্ট (2)। এক্সের সীমাবদ্ধতা সীমাবদ্ধ করে তা নিশ্চিত করে যে বহুপাক্ষিক ডিগ্রি খুব বেশি নির্বাচনের দরকার নেই।

বড় x এর জন্য, একটি সাধারণত x = x '+ x' 'দিয়ে 2 by x গণনা করতে পারে, যেখানে x' একটি পূর্ণসংখ্যা এবং -0.5 <= x '' <= 0.5 হয়। 2 ^ x 'এর পরে ডান বিট প্যাটার্ন সহ একটি ভাসমান পয়েন্ট সংখ্যা এবং ছোট x এর জন্য e ^ x পদ্ধতি ব্যবহার করে 2 ^ x' 'গণনা করে গণনা করা হবে। এখানে, 2 ^ x একটি সামান্য বিট দ্রুত। তদুপরি, যদি x লার্গিশ হয় (x = 100.3 বলুন), কেবল লগ 2 (ই) দ্বারা এক্স গুণ করা একটি অগ্রহণযোগ্য গোলাকার ত্রুটি প্রবর্তন করবে (কারণ অনেকগুলি কম ভগ্নাংশ বিট রয়েছে), তাই আরও যত্ন নেওয়া দরকার to

এবং আশা করি একটি ভাল গ্রন্থাগার ফাংশনটি খেয়াল করবে যে যখনই x <= y, e ^ x <= e ^ y এবং 2 ^ x <= 2 ^ y, বৃত্তাকার ত্রুটিগুলি যাই হোক না কেন। এই ধরণের জিনিস অর্জন করা জটিল হতে পারে।


0

আপনি বুঝতে পেরেছেন যে কম্পিউটারে গণিতটি বিভিন্ন সফটওয়্যার দ্বারা বিভিন্ন উপায়ে সম্পন্ন হয়, আশা করা যায় ধারাবাহিক উত্তর নিয়ে আসছি। বেশিরভাগ সফ্টওয়্যারটির দিকে তাকিয়ে আমার মনে হয় কম্পিউটারগুলি কম্পিউটার - কম্পিউটারের মতো আচরণ করে এবং উত্তরটি 0 ^ 0 এর মতো করেও প্রায় দীর্ঘ পথ গণনা করবে। সমস্যাটি হ'ল বিশেষ ক্ষেত্রে "স্বীকৃতি" জড়িত যা ডিজিটাল কম্পিউটারগুলিতে বিনামূল্যে হয় না। এর অর্থ হ'ল কেবলমাত্র সেই ক্ষেত্রে যেখানে উত্তর থাকলে জিনিসগুলি "সর্বাধিক" গতি বাড়িয়ে দেবে অপটিমাইজেশন ঘটে। তবে সেই ক্ষেত্রে এটি অত্যন্ত ভালভাবে ঘটবে। এছাড়াও লক্ষ করুন যে সঠিক উত্তর পেতে বেশ কয়েকটি ভিন্ন স্বীকৃতি দিতে হবে। একে স্পিড অপ্টিমাইজেশন স্তর বলা হয় এবং এটি জিএনইউ "সি" নামক বেশিরভাগ সফ্টওয়্যারটির ভিত্তিতে সর্বাধিক পেশাদার পরিসীমাতে এসেছিল। এটি কারণ এখানে সফ্টওয়্যার থেকে সফ্টওয়্যার এবং মেশিন থেকে মেশিনে রান সময় ব্যবস্থার কয়েক মিনিটের পার্থক্য সেখানে মান গ্রহণযোগ্যতার পরিসংখ্যান হিসাবে ব্যবহৃত হয়। অন্যান্য দোভাষীগুলিতে সাধারণত কেবল তখনই যদি "শূন্য পতাকা" পূর্ববর্তী গণনার পার্শ্ব প্রতিক্রিয়া হিসাবে ঘটে তখন স্বীকৃতি সম্পাদনের গতি বাড়ানো হবে। যেমন 0 * x => সি 0।

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