Pular para o conteúdo

Raiz cúbica em código

Escapes Unicode, entidades HTML, LaTeX — e as funções que realmente calculam uma raiz cúbica em JavaScript, Python, Excel e meia dúzia de outras linguagens, incluindo onde ela diverge da raiz quadrada em números negativos.

Escapes Unicode e entidades HTML

∛ é o ponto de código Unicode U+221B. A maioria das linguagens permite colocá-lo direto em um literal de string usando uma sequência de escape, em vez de colar o caractere puro. Diferente do √, ele não tem entidade HTML nomeada — só a forma numérica.

JavaScript / TypeScript
"\u221B" // ∛
Python
"\u221b"  # ∛
Java / C#
"\u221B" // ∛
HTML
∛ (sem entidade nomeada)
CSS
content: "\221B";

LaTeX

\sqrt renderiza um radical correto com uma barra sobre o argumento em LaTeX, MathJax e KaTeX — o 3 entre colchetes é o que faz dele uma raiz cúbica em vez de uma raiz quadrada.

LaTeX — raiz cúbica
\sqrt[3]{x}
LaTeX — raiz quadrada, para comparação
\sqrt{x}
LaTeX — raiz enésima
\sqrt[n]{x}

Calculando uma raiz cúbica em código

Uma sequência de escape só coloca o símbolo na página — ela não calcula nada. Aqui está a função ou fórmula real para cada linguagem e seu resultado para 27 e -27, já que a raiz cúbica é uma das poucas operações em que entradas negativas são um caso real e bem definido.

JavaScript
Math.cbrt(27);
// 3
Math.cbrt(-27);
// -3 — correto, diferente de Math.pow
Python
27 ** (1/3)
# 3.0
(-27) ** (1/3)
# número complexo! veja as pegadinhas abaixo
Excel / Google Sheets
=SIGN(A1)*ABS(A1)^(1/3)
Java
Math.cbrt(27);
// 3.0
Math.cbrt(-27);
// -3.0 — correto
C / C++
#include <math.h>
cbrt(27);
// 3
cbrt(-27);
// -3 — correto
PHP
pow(27, 1/3);
// 3
pow(-27, 1/3);
// NAN — veja as pegadinhas abaixo
PostgreSQL
SELECT CBRT(27);
-- 3
SELECT CBRT(-27);
-- -3, correto
MySQL / SQL Server
SELECT SIGN(27) * POWER(ABS(27), 1.0/3);
-- 3 (sem CBRT nativo)
Swift
import Foundation
cbrt(27.0)
// 3.0 — não existe método .cubeRoot()
R
sign(-27) * abs(-27)^(1/3)
# -3 (sem cbrt() integrado)

Pegadinhas que vale a pena conhecer

Números negativos: raiz cúbica e raiz quadrada se comportam de forma totalmente diferente

A raiz cúbica de um número negativo é um número real (∛-27 = -3), diferente da raiz quadrada de um número negativo, que é imaginária. Mas o x ** (1/3) ingênuo da maioria das linguagens não sabe disso: o Math.pow(-27, 1/3) do JavaScript retorna NaN, e o (-27) ** (1/3) do Python retorna um número complexo em vez de -3. Funções dedicadas como Math.cbrt() do JavaScript, Math.cbrt() do Java e cbrt() do C acertam; o operador de potência genérico geralmente não.

O operador ** do Python retorna um número complexo para bases negativas

(-27) ** (1/3) em Python não lança um erro nem retorna -3 — ele retorna um número complexo, algo como (1.5+2.598j), porque o ** do Python recorre à aritmética complexa sempre que uma base negativa é elevada a uma potência não inteira. math.pow(-27, 1/3) é diferente de novo: ele lança um ValueError. Para obter um -3 real, use math.copysign(abs(x) ** (1/3), x) ou escreva uma pequena função auxiliar.

Excel e Google Sheets não têm função CBRT

Não existe uma fórmula de raiz cúbica integrada em nenhum dos dois. =A1^(1/3) funciona para números positivos, mas retorna um erro #NÚM! para negativos. A fórmula que trata os dois casos é =SIGN(A1)*ABS(A1)^(1/3): ela calcula a raiz cúbica do valor absoluto e depois reaplica o sinal original.

Swift não tem o método .cubeRoot()

Double tem um método .squareRoot() integrado (25.0.squareRoot()), mas não existe um .cubeRoot() equivalente para raiz cúbica — você precisa importar o Foundation e chamar a função global cbrt(): cbrt(27.0).

Os dialetos de SQL divergem sobre a existência do CBRT

O PostgreSQL tem uma função CBRT() nativa que trata números negativos corretamente. MySQL e SQL Server não têm nenhuma — você precisa construir a sua com POWER() e SIGN(), a mesma solução alternativa que as planilhas exigem.

Só precisa do símbolo em si?

A página de formatos para copiar tem o ∛ pronto para colar como texto puro, ponto de código Unicode ou fórmula de planilha — sem precisar de editor de código.

Abrir formatos para copiar

Perguntas frequentes

Qual é o escape Unicode do símbolo de raiz cúbica em código?

Em literais de string de JavaScript, Java e C#, use \u221B (B maiúsculo). Em Python, use \u221b. Os dois resultam no mesmo caractere, ∛, que é o ponto de código Unicode U+221B — um ponto de código depois do símbolo de raiz quadrada, U+221A.

Como calculo uma raiz cúbica em JavaScript?

Use Math.cbrt(x) — por exemplo, Math.cbrt(27) retorna 3. Diferente do Math.sqrt(), ele trata números negativos corretamente também: Math.cbrt(-27) retorna -3. Não use Math.pow(x, 1/3) como substituto — Math.pow(-27, 1/3) retorna NaN, já que ele não sabe que raízes cúbicas de números negativos são bem definidas.

Como calculo uma raiz cúbica em Python?

Para números positivos, 27 ** (1/3) ou math.pow(27, 1/3) funcionam e retornam 3.0. Para números negativos fica complicado: (-27) ** (1/3) retorna um número complexo em vez de -3, e math.pow(-27, 1/3) lança um ValueError. Para obter um resultado real para qualquer sinal, use math.copysign(abs(x) ** (1/3), x).

Qual é a fórmula do Excel ou Google Sheets para raiz cúbica?

Nenhum dos dois tem uma função CBRT integrada. Use =SIGN(A1)*ABS(A1)^(1/3), que funciona tanto para números positivos quanto negativos. A fórmula simples =A1^(1/3) funciona para valores positivos, mas retorna um erro #NÚM! para negativos.

Qual é o comando LaTeX para uma raiz cúbica?

\sqrt[3]{x} renderiza um radical com um pequeno 3 na posição de índice e uma barra sobre o x. Removendo o número entre colchetes, \sqrt{x} renderiza uma raiz quadrada simples. Funciona em LaTeX, MathJax e KaTeX.

Por que Math.pow(-27, 1/3) retorna NaN em vez de -3?

Math.pow() (e o equivalente na maioria das linguagens da família C) implementa a exponenciação de forma genérica usando logaritmos, que não são definidos para bases negativas — por isso ele retorna NaN em vez de reconhecer que esse caso específico, uma raiz cúbica real, tem uma resposta bem definida. Funções dedicadas de raiz cúbica como Math.cbrt(), o Math.cbrt() do Java e o cbrt() do C são implementadas separadamente e tratam entradas negativas corretamente.