के लिए मूल कोड मैं सोच रहा था कि क्या कोई तरीका है कि मैं गणित वर्ग के मूल कोड तक पहुंच प्राप्त कर सकता हूं। अधिक विशेष रूप से मुझे पाप() विधि के लिए कोड देखने की आवश्यकता है।जावा गणित वर्ग
उत्तर
यह कार्यान्वयन-निर्भर है। के रूप में java.lang.Math
के लिए दस्तावेज़ में कहा गया है:
वर्ग
StrictMath
के संख्यात्मक तरीकों, वर्गMath
के बराबर सभी कार्यों के कार्यान्वयन के कुछ विपरीत बिट के लिए बिट एक ही परिणाम वापस जाने के लिए परिभाषित नहीं कर रहे हैं। यह छूट बेहतर प्रदर्शन करने वाले कार्यान्वयन की अनुमति देती है जहां सख्त पुनरुत्पादन की आवश्यकता नहीं होती है।... कोड जनरेटर को
Math
विधियों के उच्च-प्रदर्शन कार्यान्वयन प्रदान करने के लिए प्लेटफार्म-विशिष्ट देशी पुस्तकालयों या माइक्रोप्रोसेसर निर्देशों का उपयोग करने के लिए प्रोत्साहित किया जाता है। इस तरह के उच्च प्रदर्शन कार्यान्वयन अभी भीMath
के विनिर्देश के अनुरूप होना चाहिए।
Dalvik (जावा के एंड्रॉयड कार्यान्वयन) के लिए:
Dalvik/VM/InlineNative.c
/*
* public static double sin(double)
*/
static bool javaLangMath_sin(u4 arg0, u4 arg1, u4 arg2, u4 arg3,
JValue* pResult)
{
Convert64 convert;
convert.arg[0] = arg0;
convert.arg[1] = arg1;
pResult->d = sin(convert.dd);
return true;
}
तो यह libm
sin
समारोह है, जो एंड्रॉयड पर द्वारा आपूर्ति की है कॉल बायोनिक libc। यही कारण है कि
बायोनिक/libm/src की तरह दिखता है/s_sin.c
double
sin(double x)
{
double y[2],z=0.0;
int32_t n, ix;
/* High word of x. */
GET_HIGH_WORD(ix,x);
/* |x| ~< pi/4 */
ix &= 0x7fffffff;
if(ix <= 0x3fe921fb) {
if(ix<0x3e400000) /* |x| < 2**-27 */
{if((int)x==0) return x;} /* generate inexact */
return __kernel_sin(x,z,0);
}
/* sin(Inf or NaN) is NaN */
else if (ix>=0x7ff00000) return x-x;
/* argument reduction needed */
else {
n = __ieee754_rem_pio2(x,y);
switch(n&3) {
case 0: return __kernel_sin(y[0],y[1],1);
case 1: return __kernel_cos(y[0],y[1]);
case 2: return -__kernel_sin(y[0],y[1],1);
default:
return -__kernel_cos(y[0],y[1]);
}
}
}
और __kernel_sin
के कार्यान्वयन लग रहा है
बायोनिक/libm/src की तरह/k_sin.c
static const double
half = 5.00000000000000000000e-01, /* 0x3FE00000, 0x00000000 */
S1 = -1.66666666666666324348e-01, /* 0xBFC55555, 0x55555549 */
S2 = 8.33333333332248946124e-03, /* 0x3F811111, 0x1110F8A6 */
S3 = -1.98412698298579493134e-04, /* 0xBF2A01A0, 0x19C161D5 */
S4 = 2.75573137070700676789e-06, /* 0x3EC71DE3, 0x57B1FE7D */
S5 = -2.50507602534068634195e-08, /* 0xBE5AE5E6, 0x8A2B9CEB */
S6 = 1.58969099521155010221e-10; /* 0x3DE5D93A, 0x5ACFD57C */
double
__kernel_sin(double x, double y, int iy)
{
double z,r,v;
z = x*x;
v = z*x;
r = S2+z*(S3+z*(S4+z*(S5+z*S6)));
if(iy==0) return x+v*(S1+z*r);
else return x-((z*(half*y-v*r)-y)-v*S1);
}
__kernel_cos
समान है।
- 1. सी # गणित वर्ग सवाल
- 2. गणित वर्ग के तरीके क्यों स्थिर हैं?
- 3. जावा गणित पूर्णांक बनाम लंबे
- 4. जावा के लिए गणित लाइब्रेरी
- 5. लाइटवेट जावा दशमलव वर्ग
- 6. गणित
- 7. वैकल्पिक नामित गणित गणित
- 8. गणित
- 9. गणित
- 10. गणित
- 11. गणित
- 12. गणित
- 13. गणित
- 14. गणित
- 15. गणित
- 16. गणित
- 17. गणित
- 18. गणित
- 19. गणित
- 20. गणित
- 21. गणित
- 22. गणित
- 23. गणित
- 24. गणित
- 25. गणित:
- 26. गणित
- 27. गणित
- 28. गणित
- 29. गणित
- 30. गणित
क्या आप एक डिकंपेलर चाहते हैं? – EAKAE
नहीं, मैं अपनी खुद की साइन विधि बनाने की तलाश में हूं और मुझे विश्वास है कि गणित वर्ग विधि कैसे काम करेगी। – user2089351