/* * Copyright (c) 2018-2020, Andreas Kling * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #pragma once #include __BEGIN_DECLS #define HUGE_VAL 1e10000 #define INFINITY __builtin_huge_val() #define NAN __builtin_nan("") #define M_E 2.718281828459045 #define M_PI 3.141592653589793 #define M_PI_2 (M_PI / 2) #define M_TAU (M_PI * 2) #define M_LN2 0.69314718055995 #define M_LN10 2.30258509299405 #define M_SQRT2 1.4142135623730951 #define M_SQRT1_2 0.7071067811865475 double acos(double); float acosf(float); double asin(double); float asinf(float); double atan(double); float atanf(float); double atan2(double, double); float atan2f(float, float); double cos(double); float cosf(float); double cosh(double); float coshf(float); double sin(double); float sinf(float); double sinh(double); float sinhf(float); double tan(double); float tanf(float); double tanh(double); float tanhf(float); double ceil(double); float ceilf(float); double floor(double); float floorf(float); double round(double); float roundf(float); double fabs(double); float fabsf(float); double fmod(double, double); float fmodf(float, float); double exp(double); float expf(float); double exp2(double); float exp2f(float); double frexp(double, int* exp); float frexpf(float, int* exp); double log(double); float logf(float); double log10(double); float log10f(float); double sqrt(double); float sqrtf(float); double modf(double, double*); float modff(float, float*); double ldexp(double, int exp); float ldexpf(float, int exp); double pow(double x, double y); float powf(float x, float y); double log2(double); float log2f(float); long double log2l(long double); double frexp(double, int*); float frexpf(float, int*); long double frexpl(long double, int*); __END_DECLS