Exact trig values calculator
The sine of 30° is exactly 1/2 and its cosine is √3/2. Enter a special angle in degrees or radians and get exact radical values with decimals, the quadrant and the reference angle, never a rounded guess. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Angle measure in degrees
- 30
- Degrees
- 30 degrees
- Radians
- 0.5235987756
- Degrees normalized
- 30
- Radians normalized
- 0.5235987756
Special angles on the unit circle—zero, thirty, forty-five, sixty, and ninety degrees, plus every coterminal multiple that lands on those classic positions—have sine, cosine, and tangent values that students and engineers are expected to know exactly, not as calculator decimals. This calculator accepts a finite angle in degrees or radians, checks that it reduces to a special measure, and returns the exact radical strings (for example one half, square root of three over two, square root of two over two) together with stable decimal approximations, quadrant or axis labels, and a clear flag when tangent is undefined on vertical axes.
Which angles count as special and how exact values are built
In school trigonometry the special angles are zero, thirty, forty-five, sixty, and ninety degrees. Their coterminal multiples around the full circle—one hundred twenty, one hundred thirty-five, one hundred fifty, one hundred eighty, two hundred ten, two hundred twenty-five, two hundred forty, two hundred seventy, three hundred, three hundred fifteen, and three hundred thirty degrees—share the same absolute sine, cosine, and tangent as the acute reference angles zero through ninety, with signs fixed by the ASTC (all, sine, tangent, cosine) quadrant rule.
Negative measures and angles larger than a full turn are reduced with positive modular arithmetic into the half-open interval from zero inclusive to three hundred sixty exclusive degrees before the special-set check runs. Absolute values come from a fixed lookup: sine of thirty is one half, cosine of thirty is square root of three over two, both sine and cosine of forty-five are square root of two over two, and so on.
Tangent of ninety and two hundred seventy degrees is undefined because cosine is zero; the response sets tan.defined to false and leaves exact and decimal null rather than inventing infinity.
What you send and what you get back
Optionally set unit to degrees (the default) or radians; short forms deg and rad are accepted and matching is case-insensitive. Each of sin and cos has exact (a radical string such as √3/2 or -1/2) and decimal (a stable float). The tan object adds defined: when false, exact and decimal are null for the vertical-axis cases.
Example checks: thirty degrees yields sin exact one half and cos exact square root of three over two; two hundred twenty-five degrees yields negative square root of two over two for both sine and cosine with tan exact one; ninety degrees yields sin one, cos zero, and tan undefined; twenty degrees fails the special-angle gate. Wire the free browser tool for quick homework checks, then call the identical contract from scripts when you need bulk exact-value tables without reimplementing quadrant signs in every language.
Where exact special-angle values show up in real work
Secondary-school and college courses drill exact values of sine, cosine, and tangent at special angles because those identities appear in simplifying expressions, solving triangles without a calculator, and building the unit-circle chart by memory. Teachers writing answer keys need a machine-checkable source that distinguishes undefined tangent from a large float and that rejects twenty-two degrees instead of quietly returning a rounded sine. Curriculum platforms and adaptive quizzes can call this contract to grade open responses against exact strings while still showing decimals for accessibility.
Engineering and game-development teams sometimes hard-code the same table when a shader or animation path only ever hits forty-five-degree steps; generating the table from one pure function avoids off-by-sign bugs when someone copies only the first-quadrant row. If you need reference angles alone, inverse cosine of a ratio, law-of-cosines angle solving, or full right-triangle solvers, treat those as separate search intents served by sibling trig capabilities rather than overloading this exact-values landing.
What you can do with it
Homework and exam answer keys
Look up exact radical sin, cos, and tan for special angles and coterminal multiples, with clear rejection when the angle is not special.
Curriculum and quiz grading
Compare student exact-string answers against a deterministic table that also flags undefined tangent on vertical axes.
FAQ
Which angles are accepted?
Angles that reduce to 0°, 30°, 45°, 60°, 90°, 120°, 135°, 150°, 180°, 210°, 225°, 240°, 270°, 300°, 315°, or 330° (and coterminal angles such as −30° or 390°). Other measures, including 15° and 75°, are rejected as not special for this classic unit-circle table.
What form do the exact values take?
Strings using common classroom notation: 0, 1, 1/2, √2/2, √3/2, √3/3, √3, with a leading minus when the quadrant makes the value negative. Each function also includes a stable decimal approximation.
What about tan(90°) and tan(270°)?
Tangent is undefined when cosine is zero. The response sets tan.defined to false and leaves tan.exact and tan.decimal null. Sine and cosine are still returned exactly (1 or −1 and 0).
Can I send radians?
Yes. Set unit to "radians" (or "rad"). The default unit is degrees. The response always includes both degree and radian fields for the input and the normalized special position.
What does it cost?
The browser tool is free and runs locally.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/trig/trig-exact-values \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"angle":30}'const res = await fetch("https://api.kit.forhosting.com/trig/trig-exact-values", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"angle": 30
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/trig/trig-exact-values",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"angle": 30
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/trig/trig-exact-values", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"angle":30}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"angle":30}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/trig/trig-exact-values", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"angle": 30
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "trig.trig_exact_values",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Non-special angles such as fifteen or twenty degrees, missing fields, and non-numeric text are rejected with invalid_input so homework keys and automated tests never silently invent a rounded float.
Which angles count as special and how exact values are built
If the reduced measure is not within a tight tolerance of that sixteen-point set, the request fails: this service intentionally does not expand into half-angle identities for fifteen degrees or other algebraic angles, because the search intent for exact unit-circle radicals is the classic table. The entire path is pure arithmetic and table lookup—no network, no randomness, no wall-clock time—so the same numeric input always yields the same JSON shape within the documented rounding.
What you send and what you get back
Send one required finite number under the field angle, with aliases theta, a, value, and input for form-friendly labels. Missing angle, empty strings, non-numeric text, NaN, and Infinity raise invalid_input and are not charged. On success the JSON echoes angle and unit, reports degrees and radians of the input after unit conversion, returns degrees_normalized and radians_normalized for the snapped special position, sets is_special true, reports reference_angle_degrees in the closed interval from zero to ninety, classifies quadrant one through four or axis with on_axis and an axis name when applicable, and returns three objects sin, cos, and tan. The method string is always trig_exact_values for logs and teaching UIs.
Where exact special-angle values show up in real work
Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.
Integration use cases
Deterministic unit-circle fixtures
Generate stable radical and decimal fixtures for docs, shaders, and CI from the same pure function in browser and API.