Changeset dc5376a for src/libcfa/math.c


Ignore:
Timestamp:
Apr 24, 2016, 5:01:18 PM (8 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
Children:
89231bc, a772d8ab, add371c, b72bad4f
Parents:
743fbda
Message:

math library, second attempt

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/math.c

    r743fbda rdc5376a  
    1 //                               -*- Mode: C -*-
    21//
    32// Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
     
    1110// Created On       : Tue Apr 19 22:23:08 2016
    1211// Last Modified By : Peter A. Buhr
    13 // Last Modified On : Thu Apr 21 07:56:49 2016
    14 // Update Count     : 51
     12// Last Modified On : Sun Apr 24 08:52:31 2016
     13// Update Count     : 75
    1514//
    1615
    1716#include "math"
    1817
    19 //---------------------------------------
    20 
    2118extern "C" {
    22 #include <math.h>
    2319#include <complex.h>
    2420} // extern "C"
     21
     22float fabs( float x ) { return fabsf( x ); }
     23long double fabs( long double x ) { return fabsl( x ); }
     24float cabs( float _Complex x ) { return cabsf( x ); }
     25double cabs( double _Complex x ) { return cabs( x ); }
     26long double cabs( long double _Complex x ) { return cabsl( x ); }
     27
     28float ?%?( float x, float y ) { return fmodf( x, y ); }
     29float fmod( float x, float y ) { return fmodf( x, y ); }
     30double ?%?( double x, double y ) { return fmod( x, y ); }
     31long double ?%?( long double x, long double y ) { return fmodl( x, y ); }
     32long double fmod( long double x, long double y ) { return fmodl( x, y ); }
     33
     34float remainder( float x, float y ) { return remainderf( x, y ); }
     35long double remainder( long double x, long double y ) { return remainderl( x, y ); }
     36
     37// [ int, float ] remquo( float x, float y ) { int quo; x = remquof( x, y, &quo ); return [ quo, x ]; }
     38float remquo( float x, float y, int *quo ) { return remquof( x, y, quo ); }
     39// [ int, double ] remquo( double x, double y ) { int quo; x = remquo( x, y, &quo ); return [ quo, x ]; }
     40// [ int, long double ] remquo( long double x, long double y ) { int quo; x = remquol( x, y, &quo ); return [ quo, x ]; }
     41long double remquo( long double x, long double y, int *quo ) { return remquol( x, y, quo ); }
     42
     43// [ int, float ] div( float x, float y ) { int quo; x = remquof( x, y, &quo ); return [ quo, x ]; }
     44float div( float x, float y, int *quo ) { return remquof( x, y, quo ); }
     45// [ int, double ] div( double x, double y ) { int quo; x = remquo( x, y, &quo ); return [ quo, x ]; }
     46// [ int, long double ] div( long double x, long double y ) { int quo; x = remquol( x, y, &quo ); return [ quo, x ]; }
     47long double div( long double x, long double y, int *quo ) { return remquol( x, y, quo ); }
     48
     49float fma( float x, float y, float z ) { return fmaf( x, y, z ); }
     50long double fma( long double x, long double y, long double z ) { return fmal( x, y, z ); }
     51
     52float fdim( float x, float y ) { return fdimf( x, y ); }
     53long double fdim( long double x, long double y ) { return fdiml( x, y ); }
     54
     55float nan( const char *tag ) { return nanf( tag ); }
     56long double nan( const char *tag ) { return nanl( tag ); }
     57
     58//---------------------- Exponential ----------------------
     59
     60float exp( float x ) { return expf( x ); }
     61long double exp( long double x ) { return expl( x ); }
     62float _Complex exp( float _Complex x ) { return cexpf( x ); }
     63double _Complex exp( double _Complex x ) { return cexp( x ); }
     64long double _Complex exp( long double _Complex x ) { return cexpl( x ); }
     65
     66float exp2( float x ) { return exp2f( x ); }
     67long double exp2( long double x ) { return exp2l( x ); }
     68// float _Complex exp2( float _Complex x ) { return cexp2f( x ); }
     69// double _Complex exp2( double _Complex x ) { return cexp2( x ); }
     70// long double _Complex exp2( long double _Complex x ) { return cexp2l( x ); }
     71
     72float expm1( float x ) { return expm1f( x ); }
     73long double expm1( long double x ) { return expm1l( x ); }
     74
     75float log( float x ) { return logf( x ); }
     76long double log( long double x ) { return logl( x ); }
     77float _Complex log( float _Complex x ) { return clogf( x ); }
     78double _Complex log( double _Complex x ) { return clog( x ); }
     79long double _Complex log( long double _Complex x ) { return clogl( x ); }
     80
     81float log2( float x ) { return log2f( x ); }
     82long double log2( long double x ) { return log2l( x ); }
     83// float _Complex log2( float _Complex x ) { return clog2f( x ); }
     84// double _Complex log2( double _Complex x ) { return clog2( x ); }
     85// long double _Complex log2( long double _Complex x ) { return clog2l( x ); }
     86
     87float log10( float x ) { return log10f( x ); }
     88long double log10( long double x ) { return log10l( x ); }
     89// float _Complex log10( float _Complex x ) { return clog10f( x ); }
     90// double _Complex log10( double _Complex x ) { return clog10( x ); }
     91// long double _Complex log10( long double _Complex x ) { return clog10l( x ); }
     92
     93float log1p( float x ) { return log1pf( x ); }
     94long double log1p( long double x ) { return log1pl( x ); }
     95
     96int ilogb( float x ) { return ilogbf( x ); }
     97int ilogb( long double x ) { return ilogbl( x ); }
     98
     99float logb( float x ) { return logbf( x ); }
     100long double logb( long double x ) { return logbl( x ); }
     101
     102//---------------------- Power ----------------------
     103
     104float sqrt( float x ) { return sqrtf( x ); }
     105long double sqrt( long double x ) { return sqrtl( x ); }
     106float _Complex sqrt( float _Complex x ) { return csqrtf( x ); }
     107double _Complex sqrt( double _Complex x ) { return csqrt( x ); }
     108long double _Complex sqrt( long double _Complex x ) { return csqrtl( x ); }
     109
     110float cbrt( float x ) { return cbrtf( x ); }
     111long double cbrt( long double x ) { return cbrtl( x ); }
     112
     113float hypot( float x, float y ) { return hypotf( x, y ); }
     114long double hypot( long double x, long double y ) { return hypotl( x, y ); }
     115
     116float pow( float x, float y ) { return powf( x, y ); }
     117long double pow( long double x, long double y ) { return powl( x, y ); }
     118float _Complex pow( float _Complex x, float _Complex y ) { return cpowf( x, y ); }
     119double _Complex pow( double _Complex x, double _Complex y ) { return cpow( x, y ); }
     120long double _Complex pow( long double _Complex x, long double _Complex y ) { return cpowl( x, y ); }
     121
     122//---------------------- Trigonometric ----------------------
     123
     124float sin( float x ) { return sinf( x ); }
     125long double sin( long double x ) { return sinl( x ); }
     126float _Complex sin( float _Complex x ) { return csinf( x ); }
     127double _Complex sin( double _Complex x ) { return csin( x ); }
     128long double _Complex sin( long double _Complex x ) { return csinl( x ); }
    25129
    26130float cos( float x ) { return cosf( x ); }
     
    30134long double _Complex cos( long double _Complex x ) { return ccosl( x ); }
    31135
     136float tan( float x ) { return tanf( x ); }
     137long double tan( long double x ) { return tanl( x ); }
     138float _Complex tan( float _Complex x ) { return ctanf( x ); }
     139double _Complex tan( double _Complex x ) { return ctan( x ); }
     140long double _Complex tan( long double _Complex x ) { return ctanl( x ); }
     141
     142float asin( float x ) { return asinf( x ); }
     143long double asin( long double x ) { return asinl( x ); }
     144float _Complex asin( float _Complex x ) { return casinf( x ); }
     145double _Complex asin( double _Complex x ) { return casin( x ); }
     146long double _Complex asin( long double _Complex x ) { return casinl( x ); }
     147
     148float acos( float x ) { return acosf( x ); }
     149long double acos( long double x ) { return acosl( x ); }
     150float _Complex acos( float _Complex x ) { return cacosf( x ); }
     151double _Complex acos( double _Complex x ) { return cacos( x ); }
     152long double _Complex acos( long double _Complex x ) { return cacosl( x ); }
     153
     154float atan( float x ) { return atanf( x ); }
     155long double atan( long double x ) { return atanl( x ); }
     156float _Complex atan( float _Complex x ) { return catanf( x ); }
     157double _Complex atan( double _Complex x ) { return catan( x ); }
     158long double _Complex atan( long double _Complex x ) { return catanl( x ); }
     159
     160float atan2( float x, float y ) { return atan2f( x, y ); }
     161double atan2( double x, double y ) { return atan2( x, y ); }
     162long double atan2( long double x, long double y ) { return atan2l( x, y ); }
     163
     164float atan( float x, float y ) { return atan2f( x, y ); }
     165double atan( double x, double y ) { return atan2( x, y ); }
     166long double atan( long double x, long double y ) { return atan2l( x, y ); }
     167
     168//---------------------- Hyperbolic ----------------------
     169
     170float sinh( float x ) { return sinhf( x ); }
     171long double sinh( long double x ) { return sinhl( x ); }
     172float _Complex sinh( float _Complex x ) { return csinhf( x ); }
     173double _Complex sinh( double _Complex x ) { return csinh( x ); }
     174long double _Complex sinh( long double _Complex x ) { return csinhl( x ); }
     175
    32176float cosh( float x ) { return coshf( x ); }
    33177long double cosh( long double x ) { return coshl( x ); }
     
    36180long double _Complex cosh( long double _Complex x ) { return ccoshl( x ); }
    37181
    38 float acos( float x ) { return acosf( x ); }
    39 long double acos( long double x ) { return acosl( x ); }
    40 float _Complex acos( float _Complex x ) { return cacosf( x ); }
    41 double _Complex acos( double _Complex x ) { return cacos( x ); }
    42 long double _Complex acos( long double _Complex x ) { return cacosl( x ); }
     182float tanh( float x ) { return tanhf( x ); }
     183long double tanh( long double x ) { return tanhl( x ); }
     184float _Complex tanh( float _Complex x ) { return ctanhf( x ); }
     185double _Complex tanh( double _Complex x ) { return ctanh( x ); }
     186long double _Complex tanh( long double _Complex x ) { return ctanhl( x ); }
     187
     188float asinh( float x ) { return asinhf( x ); }
     189long double asinh( long double x ) { return asinhl( x ); }
     190float _Complex asinh( float _Complex x ) { return casinhf( x ); }
     191double _Complex asinh( double _Complex x ) { return casinh( x ); }
     192long double _Complex asinh( long double _Complex x ) { return casinhl( x ); }
    43193
    44194float acosh( float x ) { return acoshf( x ); }
     
    48198long double _Complex acosh( long double _Complex x ) { return cacoshl( x ); }
    49199
    50 float sin( float x ) { return sinf( x ); }
    51 long double sin( long double x ) { return sinl( x ); }
    52 float _Complex sin( float _Complex x ) { return csinf( x ); }
    53 double _Complex sin( double _Complex x ) { return csin( x ); }
    54 long double _Complex sin( long double _Complex x ) { return csinl( x ); }
    55 
    56 float sinh( float x ) { return sinhf( x ); }
    57 long double sinh( long double x ) { return sinhl( x ); }
    58 float _Complex sinh( float _Complex x ) { return csinhf( x ); }
    59 double _Complex sinh( double _Complex x ) { return csinh( x ); }
    60 long double _Complex sinh( long double _Complex x ) { return csinhl( x ); }
    61 
    62 float asin( float x ) { return asinf( x ); }
    63 long double asin( long double x ) { return asinl( x ); }
    64 float _Complex asin( float _Complex x ) { return casinf( x ); }
    65 double _Complex asin( double _Complex x ) { return casin( x ); }
    66 long double _Complex asin( long double _Complex x ) { return casinl( x ); }
    67 
    68 float asinh( float x ) { return asinhf( x ); }
    69 long double asinh( long double x ) { return asinhl( x ); }
    70 float _Complex asinh( float _Complex x ) { return casinhf( x ); }
    71 double _Complex asinh( double _Complex x ) { return casinh( x ); }
    72 long double _Complex asinh( long double _Complex x ) { return casinhl( x ); }
    73 
    74 float tan( float x ) { return tanf( x ); }
    75 long double tan( long double x ) { return tanl( x ); }
    76 float _Complex tan( float _Complex x ) { return ctanf( x ); }
    77 double _Complex tan( double _Complex x ) { return ctan( x ); }
    78 long double _Complex tan( long double _Complex x ) { return ctanl( x ); }
    79 
    80 float tanh( float x ) { return tanhf( x ); }
    81 long double tanh( long double x ) { return tanhl( x ); }
    82 float _Complex tanh( float _Complex x ) { return ctanhf( x ); }
    83 double _Complex tanh( double _Complex x ) { return ctanh( x ); }
    84 long double _Complex tanh( long double _Complex x ) { return ctanhl( x ); }
    85 
    86 float atan( float x ) { return atanf( x ); }
    87 long double atan( long double x ) { return atanl( x ); }
    88 float _Complex atan( float _Complex x ) { return catanf( x ); }
    89 double _Complex atan( double _Complex x ) { return catan( x ); }
    90 long double _Complex atan( long double _Complex x ) { return catanl( x ); }
    91 
    92 float atan( float x, float y ) { return atan2f( x, y ); }
    93 double atan( double x, double y ) { return atan2( x, y ); }
    94 long double atan( long double x, long double y ) { return atan2l( x, y ); }
    95 
    96200float atanh( float x ) { return atanhf( x ); }
    97201long double atanh( long double x ) { return atanhl( x ); }
     
    100204long double _Complex atanh( long double _Complex x ) { return catanhl( x ); }
    101205
    102 float exp( float x ) { return expf( x ); }
    103 long double exp( long double x ) { return expl( x ); }
    104 float _Complex exp( float _Complex x ) { return cexpf( x ); }
    105 double _Complex exp( double _Complex x ) { return cexp( x ); }
    106 long double _Complex exp( long double _Complex x ) { return cexpl( x ); }
    107 
    108 float log( float x ) { return logf( x ); }
    109 long double log( long double x ) { return logl( x ); }
    110 float _Complex log( float _Complex x ) { return clogf( x ); }
    111 double _Complex log( double _Complex x ) { return clog( x ); }
    112 long double _Complex log( long double _Complex x ) { return clogl( x ); }
    113 
    114 float pow( float x, float y ) { return powf( x, y ); }
    115 long double pow( long double x, long double y ) { return powl( x, y ); }
    116 float _Complex pow( float _Complex x, float _Complex y ) { return cpowf( x, y ); }
    117 double _Complex pow( double _Complex x, double _Complex y ) { return cpow( x, y ); }
    118 long double _Complex pow( long double _Complex x, long double _Complex y ) { return cpowl( x, y ); }
    119 
    120 float sqrt( float x ) { return sqrtf( x ); }
    121 long double sqrt( long double x ) { return sqrtl( x ); }
    122 float _Complex sqrt( float _Complex x ) { return csqrtf( x ); }
    123 double _Complex sqrt( double _Complex x ) { return csqrt( x ); }
    124 long double _Complex sqrt( long double _Complex x ) { return csqrtl( x ); }
    125 
    126 float fabs( float x ) { return fabsf( x ); }
    127 long double fabs( long double x ) { return fabsl( x ); }
    128 float cabs( float _Complex x ) { return cabsf( x ); }
    129 long double cabs( long double _Complex x ) { return cabsl( x ); }
     206//---------------------- Error / Gamma ----------------------
     207
     208float erf( float x ) { return erff( x ); }
     209long double erf( long double x ) { return erfl( x ); }
     210// float _Complex erf( float _Complex x ) { return crflf( x ); }
     211// double _Complex erf( double _Complex x ) { return crfl( x ); }
     212// long double _Complex erf( long double _Complex x ) { return crfll( x ); }
     213
     214float erfc( float x ) { return erfcf( x ); }
     215long double erfc( long double x ) { return erfcl( x ); }
     216// float _Complex erfc( float _Complex x ) { return cerfcf( x ); }
     217// double _Complex erfc( double _Complex x ) { return cerfc( x ); }
     218// long double _Complex erfc( long double _Complex x ) { return cerfcl( x ); }
     219
     220float lgamma( float x ) { return lgammaf( x ); }
     221long double lgamma( long double x ) { return lgammal( x ); }
     222float lgamma( float x, int *sign ) { return lgammaf_r( x, sign ); }
     223double lgamma( double x, int *sign ) { return lgamma_r( x, sign ); }
     224long double lgamma( long double x, int *sign ) { return lgammal_r( x, sign ); }
     225
     226float tgamma( float x ) { return tgammaf( x ); }
     227long double tgamma( long double x ) { return tgammal( x ); }
     228
     229//---------------------- Nearest Integer ----------------------
    130230
    131231float floor( float x ) { return floorf( x ); }
     
    135235long double ceil( long double x ) { return ceill( x ); }
    136236
    137 //---------------------------------------
    138 
    139 float cbrt( float x ) { return cbrtf( x ); }
    140 long double cbrt( long double x ) { return cbrtl( x ); }
    141 
    142 float copysign( float x, float y ) { return copysignf( x, y ); }
    143 long double copysign( long double x, long double y ) { return copysignl( x, y ); }
    144 
    145 float erf( float x ) { return erff( x ); }
    146 long double erf( long double x ) { return erfl( x ); }
    147 
    148 float erfc( float x ) { return erfcf( x ); }
    149 long double erfc( long double x ) { return erfcl( x ); }
    150 
    151 float exp2( float x ) { return exp2f( x ); }
    152 long double exp2( long double x ) { return exp2l( x ); }
    153 
    154 float expm1( float x ) { return expm1f( x ); }
    155 long double expm1( long double x ) { return expm1l( x ); }
    156 
    157 float fdim( float x, float y ) { return fdimf( x, y ); }
    158 long double fdim( long double x, long double y ) { return fdiml( x, y ); }
    159 
    160 float fma( float x, float y, float z ) { return fmaf( x, y, z ); }
    161 long double fma( long double x, long double y, long double z ) { return fmal( x, y, z ); }
    162 
    163 float ?%?( float x, float y ) { return fmodf( x, y ); }
    164 float fmod( float x, float y ) { return fmodf( x, y ); }
    165 double ?%?( double x, double y ) { return fmod( x, y ); }
    166 long double ?%?( long double x, long double y ) { return fmodl( x, y ); }
    167 long double fmod( long double x, long double y ) { return fmodl( x, y ); }
    168 
    169 //[ int, float ] div( float x ) { int i; x = frexpf( x, &i ); return [ i, x ]; }
    170 float frexp( float x, int *ip ) { return frexpf( x, ip ); }
    171 //[ int, double ] div( double x ) { int i; x = frexp( x, &i ); return [ i, x ]; }
    172 //[ int, long double ] div( long double x ) { int i; x = frexpl( x, &i ); return [ i, x ]; }
    173 long double frexp( long double x, int *ip ) { return frexpl( x, ip ); }
    174 
    175 float hypot( float x, float y ) { return hypotf( x, y ); }
    176 long double hypot( long double x, long double y ) { return hypotl( x, y ); }
    177 
    178 int ilogb( float x ) { return ilogbf( x ); }
    179 int ilogb( long double x ) { return ilogbl( x ); }
    180 
    181 float ldexp( float x, int exp2 ) { return ldexpf( x, exp2 ); }
    182 long double ldexp( long double x, int exp2 ) { return ldexpl( x, exp2 ); }
    183 
    184 float lgamma( float x ) { return lgammaf( x ); }
    185 long double lgamma( long double x ) { return lgammal( x ); }
     237float trunc( float x ) { return truncf( x ); }
     238long double trunc( long double x ) { return truncl( x ); }
    186239
    187240float rint( float x ) { return rintf( x ); }
     
    199252long long int llrint( long double x ) { return llrintl( x ); }
    200253
     254float nearbyint( float x ) { return nearbyintf( x ); }
     255long double nearbyint( long double x ) { return nearbyintl( x ); }
     256
    201257float round( float x ) { return roundf( x ); }
    202258long double round( long double x ) { return roundl( x ); }
     
    213269long long int llround( long double x ) { return llroundl( x ); }
    214270
    215 float log10( float x ) { return log10f( x ); }
    216 long double log10( long double x ) { return log10l( x ); }
    217 
    218 float log1p( float x ) { return log1pf( x ); }
    219 long double log1p( long double x ) { return log1pl( x ); }
    220 
    221 float log2( float x ) { return log2f( x ); }
    222 long double log2( long double x ) { return log2l( x ); }
    223 
    224 float logb( float x ) { return logbf( x ); }
    225 long double logb( long double x ) { return logbl( x ); }
    226 
    227 float nearbyint( float x ) { return nearbyintf( x ); }
    228 long double nearbyint( long double x ) { return nearbyintl( x ); }
     271//---------------------- Manipulation ----------------------
     272
     273float copysign( float x, float y ) { return copysignf( x, y ); }
     274long double copysign( long double x, long double y ) { return copysignl( x, y ); }
     275
     276float frexp( float x, int *ip ) { return frexpf( x, ip ); }
     277long double frexp( long double x, int *ip ) { return frexpl( x, ip ); }
     278
     279float ldexp( float x, int exp2 ) { return ldexpf( x, exp2 ); }
     280long double ldexp( long double x, int exp2 ) { return ldexpl( x, exp2 ); }
     281
     282// [ float, float ] modf( float x ) { float i; x = modff( x, &i ); return [ i, x ]; }
     283float modf( float x, float *i ) { return modff( x, i ); }
     284// [ double, double ] modf( double x ) { double i; x = modf( x, &i ); return [ i, x ]; }
     285// [ long double, long double ] modf( long double x ) { long double i; x = modfl( x, &i ); return [ i, x ]; }
     286long double modf( long double x, long double *i ) { return modfl( x, i ); }
    229287
    230288float nextafter( float x, float y ) { return nextafterf( x, y ); }
     
    233291float nexttoward( float x, long double y ) { return nexttowardf( x, y ); }
    234292long double nexttoward( long double x, long double y ) { return nexttowardl( x, y ); }
    235 
    236 float remainder( float x, float y ) { return remainderf( x, y ); }
    237 long double remainder( long double x, long double y ) { return remainderl( x, y ); }
    238 
    239 //[ int, float ] remquo( float x, float y ) { int quo; x = remquof( x, y, &quo ); return [ quo, x ]; }
    240 float remquo( float x, float y, int *quo ) { return remquof( x, y, quo ); }
    241 //[ int, double ] remquo( double x, double y ) { int quo; x = remquo( x, y, &quo ); return [ quo, x ]; }
    242 //[ int, long double ] remquo( long double x, long double y ) { int quo; x = remquol( x, y, &quo ); return [ quo, x ]; }
    243 long double remquo( long double x, long double y, int *quo ) { return remquol( x, y, quo ); }
    244293
    245294float scalbn( float x, int exp ) { return scalbnf( x, exp ); }
     
    252301long double scalbln( long double x, long int exp ) { return scalblnl( x, exp ); }
    253302
    254 float tgamma( float x ) { return tgammaf( x ); }
    255 long double tgamma( long double x ) { return tgammal( x ); }
    256 
    257 float trunc( float x ) { return truncf( x ); }
    258 long double trunc( long double x ) { return truncl( x ); }
    259 
    260303// Local Variables: //
    261304// mode: c //
Note: See TracChangeset for help on using the changeset viewer.