Reminder issue to review this documentation in math/big:

// Copy sets z to x, with the same precision, rounding mode, and
// accuracy as x, and returns z. x is not changed even if z and
// x are the same.
func (z *Float) Copy(x *Float) *Float

The 2nd sentence is confusing.

Comment From: robpike

I was bitten by this because if x and z are the same, as in y := x.Copy(x), which seems prima facie to be how one might use this, it doesn't do what it looks like: x and y are now the same memory, despite y looking like it's a copy.

Perhaps some examples would help (there are none). Also the last sentence might instead be:

If x and z are the same Float, x will not be changed but the return value will also not be a copy of x.

Comment From: gopherbot

Change https://go.dev/cl/590635 mentions this issue: math/big: better doc string for Float.Copy, add example test