trigreal X(tan2pi)(int m, int n) { #if 0 /* unimplemented, unused */ trigreal dm = m, dn = n; return TAN(by2pi(dm, dn)); #endif UNUSED(m); UNUSED(n); return 0.0; }
trigreal X(sincos)(trigreal m, trigreal n, int sinp) { /* waiting for C to get tail recursion... */ trigreal half_n = n * KTRIG(0.5); trigreal quarter_n = half_n * KTRIG(0.5); trigreal eighth_n = quarter_n * KTRIG(0.5); trigreal sgn = KTRIG(1.0); if (sinp) goto sin; cos: if (m < 0) { m = -m; /* goto cos; */ } if (m > half_n) { m = n - m; goto cos; } if (m > eighth_n) { m = quarter_n - m; goto sin; } return sgn * COS(by2pi(m, n)); msin: sgn = -sgn; sin: if (m < 0) { m = -m; goto msin; } if (m > half_n) { m = n - m; goto msin; } if (m > eighth_n) { m = quarter_n - m; goto cos; } return sgn * SIN(by2pi(m, n)); }