Ejemplo n.º 1
0
double cosine_kernel(double x, double y) {
  double a, hz, z, r, qx;
  int ix;
  ix = __JHI(x) & 0x7fffffff;    /* ix = |x|'s high word*/
  if (ix < 0x3e400000) {         /* if x < 2**27 */
    if (jvm_d2i(x) == 0 ) {
      return one_c;     /* generate inexact */
    }
  }
  z  = jvm_dmul(x, x);
  r  = jvm_dmul(z, jvm_dadd(C1, jvm_dmul(z, jvm_dadd(C2, jvm_dmul(z, jvm_dadd(C3, jvm_dmul(z, jvm_dadd(C4, jvm_dmul(z, jvm_dadd(C5, jvm_dmul(z,C6)))))))))));
  if (ix < 0x3FD33333) {           /* if |x| < 0.3 */
    return jvm_dsub(one_c, jvm_dsub(jvm_dmul(0.5,z), jvm_dsub(jvm_dmul(z,r), jvm_dmul(x,y))));
  } else {
    if(ix > 0x3fe90000) {       /* x > 0.78125 */
      qx = 0.28125;
    } else {
      qx = jdouble_from_msw_lsw(ix - 0x00200000 /* x/4 */, 0);
    }
    hz = jvm_dsub(jvm_dmul(0.5, z), qx);
    a  = jvm_dsub(one_c, qx);
    return jvm_dsub(a, jvm_dsub(hz, jvm_dsub(jvm_dmul(z, r), jvm_dmul(x, y))));
  }
}
Ejemplo n.º 2
0
JVM_SOFTFP_LINKAGE jdouble jvm_double_from_msw_lsw(jint msw, jint lsw) {
  return jdouble_from_msw_lsw(msw, lsw);
}