29#include <EASTL/array.h>
36namespace TrigInternals {
38void generateTable(eastl::array<int32_t, 512>& table,
unsigned precisionBits);
50namespace trig_literals {
58consteval Angle operator""_pi(
long double angle) {
return angle; }
73template <
unsigned precisionBits = 12>
84 constexpr FixedPoint<precisionBits>
cos(
Angle a)
const {
85 using namespace trig_literals;
94 }
else if (a < 1.0_pi) {
95 r = -table[(1.0_pi).
value - 1 -
t];
96 }
else if (a < 1.5_pi) {
99 r = table[(2.0_pi).
value - 1 -
t];
102 FixedPoint<precisionBits>
ret;
113 constexpr FixedPoint<precisionBits>
sin(
Angle a)
const {
114 using namespace trig_literals;
115 return cos(a - 0.5_pi);
119 eastl::array<int32_t, 512> table;
A trigonometry table.
Definition trigonometry.hh:74
constexpr FixedPoint< precisionBits > sin(Angle a) const
Calculate the sine of an angle.
Definition trigonometry.hh:113
Trig()
Definition trigonometry.hh:76
constexpr FixedPoint< precisionBits > cos(Angle a) const
Calculate the cosine of an angle.
Definition trigonometry.hh:84
uint32_t t
Definition cop0.c:79
uint32_t r
Definition cpu.c:222
void generateTable(eastl::array< int32_t, 512 > &table, unsigned precisionBits)
Definition trigonometry.cpp:34
Definition cdrom-loader.hh:39
FixedPoint< 10 > Angle
A fixed point angle.
Definition trigonometry.hh:48
static int value
Definition syscalls.h:534
static int ret
Definition syscalls.h:72
void uint32_t(classId, spec)