//
// Copyright (c) 2017 The Khronos Group Inc.
// 
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
#ifndef REFERENCE_MATH_H
#define REFERENCE_MATH_H

#if defined( __APPLE__ )
    #include <OpenCL/opencl.h>
#else
    #include <CL/cl.h>
#endif

// --  for testing float --
double reference_sinh( double x );
double reference_sqrt( double x );
double reference_tanh( double x );
double reference_acos( double );
double reference_asin( double );
double reference_atan( double );
double reference_atan2( double, double );
double reference_ceil( double );
double reference_cosh( double );
double reference_exp( double );
double reference_fabs( double );
double reference_acospi( double );
double reference_asinpi( double );
double reference_atanpi( double );
double reference_atan2pi( double, double );
double reference_cospi( double );
double reference_divide( double, double );
double reference_fract( double, double * );
float  reference_fma( float, float, float, int );
double reference_mad( double, double, double );
double reference_nextafter(double, double );
double reference_recip( double );
double reference_rootn( double, int );
double reference_rsqrt( double );
double reference_sincos( double, double * );
double reference_sinpi( double );
double reference_tanpi( double );
double reference_pow(double x, double y);
double reference_pown( double, int );
double reference_powr( double, double );
double reference_cos( double );
double reference_sin( double );
double reference_tan( double );
double reference_log( double );
double reference_log10( double );
double reference_modf( double, double *n );

double reference_fdim( double, double );
double reference_add( double, double );
double reference_subtract( double, double );
double reference_divide( double, double );
double reference_multiply( double, double );
double reference_remquo( double, double, int* );
double reference_lgamma_r( double, int* );

int reference_isequal( double, double );
int reference_isfinite( double );
int reference_isgreater( double, double );
int reference_isgreaterequal( double, double );
int reference_isinf( double );
int reference_isless( double, double );
int reference_islessequal( double, double );
int reference_islessgreater( double, double );
int reference_isnan( double );
int reference_isnormal( double );
int reference_isnotequal( double, double );
int reference_isordered( double, double );
int reference_isunordered( double, double );
int reference_signbit( float );

double reference_acosh( double x );
double reference_asinh( double x );
double reference_atanh( double x );
double reference_cbrt(double x);
float reference_copysign( float x, float y);
double reference_copysignd( double x, double y);
double reference_exp10( double );
double reference_exp2( double x );
double reference_expm1( double x );
double reference_fmax( double x, double y );
double reference_fmin( double x, double y );
double reference_hypot( double x, double y );
double reference_lgamma( double x);
int    reference_ilogb( double );
double reference_log2( double x );
double reference_log1p( double x );
double reference_logb( double x );
double reference_maxmag( double x, double y );
double reference_minmag( double x, double y );
double reference_nan( cl_uint x );
double reference_reciprocal( double x );
double reference_remainder( double x, double y );
double reference_rint( double x );
double reference_round( double x );
double reference_trunc( double x );
double reference_floor( double x );
double reference_fmod( double x, double y );
double reference_frexp( double x, int *n );
double reference_ldexp( double x, int n );

double reference_assignment( double x );
int    reference_not( double x );
// -- for testing fast-relaxed

double reference_relaxed_mad( double, double, double );
double reference_relaxed_divide( double x, double y );
double reference_relaxed_sin( double x );
double reference_relaxed_cos( double x );
double reference_relaxed_sincos( double x, double * y);
double reference_relaxed_tan( double x );
double reference_relaxed_exp( double x );
double reference_relaxed_exp2( double x );
double reference_relaxed_exp10( double x );
double reference_relaxed_log( double x );
double reference_relaxed_log2( double x );
double reference_relaxed_pow( double x, double y);
double reference_relaxed_reciprocal( double x );

// -- for testing double --

long double reference_sinhl( long double x );
long double reference_sqrtl( long double x );
long double reference_tanhl( long double x );
long double reference_acosl( long double );
long double reference_asinl( long double );
long double reference_atanl( long double );
long double reference_atan2l( long double, long double );
long double reference_ceill( long double );
long double reference_coshl( long double );
long double reference_expl( long double );
long double reference_fabsl( long double );
long double reference_acospil( long double );
long double reference_asinpil( long double );
long double reference_atanpil( long double );
long double reference_atan2pil( long double, long double );
long double reference_cospil( long double );
long double reference_dividel( long double, long double );
long double reference_fractl( long double, long double * );
long double reference_fmal( long double, long double, long double );
long double reference_madl( long double, long double, long double );
long double reference_nextafterl(long double, long double );
long double reference_recipl( long double );
long double reference_rootnl( long double, int );
long double reference_rsqrtl( long double );
long double reference_sincosl( long double, long double * );
long double reference_sinpil( long double );
long double reference_tanpil( long double );
long double reference_powl(long double x, long double y);
long double reference_pownl( long double, int );
long double reference_powrl( long double, long double );
long double reference_cosl( long double );
long double reference_sinl(long double );
long double reference_tanl( long double );
long double reference_logl( long double );
long double reference_log10l( long double );
long double reference_modfl( long double, long double *n );


long double reference_fdiml( long double, long double );
long double reference_addl( long double, long double );
long double reference_subtractl( long double, long double );
long double reference_dividel( long double, long double );
long double reference_multiplyl( long double, long double );
long double reference_remquol( long double, long double, int* );
long double reference_lgamma_rl( long double, int* );


int reference_isequall( long double, long double );
int reference_isfinitel( long double );
int reference_isgreaterl( long double, long double );
int reference_isgreaterequall( long double, long double );
int reference_isinfl( long double );
int reference_islessl( long double, long double );
int reference_islessequall( long double, long double );
int reference_islessgreaterl( long double, long double );
int reference_isnanl( long double );
int reference_isnormall( long double );
int reference_isnotequall( long double, long double );
int reference_isorderedl( long double, long double );
int reference_isunorderedl( long double, long double );
int reference_signbitl( long double );

long double reference_acoshl( long double x );
long double reference_asinhl( long double x );
long double reference_atanhl( long double x );
long double reference_cbrtl(long double x);
long double reference_copysignl( long double x, long double y);
long double reference_exp10l( long double );
long double reference_exp2l( long double x );
long double reference_expm1l( long double x );
long double reference_fmaxl( long double x, long double y );
long double reference_fminl( long double x, long double y );
long double reference_hypotl( long double x, long double y );
long double reference_lgammal( long double x);
int    reference_ilogbl( long double );
long double reference_log2l( long double x );
long double reference_log1pl( long double x );
long double reference_logbl( long double x );
long double reference_maxmagl( long double x, long double y );
long double reference_minmagl( long double x, long double y );
long double reference_nanl( cl_ulong x );
long double reference_reciprocall( long double x );
long double reference_remainderl( long double x, long double y );
long double reference_rintl( long double x );
long double reference_roundl( long double x );
long double reference_truncl( long double x );
long double reference_floorl( long double x );
long double reference_fmodl( long double x, long double y );
long double reference_frexpl( long double x, int *n );
long double reference_ldexpl( long double x, int n );

long double reference_assignmentl( long double x );
int reference_notl( long double x );

#endif


