मैं एक मूल्य के साइन और सह-साइन दोनों को एक साथ गणना करना चाहता हूं (उदाहरण के लिए एक रोटेशन मैट्रिक्स बनाने के लिए)। बेशक, मैं उन्हें एक के बाद एक अलग-अलग तरह से गणना कर सकता था a = cos(x); b = sin(x);
, लेकिन मुझे आश्चर्य है कि क्या दोनों मूल्यों की आवश्यकता होने पर एक तेज़ तरीका है।
संपादित करें: अब तक के उत्तरों को संक्षेप में प्रस्तुत करने के लिए:
व्लाद ने कहा, कि
FSINCOS
दोनों के लिए एक हीकमांडकंप्यूटिंग है (लगभग एक ही समय मेंFSIN
अकेलेकॉल करने के लिए)जैसा कि ची ने देखा, यह अनुकूलन कभी-कभी कंपाइलर द्वारा किया जाता है (अनुकूलन झंडे का उपयोग करते समय)।
कैफे ने बताया, यह कार्य
sincos
औरsincosf
शायद उपलब्ध हैं और सीधे शामिल करके ही बुलाया जा सकता हैmath.h
एक नज़र तालिका का उपयोग करने के tanascius दृष्टिकोण विवादास्पद है। (हालांकि मेरे कंप्यूटर पर और एक बेंचमार्क परिदृश्य में यह
sincos
32-बिट फ़्लोटिंग पॉइंट के लिए लगभग एक ही सटीकता के साथ3 गुना तेज़ी से चलता है)।जोएल गुडविन काफी अच्छे सटीक (मेरे लिए, यह और भी तेज है तो टेबल लुक-अप) के साथ एक चरम तेजी से सन्निकटन तकनीक के एक दिलचस्प दृष्टिकोण से जुड़ा हुआ है।
sinx ~ x-x^3/6
और cosx~1-x^2/4
अनुमानों के रूप में आप सटीकता की तुलना में अधिक गति के बारे में परवाह है। आप सटीकता पर और अधिक भार डालते हुए या तो श्रृंखला में शब्दों को जोड़ सकते हैं ( en.wikipedia.org/wiki/Taylor_series taylor श्रृंखला को चालू करने के लिए नीचे स्क्रॉल करें।) ध्यान दें कि यह किसी भी फ़ंक्शन को अनुमानित करने का एक सामान्य तरीका है जिसे आप अलग-अलग समय पर चाहते हैं n
। इसलिए यदि आपके पास कुछ बड़ा कार्य है जो कि साइन और कोजाइन का है तो आपको एक बहुत बड़ी गति मिलेगी यदि आप इसे पाप के बजाय अनुमानित करते हैं, तो कॉस स्वतंत्र रूप से।
x
किसी बिंदु के करीब मूल्यों की आवश्यकता है x_0
, तो x_0
0. के बजाय अपनी टेलर श्रृंखला का विस्तार करें । यह आपको उत्कृष्ट सटीकता प्रदान करेगा x_0
लेकिन निकटवर्ती खराब परिणाम जाओ। आपने शायद सोचा कि सटीकता बेकार हो जाती है क्योंकि आपने दिए गए asnwer को देखा और इसे मूल्यों से दूर करने की कोशिश की 0
। यह जवाब पाप के साथ है, क्योंकि कॉस का विस्तार लगभग 0.