# BigFloat precision issue

**URL:** https://discourse.julialang.org/t/bigfloat-precision-issue/9786
**Category:** Numerics
**Created:** [March 18, 2018, 1:21pm UTC](https://discourse.julialang.org/t/bigfloat-precision-issue/9786 "2018-03-18T13:21:57Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![vepiteski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vepiteski/32/3746_2.png) [@vepiteski](https://discourse.julialang.org/u/vepiteski)
#### Post date: [March 18, 2018, 1:21pm UTC](https://discourse.julialang.org/t/bigfloat-precision-issue/9786/1 "2018-03-18T13:21:57Z")

</div>

julia\> N=BigFloat(2.0,2048);  
julia\> S=sqrt(N);  
julia\> S^2-N  
-1.727233711018888925077270372560079914223200072887256277004740694033718360632485e-77  
julia\> S.prec  
256  
julia\> N.prec  
2048

Why only 256 precision from the sqrt?

Jean-Pierre Dussault

---

<div class="post-metadata">

### Author: ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)
#### Post date: [March 18, 2018, 1:41pm UTC](https://discourse.julialang.org/t/bigfloat-precision-issue/9786/2 "2018-03-18T13:41:04Z")

</div>

```julia
julia> setprecision(2048)
2048

julia> S = sqrt(N);

julia> S.prec
2048

```

But perhaps the precision of the output should be inherited from the input argument?

---

<div class="post-metadata">

### Author: ![vepiteski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vepiteski/32/3746_2.png) [@vepiteski](https://discourse.julialang.org/u/vepiteski)
#### Post date: [March 18, 2018, 2:13pm UTC](https://discourse.julialang.org/t/bigfloat-precision-issue/9786/3 "2018-03-18T14:13:14Z")

</div>

Thanks!

---

<div class="post-metadata">

### Author: ![ScottPJones](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/scottpjones/32/146_2.png) [@ScottPJones](https://discourse.julialang.org/u/ScottPJones)
#### Post date: [March 18, 2018, 4:25pm UTC](https://discourse.julialang.org/t/bigfloat-precision-issue/9786/4 "2018-03-18T16:25:22Z")

</div>

I agree - I think that operations on BigFloats should always promote to the largest precision of the inputs.

That probably was difficult to do when the precision was only controlled by `setprecision`, but now that it can be specified in the constructor, it just makes sense.

---

<div class="post-metadata">

### Author: ![pasha](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pasha/32/3319_2.png) [@pasha](https://discourse.julialang.org/u/pasha)
#### Post date: [March 18, 2018, 5:12pm UTC](https://discourse.julialang.org/t/bigfloat-precision-issue/9786/5 "2018-03-18T17:12:44Z")

</div>

A workaround can be to use a `setprecision` block, like:

```julia
julia> setprecision(BigFloat, 2048) do
       N = BigFloat(2.0)
       S = sqrt(N)
       @show N.prec
       @show S.prec
       end
N.prec = 2048
S.prec = 2048

```

I tend to use those blocks anyway, but I sure did also assume that they promoted to the largest precision when working outside of a block.
