// // Based on ideas at: // http://www.dsprelated.com/showarticle/42.php // OEVector OEVector::chebyshevWindow(OEInt n, float sidelobeDb) { OEInt m = n - 1; OEVector w; w.data.resize(m); float alpha = coshf(acoshf(powf(10, sidelobeDb / 20)) / m); for (OEInt i = 0; i < m; i++) { float a = fabsf(alpha * cosf((float) M_PI * i / m)); if (a > 1) w.data[i] = powf(-1, i) * coshf(m * acoshf(a)); else w.data[i] = powf(-1, i) * cosf(m * acosf(a)); } w = w.realIDFT(); w.data.resize(n); w.data[0] /= 2; w.data[n - 1] = w.data[0]; float max = 0; for (OEInt i = 0; i < n; i++) if (fabs(w.data[i]) > max) max = fabsf(w.data[i]); for (OEInt i = 0; i < n; i++) w.data[i] /= max; return w; }
void runSuccess() { acoshf(1.0f); acoshf(0.0f); acoshf(-1.0f); acoshf(2.0f); acoshf(-2.0f); acoshf(NAN); acoshf(INFINITY); acoshf(inrange()); acoshf(outrange()); acoshf(anyfloat()); }
void test_acosh() { static_assert((std::is_same<decltype(acosh((double)0)), double>::value), ""); static_assert((std::is_same<decltype(acoshf(0)), float>::value), ""); static_assert((std::is_same<decltype(acoshl(0)), long double>::value), ""); assert(acosh(1) == 0); }
static void *acosh_new(t_floatarg f) { t_acosh *x = (t_acosh *)pd_new(acosh_class); x->x_value = acoshf(f); /* no protection against NaNs */ outlet_new((t_object *)x, &s_float); return (x); }
static TACommandVerdict acoshf_cmd(TAThread thread,TAInputStream stream) { float x, res; // Prepare x = readFloat(&stream); errno = 0; START_TARGET_OPERATION(thread); // Execute res = acoshf(x); END_TARGET_OPERATION(thread); // Response writeFloat(thread, res); writeInt(thread, errno); sendResponse(thread); return taDefaultVerdict; }
void testValues() { f = 2; float result; //result = acoshf(0.5f); // assert \coshf(result) == 0.5; result = acoshf(2.0f); //@ assert result >= 0; errno = 0; result = acoshf(outrange()); //@ assert (math_errhandling & MATH_ERRNO) ==> (errno == EDOM); errno = 0; //@ assert f == 2; //@ assert vacuous: \false; }
/*++ Function: acoshf See MSDN. --*/ PALIMPORT float __cdecl PAL_acoshf(float x) { float ret; PERF_ENTRY(acoshf); ENTRY("acoshf (x=%f)\n", x); ret = acoshf(x); LOGEXIT("acoshf returns float %f\n", ret); PERF_EXIT(acoshf); return ret; }
static GMQCC_INLINE ast_expression *fold_intirn_acosh(fold_t *fold, ast_value *a) { return fold_constgen_float(fold, acoshf(fold_immvalue_float(a))); }
inline float acoshf2(float x) { return acoshf(x); }
__device__ inline float occaCuda_fastAcosh(const float x){ return acoshf(x); }
static void acosh_float(t_acosh *x, t_float f) { outlet_float(((t_object *)x)->ob_outlet, x->x_value = acoshf(f)); /* no protection against NaNs */ }
static int testf(float float_x, long double long_double_x, /*float complex float_complex_x,*/ int int_x, long long_x) { int r = 0; r += acosf(float_x); r += acoshf(float_x); r += asinf(float_x); r += asinhf(float_x); r += atan2f(float_x, float_x); r += atanf(float_x); r += atanhf(float_x); /*r += cargf(float_complex_x); - will fight with complex numbers later */ r += cbrtf(float_x); r += ceilf(float_x); r += copysignf(float_x, float_x); r += cosf(float_x); r += coshf(float_x); r += erfcf(float_x); r += erff(float_x); r += exp2f(float_x); r += expf(float_x); r += expm1f(float_x); r += fabsf(float_x); r += fdimf(float_x, float_x); r += floorf(float_x); r += fmaf(float_x, float_x, float_x); r += fmaxf(float_x, float_x); r += fminf(float_x, float_x); r += fmodf(float_x, float_x); r += frexpf(float_x, &int_x); r += gammaf(float_x); r += hypotf(float_x, float_x); r += ilogbf(float_x); r += ldexpf(float_x, int_x); r += lgammaf(float_x); r += llrintf(float_x); r += llroundf(float_x); r += log10f(float_x); r += log1pf(float_x); r += log2f(float_x); r += logbf(float_x); r += logf(float_x); r += lrintf(float_x); r += lroundf(float_x); r += modff(float_x, &float_x); r += nearbyintf(float_x); r += nexttowardf(float_x, long_double_x); r += powf(float_x, float_x); r += remainderf(float_x, float_x); r += remquof(float_x, float_x, &int_x); r += rintf(float_x); r += roundf(float_x); #ifdef __UCLIBC_SUSV3_LEGACY__ r += scalbf(float_x, float_x); #endif r += scalblnf(float_x, long_x); r += scalbnf(float_x, int_x); r += significandf(float_x); r += sinf(float_x); r += sinhf(float_x); r += sqrtf(float_x); r += tanf(float_x); r += tanhf(float_x); r += tgammaf(float_x); r += truncf(float_x); return r; }
void kirmod_table(char type /* type of velocity distribution */, bool twod /* 2-D or 2.5-D/3-D */, float z, float x, float y /* distance between source and receiver */, float g /* absolute gradient */, float gx /* gx+gz*zx */, float gy /* gy+gz*zy */, float gz /* gz-gx*zx */, float v1 /* source velocity function */, float v2 /* receiver velocity function */, float vn /* "NMO" velocity */, float n /* "eta" parameter */, float px /* x+z*zx */, float py /* y+z*zy */, float pz /* z-x*zx */, float dz /* hypotf(1.0,zx) */, ktable table /* [5] output table */) /*< Compute traveltime attributes >*/ { float sigma, rad, v0, a, r, h; r = sqrtf(x*x+y*y+z*z)+FLT_EPSILON; /* distance */ switch (type) { case 'a': /* VTI anisotropy */ h = z*z/(v1*v1) + x*x/((1.+2*n)*vn*vn); /* hyperbolic part */ table->t = sqrtf(((3.+4.*n)*h + sqrtf(h*h + 16.*n*(1.+n)*z*z*x*x/((1.+2*n)*vn*vn*v1*v1)))/(4.*(1.+n))); if (twod) { table->a = sqrtf(r/v1); } else { table->a = r; table->ar = 1./(r*v1); } px /= (r*v1); py /= (r*v1); pz = fabsf(pz)/(r*dz); table->tn = sqrtf(fabsf(1./(v1*v1)-px*px-py*py)); break; case 'c': /* constant velocity */ table->t = r/v1; if (twod) { table->a = sqrtf(r/v1); } else { table->a = r; table->ar = 1./(r*v1); } px /= (r*v1); py /= (r*v1); pz = fabsf(pz)/(r*dz); table->tn = sqrtf(fabsf(1./(v1*v1)-px*px-py*py)); break; case 's': /* linear sloth */ v0 = 0.5*(v1+v2); rad = v0*v0-r*r*g*g; /* => v0^2=1/v^4 */ if (rad < 0.) { /* shadow zone */ table->t = -FLT_MAX; table->a = 0.; table->ar = 0.; table->tn = 0.; break; } rad = sqrtf(rad); /* => v0=1/v^2 */ sigma = r*sqrtf(2./(v0+rad)); /* => r*v */ table->t = sigma*(2*v0+rad)/3.; /* => r/v */ a = sigma*sqrtf(rad); /* => r */ if (twod) { table->a = a/sqrtf(sigma); } else { table->a = a; table->ar = 1./sigma; } px = (px/sigma+0.5*gx*sigma); /* => p/(rv) */ py = (py/sigma+0.5*gy*sigma); /* => p/(rv) */ pz = fabsf(pz+0.5*sigma*sigma*gz)/(sqrtf(v2)*sigma*dz); table->tn = sqrtf(fabsf(v2-px*px-py*py)); break; case 'v': /* linear velocity */ v0 = sqrtf(v1*v2); /* => v */ table->t = acoshf(1.+0.5*r*r*g*g/(v0*v0))/g; /* => r/v */ a = r*hypotf(1.,0.5*r*g/v0); /* => r */ rad = 1./(a*v0); /* => 1./(r*v) */ if (twod) { table->a = a*sqrtf(rad); } else { table->a = a; table->ar = rad; } px = (px-0.5*r*r*gx/v2)*rad; /* => p/(r*v) */ py = (py-0.5*r*r*gy/v2)*rad; /* => p/(r*v) */ pz = fabsf(pz*v2-0.5*r*r*gz)/(v0*a*dz); table->tn = sqrtf(fabsf(1./(v2*v2)-px*px-py*py)); break; default: sf_error("%s: type %c is not implemented",__FILE__,type); break; } /* type */ if (twod) table->ar=0.5; table->tx = px; /* traveltime slope (dt/dx) */ table->ty = py; table->an = (pz >= 1.0)? 0.: -acosf(pz); /* angle from the normal */ }
void domathf (void) { #ifndef NO_FLOAT float f1; float f2; int i1; f1 = acosf(0.0); fprintf( stdout, "acosf : %f\n", f1); f1 = acoshf(0.0); fprintf( stdout, "acoshf : %f\n", f1); f1 = asinf(1.0); fprintf( stdout, "asinf : %f\n", f1); f1 = asinhf(1.0); fprintf( stdout, "asinhf : %f\n", f1); f1 = atanf(M_PI_4); fprintf( stdout, "atanf : %f\n", f1); f1 = atan2f(2.3, 2.3); fprintf( stdout, "atan2f : %f\n", f1); f1 = atanhf(1.0); fprintf( stdout, "atanhf : %f\n", f1); f1 = cbrtf(27.0); fprintf( stdout, "cbrtf : %f\n", f1); f1 = ceilf(3.5); fprintf( stdout, "ceilf : %f\n", f1); f1 = copysignf(3.5, -2.5); fprintf( stdout, "copysignf : %f\n", f1); f1 = cosf(M_PI_2); fprintf( stdout, "cosf : %f\n", f1); f1 = coshf(M_PI_2); fprintf( stdout, "coshf : %f\n", f1); f1 = erff(42.0); fprintf( stdout, "erff : %f\n", f1); f1 = erfcf(42.0); fprintf( stdout, "erfcf : %f\n", f1); f1 = expf(0.42); fprintf( stdout, "expf : %f\n", f1); f1 = exp2f(0.42); fprintf( stdout, "exp2f : %f\n", f1); f1 = expm1f(0.00042); fprintf( stdout, "expm1f : %f\n", f1); f1 = fabsf(-1.123); fprintf( stdout, "fabsf : %f\n", f1); f1 = fdimf(1.123, 2.123); fprintf( stdout, "fdimf : %f\n", f1); f1 = floorf(0.5); fprintf( stdout, "floorf : %f\n", f1); f1 = floorf(-0.5); fprintf( stdout, "floorf : %f\n", f1); f1 = fmaf(2.1, 2.2, 3.01); fprintf( stdout, "fmaf : %f\n", f1); f1 = fmaxf(-0.42, 0.42); fprintf( stdout, "fmaxf : %f\n", f1); f1 = fminf(-0.42, 0.42); fprintf( stdout, "fminf : %f\n", f1); f1 = fmodf(42.0, 3.0); fprintf( stdout, "fmodf : %f\n", f1); /* no type-specific variant */ i1 = fpclassify(1.0); fprintf( stdout, "fpclassify : %d\n", i1); f1 = frexpf(42.0, &i1); fprintf( stdout, "frexpf : %f\n", f1); f1 = hypotf(42.0, 42.0); fprintf( stdout, "hypotf : %f\n", f1); i1 = ilogbf(42.0); fprintf( stdout, "ilogbf : %d\n", i1); /* no type-specific variant */ i1 = isfinite(3.0); fprintf( stdout, "isfinite : %d\n", i1); /* no type-specific variant */ i1 = isgreater(3.0, 3.1); fprintf( stdout, "isgreater : %d\n", i1); /* no type-specific variant */ i1 = isgreaterequal(3.0, 3.1); fprintf( stdout, "isgreaterequal : %d\n", i1); /* no type-specific variant */ i1 = isinf(3.0); fprintf( stdout, "isinf : %d\n", i1); /* no type-specific variant */ i1 = isless(3.0, 3.1); fprintf( stdout, "isless : %d\n", i1); /* no type-specific variant */ i1 = islessequal(3.0, 3.1); fprintf( stdout, "islessequal : %d\n", i1); /* no type-specific variant */ i1 = islessgreater(3.0, 3.1); fprintf( stdout, "islessgreater : %d\n", i1); /* no type-specific variant */ i1 = isnan(0.0); fprintf( stdout, "isnan : %d\n", i1); /* no type-specific variant */ i1 = isnormal(3.0); fprintf( stdout, "isnormal : %d\n", i1); /* no type-specific variant */ f1 = isunordered(1.0, 2.0); fprintf( stdout, "isunordered : %d\n", i1); f1 = j0f(1.2); fprintf( stdout, "j0f : %f\n", f1); f1 = j1f(1.2); fprintf( stdout, "j1f : %f\n", f1); f1 = jnf(2,1.2); fprintf( stdout, "jnf : %f\n", f1); f1 = ldexpf(1.2,3); fprintf( stdout, "ldexpf : %f\n", f1); f1 = lgammaf(42.0); fprintf( stdout, "lgammaf : %f\n", f1); f1 = llrintf(-0.5); fprintf( stdout, "llrintf : %f\n", f1); f1 = llrintf(0.5); fprintf( stdout, "llrintf : %f\n", f1); f1 = llroundf(-0.5); fprintf( stdout, "lroundf : %f\n", f1); f1 = llroundf(0.5); fprintf( stdout, "lroundf : %f\n", f1); f1 = logf(42.0); fprintf( stdout, "logf : %f\n", f1); f1 = log10f(42.0); fprintf( stdout, "log10f : %f\n", f1); f1 = log1pf(42.0); fprintf( stdout, "log1pf : %f\n", f1); f1 = log2f(42.0); fprintf( stdout, "log2f : %f\n", f1); f1 = logbf(42.0); fprintf( stdout, "logbf : %f\n", f1); f1 = lrintf(-0.5); fprintf( stdout, "lrintf : %f\n", f1); f1 = lrintf(0.5); fprintf( stdout, "lrintf : %f\n", f1); f1 = lroundf(-0.5); fprintf( stdout, "lroundf : %f\n", f1); f1 = lroundf(0.5); fprintf( stdout, "lroundf : %f\n", f1); f1 = modff(42.0,&f2); fprintf( stdout, "lmodff : %f\n", f1); f1 = nanf(""); fprintf( stdout, "nanf : %f\n", f1); f1 = nearbyintf(1.5); fprintf( stdout, "nearbyintf : %f\n", f1); f1 = nextafterf(1.5,2.0); fprintf( stdout, "nextafterf : %f\n", f1); f1 = powf(3.01, 2.0); fprintf( stdout, "powf : %f\n", f1); f1 = remainderf(3.01,2.0); fprintf( stdout, "remainderf : %f\n", f1); f1 = remquof(29.0,3.0,&i1); fprintf( stdout, "remquof : %f\n", f1); f1 = rintf(0.5); fprintf( stdout, "rintf : %f\n", f1); f1 = rintf(-0.5); fprintf( stdout, "rintf : %f\n", f1); f1 = roundf(0.5); fprintf( stdout, "roundf : %f\n", f1); f1 = roundf(-0.5); fprintf( stdout, "roundf : %f\n", f1); f1 = scalblnf(1.2,3); fprintf( stdout, "scalblnf : %f\n", f1); f1 = scalbnf(1.2,3); fprintf( stdout, "scalbnf : %f\n", f1); /* no type-specific variant */ i1 = signbit(1.0); fprintf( stdout, "signbit : %i\n", i1); f1 = sinf(M_PI_4); fprintf( stdout, "sinf : %f\n", f1); f1 = sinhf(M_PI_4); fprintf( stdout, "sinhf : %f\n", f1); f1 = sqrtf(9.0); fprintf( stdout, "sqrtf : %f\n", f1); f1 = tanf(M_PI_4); fprintf( stdout, "tanf : %f\n", f1); f1 = tanhf(M_PI_4); fprintf( stdout, "tanhf : %f\n", f1); f1 = tgammaf(2.1); fprintf( stdout, "tgammaf : %f\n", f1); f1 = truncf(3.5); fprintf( stdout, "truncf : %f\n", f1); f1 = y0f(1.2); fprintf( stdout, "y0f : %f\n", f1); f1 = y1f(1.2); fprintf( stdout, "y1f : %f\n", f1); f1 = ynf(3,1.2); fprintf( stdout, "ynf : %f\n", f1); #endif }
__host__ void single_precision_math_functions() { int iX; float fX, fY; acosf(1.0f); acoshf(1.0f); asinf(0.0f); asinhf(0.0f); atan2f(0.0f, 1.0f); atanf(0.0f); atanhf(0.0f); cbrtf(0.0f); ceilf(0.0f); copysignf(1.0f, -2.0f); cosf(0.0f); coshf(0.0f); //cospif(0.0f); //cyl_bessel_i0f(0.0f); //cyl_bessel_i1f(0.0f); erfcf(0.0f); //erfcinvf(2.0f); //erfcxf(0.0f); erff(0.0f); //erfinvf(1.0f); exp10f(0.0f); exp2f(0.0f); expf(0.0f); expm1f(0.0f); fabsf(1.0f); fdimf(1.0f, 0.0f); //fdividef(0.0f, 1.0f); floorf(0.0f); fmaf(1.0f, 2.0f, 3.0f); fmaxf(0.0f, 0.0f); fminf(0.0f, 0.0f); fmodf(0.0f, 1.0f); frexpf(0.0f, &iX); hypotf(1.0f, 0.0f); ilogbf(1.0f); isfinite(0.0f); isinf(0.0f); isnan(0.0f); ///j0f(0.0f); ///j1f(0.0f); ///jnf(-1.0f, 1.0f); ldexpf(0.0f, 0); ///lgammaf(1.0f); ///llrintf(0.0f); ///llroundf(0.0f); log10f(1.0f); log1pf(-1.0f); log2f(1.0f); logbf(1.0f); logf(1.0f); ///lrintf(0.0f); ///lroundf(0.0f); modff(0.0f, &fX); ///nanf("1"); nearbyintf(0.0f); //nextafterf(0.0f); //norm3df(1.0f, 0.0f, 0.0f); //norm4df(1.0f, 0.0f, 0.0f, 0.0f); //normcdff(0.0f); //normcdfinvf(1.0f); //fX = 1.0f; normf(1, &fX); powf(1.0f, 0.0f); //rcbrtf(1.0f); remainderf(2.0f, 1.0f); remquof(1.0f, 2.0f, &iX); //rhypotf(0.0f, 1.0f); ///rintf(1.0f); //rnorm3df(0.0f, 0.0f, 1.0f); //rnorm4df(0.0f, 0.0f, 0.0f, 1.0f); //fX = 1.0f; rnormf(1, &fX); roundf(0.0f); //rsqrtf(1.0f); ///scalblnf(0.0f, 1); scalbnf(0.0f, 1); signbit(1.0f); sincosf(0.0f, &fX, &fY); //sincospif(0.0f, &fX, &fY); sinf(0.0f); sinhf(0.0f); //sinpif(0.0f); sqrtf(0.0f); tanf(0.0f); tanhf(0.0f); tgammaf(2.0f); truncf(0.0f); ///y0f(1.0f); ///y1f(1.0f); ///ynf(1, 1.0f); }
__global__ void FloatMathPrecise() { int iX; float fX, fY; acosf(1.0f); acoshf(1.0f); asinf(0.0f); asinhf(0.0f); atan2f(0.0f, 1.0f); atanf(0.0f); atanhf(0.0f); cbrtf(0.0f); fX = ceilf(0.0f); fX = copysignf(1.0f, -2.0f); cosf(0.0f); coshf(0.0f); cospif(0.0f); cyl_bessel_i0f(0.0f); cyl_bessel_i1f(0.0f); erfcf(0.0f); erfcinvf(2.0f); erfcxf(0.0f); erff(0.0f); erfinvf(1.0f); exp10f(0.0f); exp2f(0.0f); expf(0.0f); expm1f(0.0f); fX = fabsf(1.0f); fdimf(1.0f, 0.0f); fdividef(0.0f, 1.0f); fX = floorf(0.0f); fmaf(1.0f, 2.0f, 3.0f); fX = fmaxf(0.0f, 0.0f); fX = fminf(0.0f, 0.0f); fmodf(0.0f, 1.0f); frexpf(0.0f, &iX); hypotf(1.0f, 0.0f); ilogbf(1.0f); isfinite(0.0f); fX = isinf(0.0f); fX = isnan(0.0f); j0f(0.0f); j1f(0.0f); jnf(-1.0f, 1.0f); ldexpf(0.0f, 0); lgammaf(1.0f); llrintf(0.0f); llroundf(0.0f); log10f(1.0f); log1pf(-1.0f); log2f(1.0f); logbf(1.0f); logf(1.0f); lrintf(0.0f); lroundf(0.0f); modff(0.0f, &fX); fX = nanf("1"); fX = nearbyintf(0.0f); nextafterf(0.0f, 0.0f); norm3df(1.0f, 0.0f, 0.0f); norm4df(1.0f, 0.0f, 0.0f, 0.0f); normcdff(0.0f); normcdfinvf(1.0f); fX = 1.0f; normf(1, &fX); powf(1.0f, 0.0f); rcbrtf(1.0f); remainderf(2.0f, 1.0f); remquof(1.0f, 2.0f, &iX); rhypotf(0.0f, 1.0f); fY = rintf(1.0f); rnorm3df(0.0f, 0.0f, 1.0f); rnorm4df(0.0f, 0.0f, 0.0f, 1.0f); fX = 1.0f; rnormf(1, &fX); fY = roundf(0.0f); rsqrtf(1.0f); scalblnf(0.0f, 1); scalbnf(0.0f, 1); signbit(1.0f); sincosf(0.0f, &fX, &fY); sincospif(0.0f, &fX, &fY); sinf(0.0f); sinhf(0.0f); sinpif(0.0f); sqrtf(0.0f); tanf(0.0f); tanhf(0.0f); tgammaf(2.0f); fY = truncf(0.0f); y0f(1.0f); y1f(1.0f); ynf(1, 1.0f); }
npy_float npy_acoshf(npy_float x) { return acoshf(x); }
//------------------------------------------------------------------------------ double Cmath::acosh( double x ) { return (double)acoshf( (float)x ); }
TEST(math, acoshf) { ASSERT_FLOAT_EQ(0.0f, acoshf(1.0f)); }