cswork / libraryOpen practice workspace

Coding questions · Snapchat

Implement sin(x) with precision constraints

This question evaluates understanding of numerical methods, floating-point arithmetic, and algorithmic implementation in the Coding & Algorithms domain by requiring an approximation of the sine function under explicit error bounds.

Coding Question: Implement sin(x)

Implement a function that returns an approximation of the trigonometric sine function.

Function signature

  • Input: a real number x (in radians)
  • Output: sin(x) as a floating-point number

Restrictions

  • Do not call library trig functions (e.g., sin, cos, tan).
  • You may use basic arithmetic operations and constants.

Accuracy requirement

  • Your result must satisfy: ∣ans−sin⁡(x)∣≤ε|\text{ans} - \sin(x)| \le \varepsilon
  • Assume the interviewer provides a specific ε (e.g., 1e-6).

Follow-ups

  1. After writing a straightforward version, describe how you would optimize it (time and/or numerical stability).
  2. In real systems, how would you further engineer this function for performance and reliability (e.g., handling large |x|, speed, testing, edge cases)?

Notes

  • You may assume IEEE-754 double behavior.
  • Consider how your implementation behaves for very large magnitude x and near special points (e.g., around 0, π, π/2).

Approximate sin(x)

Approximate sine without calling library trig functions, using range reduction and a Taylor series.

Constraints

  • Do not call math.sin/cos/tan

Examples

Example 1

Input: (0.0, 1e-08)
Output: 0.0

Explanation: sin(0).

Example 2

Input: (1.5707963267948966, 1e-08)
Output: 1.0

Explanation: Near pi/2.

Hints

  1. Reduce x to [-pi, pi], then evaluate the alternating Taylor series.