← Home
```go
package main

import (
	"fmt"
	"math"
)

func feasible(D, a, b, c, d float64) bool {
	x1 := a - D
	x2 := a + D
	w1 := d - D
	w2 := d + D
	y1 := b - D
	y2 := b + D
	z1 := c - D
	z2 := c + D

	p1 := x1 * w1
	p2 := x1 * w2
	p3 := x2 * w1
	p4 := x2 * w2
	pmin := math.Min(math.Min(p1, p2), math.Min(p3, p4))
	pmax := math.Max(math.Max(p1, p2), math.Max(p3, p4))

	q1 := y1 * z1
	q2 := y1 * z2
	q3 := y2 * z1
	q4 := y2 * z2
	qmin := math.Min(math.Min(q1, q2), math.Min(q3, q4))
	qmax := math.Max(math.Max(q1, q2), math.Max(q3, q4))

	return pmin <= qmax && qmin <= pmax
}

func main() {
	var a, b, c, d float64
	fmt.Scan(&a, &b, &c, &d)

	lo := 0.0
	hi := math.Abs(a)
	if math.Abs(b) > hi {
		hi = math.Abs(b)
	}
	if math.Abs(c) > hi {
		hi = math.Abs(c)
	}
	if math.Abs(d) > hi {
		hi = math.Abs(d)
	}

	if hi == 0 {
		fmt.Println("0")
		return
	}

	for i := 0; i < 100; i++ {
		mid := (lo + hi) / 2.0
		if feasible(mid, a, b, c, d) {
			hi = mid
		} else {
			lo = mid
		}
	}

	fmt.Printf("%.12f\n", hi)
}
```