2012-03-25 44 views
5

के लिए जावास्क्रिप्ट कोड मैं एक अनुवादक विकसित कर रहा हूं जो जावास्क्रिप्ट स्रोत को लक्षित भाषा में परिवर्तित करता है। मैं लक्ष्य भाषा में जावास्क्रिप्ट के गणित वस्तु को लागू करने की कोशिश कर रहा हूं।मैथ ऑब्जेक्ट

यदि "गणित" ऑब्जेक्ट का जावास्क्रिप्ट कार्यान्वयन है, तो मैं लक्ष्य भाषा में समकक्ष कोड प्राप्त करने के लिए अनुवादक का उपयोग कर सकता हूं।

मैं कुछ इस तरह रहा हूँ:

var Math = { 
    pow: function(...) {...} 
    exp: function(...) {...} 
    /* other methods of Math */ 
} 

वहाँ इस प्रकार का कार्यान्वयन कि उपलब्ध है है? इससे मुझे लक्ष्य भाषा में गणित ऑब्जेक्ट के कोड को मैन्युअल रूप से लिखने में मदद मिलेगी।

+0

मुझे ऐसे कार्यान्वयन के बारे में पता नहीं है। –

उत्तर

4

गणित.जेएस के वी 8 कार्यान्वयन से आपको कुछ मार्गदर्शन मिल सकता है, लेकिन निश्चित रूप से यह मूल कार्य कॉल के लिए प्लेसहोल्डर्स के साथ झुका हुआ है। आपको लक्ष्य भाषा में उपयुक्त मानक लाइब्रेरी आधारित फ़ंक्शन कॉल के साथ %Math_floor(x) जैसी चीज़ों को प्रतिस्थापित करने में सक्षम होना होगा।

http://code.google.com/p/v8/source/browse/branches/bleeding_edge/src/math.js?spec=svn10758&r=10758

3

यह official ecmascript-262 specification से है:

नोट कार्यों acos के व्यवहार, असिन, atan, atan2, क्योंकि, exp, लॉग, पॉव, पाप, sqrt और तन नहीं ठीक है को छोड़कर यहां निर्दिष्ट कुछ तर्क मानों के विशिष्ट परिणामों की आवश्यकता है जो ब्याज के सीमा मामलों का प्रतिनिधित्व करते हैं। अन्य तर्क मानों के लिए, इन फ़ंक्शंस का उद्देश्य परिचित गणितीय कार्यों के परिणामों के अनुमानों की गणना करना है, लेकिन अनुमानित एल्गोरिदम की पसंद में कुछ अक्षांश की अनुमति है। सामान्य उद्देश्य यह है कि कार्यान्वयनकर्ता उस प्लेटफ़ॉर्म पर सी प्रोग्रामर के लिए उपलब्ध किसी दिए गए हार्डवेयर प्लेटफ़ॉर्म पर ECMAScript के लिए समान गणितीय लाइब्रेरी का उपयोग करने में सक्षम होना चाहिए।

हालांकि एल्गोरिदम के चुनाव कार्यान्वयन के लिए छोड़ दिया है, यह सिफारिश की है (लेकिन इस मानक द्वारा निर्दिष्ट नहीं) है कि कार्यान्वयन आईईईई 754 गणित fdlibm में निहित के लिए सन्निकटन एल्गोरिथम उपयोग करते हैं, स्वतंत्र रूप से वितरण योग्य गणितीय पुस्तकालय से सन माइक्रोसिस्टम्स (http://www.netlib.org/fdlibm)।

2

वस्तुओं आप की जरूरत है:

Math.exp(x) // Returns the value of Ex 

Math.pow(x,y) // Returns the value of x to the power of y 

इनके अतिरिक्त और भी आपकी मदद करेंगे जो कि आप जावा में की आवश्यकता होगी रहे हैं। वे

Math.PI   // returns PI 
Math.random();    // returns a random number 
Math.max(0, 150, 30, 20, -8, -200);  // returns 150 
Math.min(0, 150, 30, 20, -8, -200);  // returns -200 
Math.round(4.7);   // returns 5 
Math.round(4.4);   // returns 4