Files
OpenCellular/include/math_util.h
Gwendal Grignou 96a39e7ee7 math: use CONFIG_FPU when using float.
ifdef code than needs CONFIG_FPU (acos and friends)
BRANCH=ToT
BUG=chrome-os-partner:32050
TEST=define CONFIG_FPU on host board and use it.

Change-Id: I1c4ed16c23450bb4059d26044f4c1fe45b33674e
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/226414
Reviewed-by: Alec Berg <alecaberg@chromium.org>
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2014-11-09 01:07:07 +00:00

60 lines
1.1 KiB
C

/* Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/* Header file for common math functions. */
#ifndef __CROS_MATH_UTIL_H
#define __CROS_MATH_UTIL_H
#ifdef CONFIG_FPU
typedef float matrix_3x3_t[3][3];
#else
typedef int matrix_3x3_t[3][3];
#endif
typedef int vector_3_t[3];
/* Some useful math functions. */
#define SQ(x) ((x) * (x))
#define ABS(x) ((x) >= 0 ? (x) : -(x))
#ifdef CONFIG_FPU
/**
* Find acos(x) in degrees. Argument is clipped to [-1.0, 1.0].
*
* @param x
*
* @return acos(x) in degrees.
*/
float arc_cos(float x);
/**
* Find the cosine of the angle between two vectors.
*
* @param v1
* @param v2
*
* @return Cosine of the angle between v1 and v2.
*/
float cosine_of_angle_diff(const vector_3_t v1, const vector_3_t v2);
#endif
/**
* Rotate vector v by rotation matrix R.
*
* @param v Vector to be rotated.
* @param R Rotation matrix.
* @param res Resultant vector.
*/
void rotate(const vector_3_t v, const matrix_3x3_t R,
vector_3_t res);
#endif /* __CROS_MATH_UTIL_H */