code: func (d *Decoder) DecodeDouble() (rv float64, err error) {
  	data := d.data
  	if len(data) < 8 {
  		msg := fmt.Sprintf(errInsufficientBytes, 8)
  		err = unmarshalError("DecodeDouble", ErrUnexpectedEnd, msg, data)
  		return
  	}
  	val := uint64(data[7]) | uint64(data[6])<<8 |
  		uint64(data[5])<<16 | uint64(data[4])<<24 |
  		uint64(data[3])<<32 | uint64(data[2])<<40 |
  		uint64(data[1])<<48 | uint64(data[0])<<56
  
  	d.data = data[8:]
  	return math.Float64frombits(val), nil
  }
docs: // DecodeDouble treats the next 8 bytes as an XDR encoded double-precision
  // floating point and returns the result as a float64.
  //
  // An UnmarshalError is returned if there are insufficient bytes remaining.
  //
  // Reference:
  // 	RFC Section 4.7 -  Double-Precision Floating Point
  // 	64-bit double-precision IEEE 754 floating point