/* ------------------------------------------------------------------
 * Copyright (C) 1998-2009 PacketVideo
 *
 * 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 ARBT_MATH_H_INCLUDED
#define ARBT_MATH_H_INCLUDED

#include <e32math.h>



#define arbt_pow        pow
#define arbt_exp        exp
#define arbt_sqrt       sqrt
#define arbt_log        log
#define arbt_cos        cos
#define arbt_sin        sin
#define arbt_tan        tan
#define arbt_asin       asin

#endif // ARBT_MATH_H_INCLUDED
