mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-27 18:25:05 +00:00
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>
60 lines
1.1 KiB
C
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 */
|