[Question]
  [
## Challenge:
Given two integers \$a\$ and \$b\$, with lengths \$A=length(a), B=length(b)\$, output an ASCII-art of the \$a^{th}\$ root of \$b\$, including the answer rounded to \$A\$ amount of decimal places.  
The size of the ASCII-art root also depends on \$A\$ and \$B\$.
**Example:**
\$a=123\$, \$b=1234\$
```
     ____
123 /1234 = 1.060
\  /
 \/
```
Because \$B=4\$, we have four `_` above the `1234`. Because \$A=3\$, we have three*†* `/` and \$1.0595772951...\$ is rounded to `1.060`.
*†**: This will not be equal to \$A\$, but \$\left\lceil{\frac{A}{2}}\right\rceil+1\$ instead.*
## Challenge rules:
* I/O format is flexible:
	+ You're allowed to take the input loose or as a pair of integers; doubles; strings; list of digits; etc.
	+ You're allowed to print the result directly to STDOUT; return it as a string; return it as a list/array/stream of string-lines; return it as a matrix of characters; etc.
* If input \$a\$ has an odd length \$A\$, the number is left-aligned in the output. So in the example above you're not allowed to have the second line as  `123/1234 = 1.060`! (It should be `123<space>/...` instead of `<space>123/...`)
* The `=` in the output should be surrounded by a single leading/trailing space
* Rounding can be done in any reasonable way (e.g. rounding towards 0, half-up, half-even, banker's rounding, etc.)
* If the rounded result ends with `0`s, you're allowed to omit them. (E.g., the `1.060` in the example above may also be `1.06`.)
* You can assume \$a>0\$ and \$b\geq0\$ (\$a\$ is positive, \$b\$ is non-negative).
* Trailing spaces in the output, and a single trailing newline is fine. Multiple trailing newlines or trailing whitespaces are not.
## General rules:
* This is [code-golf](/questions/tagged/code-golf "show questions tagged 'code-golf'"), so the shortest answer in bytes wins.  
Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.
* [Standard rules apply](https://codegolf.meta.stackexchange.com/questions/2419/default-for-code-golf-program-function-or-snippet/2422#2422) for your answer with [default I/O rules](https://codegolf.meta.stackexchange.com/questions/2447/default-for-code-golf-input-output-methods/), so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.
* [Default Loopholes](https://codegolf.meta.stackexchange.com/questions/1061/loopholes-that-are-forbidden-by-default) are forbidden.
* If possible, please add a link with a test for your code (e.g. [TIO](https://tio.run/#)).
* Also, adding an explanation for your answer is highly recommended.
## Test cases:
```
Inputs: a=3, b=100 (A=1, B=3)
   ___
3 /100 = 4.6
\/
Inputs: a=123, b=1234 (A=3, B=4)
     ____
123 /1234 = 1.060
\  /
 \/
Inputs: a=10, b=10 (A=2, B=2)
   __
10/10 = 1.26
\/
Inputs: a=1298123, b=9023847978341 (A=7, B=13)
         _____________
1298123 /9023847978341 = 1.0000230
\      /
 \    /
  \  /
   \/
Inputs: a=2500, b=0 (A=4, B=1)
     _
2500/0 = 0.0000
\  /
 \/
```
  
[Answer]
# [Python](https://www.python.org), 143 bytes
```
def f(a,b):
 A=len(str(-a))&-2;print(A*" ",len(str(b))*"_"+f"\n{a:<{A}}/{b} = {b**(1/a):.{A}}");p="\\"
 while A:A-=2;print(p+A*" "+"/");p=" "+p
```
[Attempt This Online!](https://ato.pxeger.com/run?1=NY9BboMwEADP5RWrPVS2McUYqoBTDv5APwAoAhUrSJFjUVdVhXhDH9BLLu2f-ptCUm6j2dVo9-vHffjj2V4u32_eRPnv50tvwJCWd1QFoMtTb8mrH0nUUnofyb0bB-uJZgjIt1lHKcMDhgZrO7XqadLzHE_dDCVMHWMkiVuqHlaLdO9KrGsM4P04nHrQSkflVnXhtRtifNtb0P2f9WzOI3gYLFRVyhMhGl4lciGZZiuKxV1Vka-6EDLNs12xy9MsWbx8FIKLplHBnSHM01t1e_oP)
[Answer]
# JavaScript (ES8), ~~158~~ 156 bytes
Expects `(a)(b)`, where both arguments are strings.
```
a=>b=>" "[R='repeat'](q=(A=a.length)+A%2)+` ${"_"[R](b.length)}
${a.padEnd(q)}/${b} = ${(b**=1/a).toFixed(A)}
`+(g=p=>q?p+" "[R](q-=2)+`/
`+g(" "+p):"")`\\`
```
[Try it online!](https://tio.run/##bY3RboIwGIXvfQrSYPxrI5TCIiz5MVxsD7DbaaRIZS6EFiXLEsKzs6rzxnB7vu@c8y1/5OVwPplu1ehSjUccJaYFpsQhnx@4OCujZLfYQYuQofRq1VTdF2XZXFCWO25P9tbbQfEgw8ztpWdk@daU0NLBd/ticNCaUCyXGPiSep1@P/2qEjJr5wwqNJi2G8Nun/Zqhddx37IKbMYMfSWE5tttPh50c9G18mpdwRFISCiQgHNC6ewJBeIORRhNUX5vThaT@L@ccBHG0TpZx2EUTKjihd92rjPjHw "JavaScript (Node.js) – Try It Online")
[Answer]
# [Charcoal](https://github.com/somebody1234/Charcoal), 37 bytes
```
θ⸿↘⊘⊕Ｌθ↑↗⊘⁺³Ｌθ⟦⭆η_⟧η = ﹪⁺⁺%.ＬθfＸＩη∕¹Ｎ
```
[Try it online!](https://tio.run/##VU7fC4IwEH73rxiDYMIK@vGk9JQPCRlS@FQRS5cbrM3W1D9/zQTNg7v7jrvvuy9nROeKCGtTzaVBbz/0egSvGg5DEKlWnnjJDAZ7IhpaoFjmmr6oNA4fqCwNc2QXoZeohqIgq0Z2Vk25qag/aI3BlNcfX87G9TIhFWIYwDv0b8OOje7AFoz2ElXUQvWyvwJnC/gv74Se0NVUtVSjHfl0WhhEvOEFRUsMYlnV5li/Hm7duemeWrtcrYHLjZ034gs "Charcoal – Try It Online") Link is to verbose version of code. Explanation:
```
θ
```
Output the first input.
```
⸿↘⊘⊕Ｌθ↑↗⊘⁺³Ｌθ⟦⭆η_⟧
```
Draw the square root sign.
```
η = ﹪⁺⁺%.ＬθfＸＩη∕¹Ｎ
```
Output the second input and the formatted result.
[Answer]
# [Lua](https://www.lua.org), 205 203 188 bytes
```
a,b=...p,c,s=print,a.rep,a.len d=s(a)r=d%2+d+1 p(c(" ",r)..c("_",s(b)))p(a.format("%s%s/%s = %."..d.."f",a,c(" ",d%2),b,b^(1/a)))for i=1,r//2 do p(c(" ",i-1).."\\"..c(" ",r-i*2-1).."/")end
```
[Attempt This Online!](https://ato.pxeger.com/run?1=jVTNjtMwEL5wqZ9iZKlSTB1n0-4iLjlw4I4Qt-6ycmKnjZQfK3akRQhehMtKiBOvwIuwT8M4zpYsSsVaSpvE830z_ubLfPteD_L-_sfgyvj171-S55kQwvCC28z0Veu4FL02-FvrFlRmI8n6TK23G7VJwURFRIHyngmBd7eU2yhnjJlIirLrG-kiurZrm6wtZLAWVAglBC0plzwgkYnxnOcfozSRiEQUVFnK-yTZgupOGao4xRz0-pqOmXzOuHq5DW8TynSrwhkeXnyN4_2ekDiGt3emlq10VdcK-HDUoO9kY2oNVWsGZ2GwWsFR9xokXvt0u-OAP5c3ghDJIceaUQxYXEgvcZ9iPA2h_vaSCmI4FBz8gYOAEBSEIOGITKE4yl4WTvcg60pabcGfvOiapmvBOgQeoBzawtduiUIyr_xyKSOlD0F-H5RlsCM9PqO4sMGdDSZcgEwhn2GHcQhK4QuG7sZwfLwi59I94agmHX39eJZD2-jWQVeCQ8FdZ0C2CqyRhT9SeP0s4q5zYD81eVcL38t3XktP8b4b8F-TR2dAz7BLEOwHwX8Tx6i_PRUy1TQyI9QvRNBbXJQh32paJyRZnWy8XCSgB0KAQwVC28hqdcbzAYFJ59u7knoJfWGBiSMBmu-cLiMBOu0JA0Jmn9M5CMxzvhl7on1uqRRWn-tCYiMnE02OQOL8_7VA4q0_K2b6nJ-FScXFqwsEMcLI-PX7d9hVSBIYR8A_vtBGS2zqVdjP8HJVo7FXJjrJ8HdazLo5alzrEm1VKT13A1kBLI6Vx6Qzgr46HJcYGMERRMjNTRhDP2fTZJqufwA)
Explanation soon:tm: once I'm out of school. I added an explanation to the footer of the ATO link.
[![enter image description here](https://i.stack.imgur.com/GXSt8.png)](https://i.stack.imgur.com/GXSt8.png)
[Answer]
# [Python 3.8 (pre-release)](https://docs.python.org/3.8/), 161 bytes
```
lambda a,b:f"{' '*(Z:=(A:=len(str(a)))+1&-2)} {'_'*(B:=len(str(b)))}\n{a:<{Z}}/{b} = {b**a**-1:.{A}f}"+"".join(f"\n{' '*i}\\{' '*(Z+2*~i)}/"for i in range(Z//2))
```
[Try it online!](https://tio.run/##Rc3LTsQgGAXgtT4FYWGBdqZcaqYldjE@Ri@ZQBwUM9IG2RiCr16pMXF38p2T/1@/wtviRLv6zfTTdlMf@kUBVWlpYCxAQdAge3SW/e3q0GfwSGGMS/Zw4DiBWFzy4Pm/1LlMk4tKPsUhpTrqBHoQNSGKkAOTx3hOJsESwuP7Yh0yMI/3LzZN09@7kpNvi1MNzeKBBdYBr9zrFQ11zTHedg27jqOoGKVzNTKeExfNHmm2X@ranTvKRduculMrGpadP1Ja0XmW93erty4gg0jIV38A "Python 3.8 (pre-release) – Try It Online")
[Answer]
# [Julia 1.0](http://julialang.org/), 137 bytes
```
!x=length("$x")
a\b=[" "^-~(X=!a+!a%2)*"_"^!b;"$a"*" "^(r=1:X÷2;!a%2)*"/$b = $(round(b^a^-1,digits=!a))";@. ' '^~-r*"\\"*" "^(X-2r)*'/']
```
[Try it online!](https://tio.run/##VY5RaoQwEIbfc4oxWEysukm0rFaEvvYGQl1LRLtNCVmJWfBpr9UD9GA20n3pvAz//zEf83XVSvJ124K10ZM5u0@CwxVTJLuhecOA@/RG2iaQj4F8EDTG77gPhhqHEsc7Jbbhz@3Pt6jv/BAO0EBI7OVqRjL0sk95Mqqzcou3UIrrlwwiiPpbamPcdXdNmwpL4@gQnbaPiwUFyoCd5KiVmRZCEfiRya6epV2mjLwal8Aya@WIon98tso4bTLif//X@PvJjFsOnDHEhd8iLxBnPvtYlXtVMZGXxbE6lnnBkXhiDNgv "Julia 1.0 – Try It Online")
[Answer]
# [Python](https://www.python.org), 169 bytes
```
def f(a,b):print(" "*((A:=len(str(a)))-1+(x:=A%2)),"","_"*len(str(b))+f"\n{a}{x*' '}/{b} =",round(b**1/a,A),*("\n"+i*" "+"\\"+(A-i-i-2+x)*" "+"/"for i in range(A//2+x)))
```
[Attempt This Online!](https://ato.pxeger.com/run?1=NZBRasMwDIbfdwojGJVsBztORpNAYLlHYDg07gzDKV4KGSEn2UtfNtiRdpsla4tefr5PSEKf36eP8XUIl8vXeXRJ8ftz6B1zaGVH1Sn6MCIw4IhNVb_1Ad_HiJaIklTgVNXNoyGSABJegN99RyQctGG2yzzxHdstau4WVoOMwzkcsOM8VVY2JDmubSA8X3cIaFsQ2CR-LSMmukIFbojMMx9YtOHYY6PUZoluBz87zGSqNT04TM0aTZb_Z73SKyyLTZTaZEW-L_dFlqebME9aS32bc3_AHw)
[Answer]
# [C (gcc)](https://gcc.gnu.org/), ~~222~~ 218 bytes
*-4 bytes thanks to [@ceilingcat](https://codegolf.stackexchange.com/users/52904/)*
```
#define P;printf(
#define X snprintf(0,0,"%.0f"
A;B;f(double a,double b){A=X,a)P"  %*c",A+A%2,95);for(B=X,b);--B P"_"))P"\n%.0f%*c%.0f = %.*f",a,1+A%2,47,b,A,pow(b,1/a));for(A-=~A&1;B++<A--P"\n%*c%*c",B,92,2+A-B,47));}
```
[Try it online!](https://tio.run/##PVDBjsIgFLz3KwibbsA@XEprasN6oF/QgwcPTQzUYkyUGt2NB@N@@nZpZeXCvHlv5jG0bN@2w/C26@zBdaiW58vBfVkS/TMbdHWB48ABx3NucaRkJS3Z9d/m2CENARh6V6sNaFpjhOJZi0ElKhZQLqi0/YVUvmmoZKxCNd5i6ucaNxr62fFCKxTPZxaDhnQS5gUYUHDub8RA@qHp00ex1Y96T2WVJJ@KscnFO4wLKygFiESxyov9@GM46YMj9P4KtCbaPyJE8koWTuP0tJ9bQCagxmEIKal@IUPBTiYyWpMMUs4nlAqPRZY/C@75QJfLsVVykS3zoiyWWZ5OHbHg/ks9fAy/rT3q/XVgt4EdT38 "C (gcc) – Try It Online")
]