Skip to content

Commit

Permalink
move __sincos(f) implementations to library
Browse files Browse the repository at this point in the history
  • Loading branch information
cjones051073 committed Aug 15, 2019
1 parent f69b9e0 commit c64c24c
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 15 deletions.
27 changes: 12 additions & 15 deletions include/math.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,30 +71,27 @@ __MP__END_DECLS

#endif /* __MP_LEGACY_SUPPORT_LLROUND__ */

/*
* Include the next math.h, which might be from the primary system or
* it might be within GCC's c or c++ (yup!) headers
*/

#include_next <math.h>

#if __MP_LEGACY_SUPPORT_COSSIN__

/* Following is borrowed from math.h on macOS 10.9+ */

/* __sincos and __sincosf were introduced in OSX 10.9 and iOS 7.0. When
targeting an older system, we simply split them up into discrete calls
to sin( ) and cos( ). */
void __sincosf(float __x, float *__sinp, float *__cosp) {
*__sinp = sinf(__x);
*__cosp = cosf(__x);
}
void __sincos(double __x, double *__sinp, double *__cosp) {
*__sinp = sin(__x);
*__cosp = cos(__x);
}

#endif /* __MP_LEGACY_SUPPORT_COSSIN__ */

/*
* Include the next math.h, which might be from the primary system or
* it might be within GCC's c or c++ (yup!) headers
*/
__MP__BEGIN_DECLS
extern void __sincosf(float __x, float *__sinp, float *__cosp);
extern void __sincos(double __x, double *__sinp, double *__cosp);
__MP__END_DECLS

#include_next <math.h>
#endif /* __MP_LEGACY_SUPPORT_COSSIN__ */

#if __MP_LEGACY_SUPPORT_LLROUND__

Expand Down
37 changes: 37 additions & 0 deletions src/sincos.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* Copyright (c) 2010 Chris Jones <[email protected]>
* Copyright (c) 2019 Michael Dickens <[email protected]>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

/* MP support header */
#include <math.h>

#if __MP_LEGACY_SUPPORT_COSSIN__

/* Following is borrowed from math.h on macOS 10.9+ */

/* __sincos and __sincosf were introduced in OSX 10.9 and iOS 7.0. When
targeting an older system, we simply split them up into discrete calls
to sin( ) and cos( ). */
void __sincosf(float __x, float *__sinp, float *__cosp) {
*__sinp = sinf(__x);
*__cosp = cosf(__x);
}
void __sincos(double __x, double *__sinp, double *__cosp) {
*__sinp = sin(__x);
*__cosp = cos(__x);
}

#endif /* __MP_LEGACY_SUPPORT_COSSIN__ */

0 comments on commit c64c24c

Please sign in to comment.