Skip to content

fix(trigonometry): add arctan2() function#114

Merged
antfullstack merged 1 commit intoantfullstack:mainfrom
tysoncung:fix/112-add-arctan2
Apr 12, 2026
Merged

fix(trigonometry): add arctan2() function#114
antfullstack merged 1 commit intoantfullstack:mainfrom
tysoncung:fix/112-add-arctan2

Conversation

@tysoncung
Copy link
Copy Markdown
Contributor

Problem

Issue #112 requested an arctan2() function in trigonometry.py. The standard arctan(y/x) only gives results in the range (−π/2, π/2) and loses quadrant information; arctan2(y, x) correctly maps any (x, y) point to an angle in (−π, π].

Solution

Implemented arctan2(y, x) using quadrant-aware case analysis over the signs of x and y, delegating to the existing arctan() function:

Condition Formula
x > 0 arctan(y/x)
x < 0, y ≥ 0 arctan(y/x) + π
x < 0, y < 0 arctan(y/x) − π
x = 0, y > 0 π/2
x = 0, y < 0 −π/2
x = 0, y = 0 0.0

Files Changed

  • simple_equ/geometry/trigonometry.py — added arctan2() function with full docstring

Verification

All quadrants tested against math.atan2 — results match to 1e-9 precision.

Closes #112

Implement arctan2(y, x) — the two-argument arctangent — in trigonometry.py.

Unlike arctan(y/x), arctan2 handles all four quadrants correctly by
inspecting the signs of both arguments:
  - x > 0              → arctan(y/x)
  - x < 0, y ≥ 0       → arctan(y/x) + π
  - x < 0, y < 0       → arctan(y/x) − π
  - x = 0, y > 0       → π/2
  - x = 0, y < 0       → −π/2
  - x = 0, y = 0       → 0.0  (matches math.atan2 behaviour)

Return value is in the range (−π, π], consistent with the standard
two-argument arctangent convention.
@antfullstack
Copy link
Copy Markdown
Owner

Very nice implementation and docstring comments, good job!

@antfullstack antfullstack merged commit 3b62225 into antfullstack:main Apr 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add arctan2() function in trigonometry

2 participants