Add sincos() and sincosf() implementation.

This is a GLibc-compatibility patch required to simplify our
upcoming toolchain work/porting.

Change-Id: I615a20a449763f86b6e2b0e4f5ab43fb029ceb6d
This commit is contained in:
David 'Digit' Turner 2010-05-19 11:39:16 -07:00
parent 204e82d0af
commit ddd235bd9c
4 changed files with 49 additions and 0 deletions

View File

@ -5,6 +5,8 @@ Differences between current and Android 2.2:
- <pthread.h>: Add reader/writer locks implementation.
- <math.h>: Added sincos() and sincosf() (GLibc compatibility).
-------------------------------------------------------------------------------
Differences between Android 2.2. and Android 2.1:

View File

@ -3,6 +3,7 @@ LOCAL_PATH:= $(call my-dir)
libm_common_src_files:= \
isinf.c \
fpclassify.c \
sincos.c \
bsdsrc/b_exp.c \
bsdsrc/b_log.c \
bsdsrc/b_tgamma.c \

View File

@ -480,6 +480,12 @@ long double tgammal(long double);
#endif
long double truncl(long double);
/* BIONIC: GLibc compatibility - required by the ARM toolchain */
#ifdef _GNU_SOURCE
void sincos(double x, double *sin, double *cos);
void sincosf(float x, float *sin, float *cos);
#endif
/* #endif */ /* __ISO_C_VISIBLE >= 1999 */
__END_DECLS

40
libm/sincos.c Normal file
View File

@ -0,0 +1,40 @@
/*-
* Copyright (c) 2010 The Android Open Source Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*/
#define _GNU_SOURCE 1
#include <math.h>
void sincos(double x, double *psin, double *pcos)
{
*psin = sin(x);
*pcos = cos(x);
}
void sincosf(float x, float *psin, float *pcos)
{
*psin = sinf(x);
*pcos = cosf(x);
}