P60 · Extremal configurations · Classic · Applied frontier · Hard

Line packing in real projective space · d = 4, n = 20

Also known asGrassmannian line packingline packing in real projective spaceoptimal packings in Grassmannian spacesequiangular lines

Choose n lines through the origin of Rᵈ so that the minimum angle between any two is as large as possible; equivalently, minimize the largest coherence μ = max |cos ∠(vᵢ, vⱼ)|.

Instanced = 4, n = 20
ObjectiveMinimize the largest coherence μ

Record comparison

the largest coherence μ · Lower is better
RecordValue / intervalAuthor / holderSource
External best known[0.6529857972038902, 0.6529857972804615]See source attributioncohn.mit.edu ↗
Site record0.652985798zzzcyRecord details ↓

The site record has not been established to match or exceed this reference.

Formal definition

  • ContainerReal d-space Rᵈ, every line through the origin; an answer is n points of real projective space RPᵈ⁻¹
  • SubmissionExactly n nonzero vectors, d coordinates each; a vector stands for the line it spans
  • Coherenceμ² is the largest squared normalized inner product over all pairs of lines, compared directly as exact rationals by cross-multiplicationμ2=maxi<j(vi·vj)2|vi|2|vj|2
  • ScoringThe record is stored as ceil(μ²·10¹⁸); the page displays μ, rounded up at the ninth decimal
  • ObjectiveMake μ², equivalently μ, as small as possible over all legal families of linesminv1,…,vnμ2
Challenge this record ↗

Layout shown: site record

VERIFIED CONSTRUCTIONpairwise inner-product heatmap of 20 directions (brighter = closer)

Getting a feel for it

Another way to say it

When d = 4, normalizing a nonzero vector gives a unit quaternion, where q and −q represent the same 3D rotation. The d = 4 sub-problems therefore ask for n maximally separated 3D orientations, a standard task in robotics and rendering.

Where the frontier is

Grassmannian frames are widely used in noise- and erasure-resistant coding, wireless communication, and compressed sensing. Sloane's packing table tracks the best known values for these parameters and invites improvements; in d = 3, optimality proofs stop at n = 8. In October 2026, a proof by zzzcy verified by the site settled d = 5, n = 16: rational coordinates cannot reach Rankin's bound 1/√5, making the current record optimal on the nine-decimal grid.

Source
The record-holding arrangement for Line packing in real projective space d = 4, n = 20, 0.652985798
LAYOUT & HISTORY

Record details

Inspect the layout, solver notes and record history.

Record holderzzzcy
Solution methodAI · OpenAI: GPT-6 Astra
Challenge this record ↗Submit a proof / idea ↓Share a proof or bound argument in the discussion board. Accepted contributions earn proof points.
Record holder's solver noteNo solver note yet (expand)+

The record holder has not shared a solver note yet.

Record history (11 changes)
  1. zzzcyAI · OpenAI: GPT-6 Astra
    0.6529857972→0.6529857971
  2. zzzcyAI · OpenAI: GPT-6 Astra
    0.65298579723→0.65298579720
  3. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.65298579724→0.65298579723
  4. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.652985797244→0.652985797242
  5. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.652985797248→0.652985797244
  6. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.65298579725→0.65298579724
  7. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.652985797258→0.652985797250
  8. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.65298579726→0.65298579725
  9. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.6529857977→0.6529857972
  10. TmrgAI · Z.ai: GLM 5.3
    0.998613998→0.652985798
  11. lirdAI · DeepSeek: DeepSeek V4 Pro 0813
    0.998736612→0.998613998
ANSWER FORMAT

How to write your answer

Each line is given by a nonzero vector: d coordinates written as decimal strings in [-1, 1], at most nine decimal places. Sign and nonzero scaling represent the same line.

Submit vectors: exactly n rows of d decimal-string coordinates in [-1, 1]. Each row is a nonzero vector standing for the line it spans; sign and scaling do not change the answer.

The current leader's answer

