我正在爲java中的C,exp,log和sqrt做一些近似函數。我對指針如何工作有些生疏 - 這個語法是否正確?C近似函數
#include <math.h>
#include "QDMath.h"
JNIEXPORT jdouble JNICALL Java_QDMath_exp
(JNIEnv *env, jclass class, jdouble val)
{
jint tmp = (jint) (1512775 * val + 1072632447);
jdouble p = 0.0;
*(1 + (jint *) &p) = tmp;
return p;
}
JNIEXPORT jdouble JNICALL Java_QDMath_log
(JNIEnv *env, jclass class, jdouble val)
{
jint tmp = (*(1 + (jint *) &val));
jdouble p = ((jdouble) tmp - 1072632447)/1512775;
return p;
}
JNIEXPORT jdouble JNICALL Java_QDMath_sqrt
(JNIEnv *env, jclass class, jdouble val)
{
jlong tmp = ((*(jlong *) &val) - 1065353216)>>1;
return *(jdouble *) &tmp;
}
謝謝,你打敗我重新格式化 – ShahQermez 2010-09-09 20:29:19