WPT
wpt / css / css-values / typed_arithmetic.html
Spec: CSS Values ↗
Runs: Chrome 155.0.8039.0 (wpt@d0c38285b, 2026-09-03) | Firefox 157.0a1 (wpt@ed1909ed6, 2026-09-03) | Safari 251 preview (wpt@5ce815a83, 2026-08-27) | Ladybird 1.0-56c61 (wpt@cc4d45aa0, 2026-09-03) | Servo Servo 0.6 (wpt@09159dcb3, 2026-09-02) | Blitz 188486089 (wpt@a95401e4e, 2026-09-02)
View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi
| Chrome | Firefox | Safari | Ladybird | Servo | Blitz | |
|---|---|---|---|---|---|---|
| Total | 36/39 | 39/39 | 34/39 | 36/39 | 3/39 | 0/39 |
| Subtest | Chrome | Firefox | Safari | Ladybird | Servo | Blitz |
|---|---|---|---|---|---|---|
| min(1em, 110px / 10px * 1px) should be used-value-equivalent to 10px | PASS | PASS | PASS | PASS | FAIL | — |
| max(10px, 110px / 10px * 1px) should be used-value-equivalent to 11px | PASS | PASS | PASS | PASS | FAIL | — |
| max(1em + 2px, 110px / 10px * 1px) should be used-value-equivalent to 12px | PASS | PASS | PASS | PASS | FAIL | — |
| max(1em + 2%, 110px / 10px * 1px) should be used-value-equivalent to 12px | PASS | PASS | PASS | PASS | FAIL | — |
| clamp(110px / 10px * 1px, 1em + 200%, 200% * 1% / 1em) should be used-value-equivalent to 20px | PASS | PASS | PASS | PASS | FAIL | — |
| calc(3 + sign(10px / 1rem - sign(1em + 1px))) should be used-value-equivalent to 3 | PASS | PASS | PASS | PASS | FAIL | — |
| calc(10em / 1em) should be used-value-equivalent to 10 | PASS | PASS | PASS | PASS | FAIL | — |
| calc(10em / 1rem) should be used-value-equivalent to 10 | PASS | PASS | PASS | PASS | FAIL | — |
| calc(10em / 1px) should be used-value-equivalent to 100 | PASS | PASS | PASS | PASS | FAIL | — |
| calc(1px / 10em * NaN) should be used-value-equivalent to 0 | PASS | PASS | PASS | PASS | FAIL | — |
| calc(10% / 1px) should be used-value-equivalent to 1 | FAIL | PASS | FAIL | FAIL | FAIL | — |
| calc(1% * 100% / 10%) should be used-value-equivalent to 10% | PASS | PASS | PASS | PASS | FAIL | — |
| calc(10% / 10%) should be used-value-equivalent to 1 | PASS | PASS | PASS | PASS | FAIL | — |
| calc((10% * 1%) / 1px) should be used-value-equivalent to 10px | PASS | PASS | PASS | PASS | FAIL | — |
| calc(10% * 10% / 1px * 10deg / 1deg / 10px) should be used-value-equivalent to 1 | FAIL | PASS | FAIL | FAIL | FAIL | — |
| calc(10% * 10% / 1px * 1deg / 1deg) should be used-value-equivalent to 1px | FAIL | PASS | FAIL | PASS | FAIL | — |
| calc(1px * 2deg / 1deg) should be used-value-equivalent to 2px | PASS | PASS | PASS | PASS | FAIL | — |
| calc(1px * 3deg / 1deg / 1px) should be used-value-equivalent to 3 | PASS | PASS | PASS | PASS | FAIL | — |
| calc(1px * pow(50% / 1px, 1)) should be used-value-equivalent to 50px | PASS | PASS | PASS | PASS | FAIL | — |
| e.style['width'] = "calc((1% * 1deg) / 1px)" should not set the property value | PASS | PASS | PASS | PASS | PASS | — |
| e.style['width'] = "calc((1% * 1% * 1%) / 1px)" should not set the property value | PASS | PASS | PASS | PASS | PASS | — |
| Property width value 'calc(1px * 10em / 0em)' | PASS | PASS | PASS | PASS | FAIL | — |
| Property width value 'calc(1px / 1px * 10em * infinity)' | PASS | PASS | PASS | PASS | FAIL | — |
| Property margin-left value 'calc(1px * 10em / -0em)' | PASS | PASS | PASS | PASS | FAIL | — |
| Property z-index value 'calc(10em / 0em)' | PASS | PASS | PASS | PASS | FAIL | — |
| sign(-0em / 1px) should be used-value-equivalent to 0 | PASS | PASS | PASS | PASS | FAIL | — |
| clamp(-1, 1 / sign(-0em / 1px), 1) should be used-value-equivalent to -1 | PASS | PASS | PASS | PASS | FAIL | — |
| sign( 0cqi / 1px) should be used-value-equivalent to 0 | PASS | PASS | PASS | PASS | FAIL | — |
| clamp(-1, 1 / sign( 0cqi / 1px), 1) should be used-value-equivalent to 1 | PASS | PASS | PASS | PASS | FAIL | — |
| sign(atan2(-0cap / 1px, 0em / 1px)) should be used-value-equivalent to 0 | PASS | PASS | PASS | PASS | FAIL | — |
| clamp(-1, 1 / sign(atan2(-0cap / 1px, 0em / 1px)), 1) should be used-value-equivalent to -1 | PASS | PASS | PASS | PASS | FAIL | — |
| sign(exp(-1vh / 0px)) should be used-value-equivalent to 0 | PASS | PASS | PASS | PASS | FAIL | — |
| clamp(-1, 1 / sign(exp(-1vh / 0px)), 1) should be used-value-equivalent to 1 | PASS | PASS | PASS | PASS | FAIL | — |
| calc(20cqw / 1rem) should be used-value-equivalent to 2 | PASS | PASS | PASS | PASS | FAIL | — |
| Property animation-duration value 'calc(2s / (10s - 10s) * 1s)' | PASS | PASS | PASS | PASS | FAIL | — |
| subtraction of angle unit: deg minus turn | PASS | PASS | PASS | PASS | FAIL | — |
| e.style['width'] = "calc(1px * 1px * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2)" should not set the property value | — | — | PASS | — | PASS | — |
| e.style['width'] = "calc(1px + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em + 1em)" should not set the property value | — | — | FAIL | — | FAIL | — |
| Uncaught JS error | — | — | — | — | — | FAIL |
| calc(1lh / 1px) should be used-value-equivalent to 20 | PASS | PASS | — | PASS | — | — |
| calc(10% / 20%) should be used-value-equivalent to 0.5 | PASS | PASS | — | PASS | — | — |
| e.style['z-index'] = "calc(10% / 20%)" should not set the property value | PASS | PASS | — | FAIL | — | — |