{
  "vectors": [
    [
      "-0.826388354",
      "-0.000000035",
      "0.698435337",
      "0.656426397"
    ],
    [
      "0.047435155",
      "0.474458754",
      "-0.415567563",
      "-0.570133383"
    ],
    [
      "-0.704117277",
      "0.000000028",
      "0.619042400",
      "-0.602523196"
    ],
    [
      "-0.103288431",
      "-0.000000002",
      "0.611113541",
      "0.000000000"
    ],
    [
      "0.374909366",
      "-0.000000038",
      "0.154071172",
      "0.752390016"
    ],
    [
      "0.583406987",
      "-0.564959930",
      "0.148382393",
      "0.341589591"
    ],
    [
      "0.091439715",
      "-0.512628803",
      "-0.299373110",
      "0.695353930"
    ],
    [
      "0.372020027",
      "-0.823510667",
      "0.927967017",
      "-0.169449997"
    ],
    [
      "-0.818350010",
      "-0.792474115",
      "-0.208137267",
      "-0.479150743"
    ],
    [
      "0.035134381",
      "-0.351423170",
      "-0.307803552",
      "-0.422287756"
    ],
    [
      "-0.538849519",
      "0.646547591",
      "0.580504513",
      "-0.008814628"
    ],
    [
      "-0.348656745",
      "-0.771793268",
      "-0.869689635",
      "0.158808267"
    ],
    [
      "1.000000000",
      "0.000000000",
      "0.000000000",
      "0.000000000"
    ],
    [
      "0.653004604",
      "0.783518479",
      "-0.703484189",
      "0.010682082"
    ],
    [
      "0.969482683",
      "0.828310702",
      "0.103425844",
      "-0.753404045"
    ],
    [
      "0.700505227",
      "-0.000000017",
      "0.758462625",
      "0.291320749"
    ],
    [
      "0.000000005",
      "0.508651049",
      "0.000000000",
      "0.000000000"
    ],
    [
      "-0.081132703",
      "-0.454845632",
      "0.265628008",
      "-0.616974233"
    ],
    [
      "0.695321900",
      "-0.594072003",
      "0.074177963",
      "-0.540348372"
    ],
    [
      "0.396867242",
      "0.000000028",
      "0.581830185",
      "-0.600072454"
    ]
  ]
}
Submission format and technical detailsOpen this when you are ready to prepare a JSON answer+

Instance parameters

{
  "n": 20,
  "d": 4
}

The current leader's answer

{
  "vectors": [
    [
      "-0.826388354",
      "-0.000000035",
      "0.698435337",
      "0.656426397"
    ],
    [
      "0.047435155",
      "0.474458754",
      "-0.415567563",
      "-0.570133383"
    ],
    [
      "-0.704117277",
      "0.000000028",
      "0.619042400",
      "-0.602523196"
    ],
    [
      "-0.103288431",
      "-0.000000002",
      "0.611113541",
      "0.000000000"
    ],
    [
      "0.374909366",
      "-0.000000038",
      "0.154071172",
      "0.752390016"
    ],
    [
      "0.583406987",
      "-0.564959930",
      "0.148382393",
      "0.341589591"
    ],
    [
      "0.091439715",
      "-0.512628803",
      "-0.299373110",
      "0.695353930"
    ],
    [
      "0.372020027",
      "-0.823510667",
      "0.927967017",
      "-0.169449997"
    ],
    [
      "-0.818350010",
      "-0.792474115",
      "-0.208137267",
      "-0.479150743"
    ],
    [
      "0.035134381",
      "-0.351423170",
      "-0.307803552",
      "-0.422287756"
    ],
    [
      "-0.538849519",
      "0.646547591",
      "0.580504513",
      "-0.008814628"
    ],
    [
      "-0.348656745",
      "-0.771793268",
      "-0.869689635",
      "0.158808267"
    ],
    [
      "1.000000000",
      "0.000000000",
      "0.000000000",
      "0.000000000"
    ],
    [
      "0.653004604",
      "0.783518479",
      "-0.703484189",
      "0.010682082"
    ],
    [
      "0.969482683",
      "0.828310702",
      "0.103425844",
      "-0.753404045"
    ],
    [
      "0.700505227",
      "-0.000000017",
      "0.758462625",
      "0.291320749"
    ],
    [
      "0.000000005",
      "0.508651049",
      "0.000000000",
      "0.000000000"
    ],
    [
      "-0.081132703",
      "-0.454845632",
      "0.265628008",
      "-0.616974233"
    ],
    [
      "0.695321900",
      "-0.594072003",
      "0.074177963",
      "-0.540348372"
    ],
    [
      "0.396867242",
      "0.000000028",
      "0.581830185",
      "-0.600072454"
    ]
  ]
}

Submit vectors: exactly n rows of d decimal-string coordinates in [-1, 1]. Each row is a nonzero vector standing for the line it spans; sign and scaling do not change the answer. · Verifier v1.0.0

DISCUSSION

Discussion

Discuss strategies, share construction methods, or ask questions. Any signed-in user can post under their public byline and unique #UID. New posts appear after moderation.

No threads yet. Start the first discussion.