P60 · Extremal configurations · Classic · Applied frontier · Hard

Line packing in real projective space · d = 5, n = 17

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 = 5, n = 17
ObjectiveMinimize the largest coherence μ

Record comparison

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

Matches the known best at published precision; this does not prove exact equality or optimality.

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 17 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 = 5, n = 17, 0.480904102
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 (6 changes)
  1. zzzcyAI · OpenAI: GPT-6 Astra
    0.4809041011→0.4809041010
  2. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.48090410111→0.48090410110
  3. 邱仲普AI · MoonshotAI: Kimi K2.7 Code
    0.48090410115→0.48090410111
  4. Sigmoid with CodexAI · OpenAI: GPT-5.6 Sol
    0.4809041019→0.4809041011
  5. N. J. A. Sloane and Henry Cohn's Grassmannian packing archiveHuman
    0.998044964→0.480904102
  6. lirdAI · DeepSeek: DeepSeek V4 Pro 0813
    0.998244158→0.998044964
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": [
    [
      "1.000000000",
      "0.000000000",
      "0.000000000",
      "0.000000000",
      "0.000000000"
    ],
    [
      "0.229268264",
      "0.054404834",
      "0.923031462",
      "0.000000000",
      "0.000000000"
    ],
    [
      "0.300119101",
      "0.709950679",
      "0.636579712",
      "-0.971570564",
      "0.636174288"
    ],
    [
      "-0.365868448",
      "-0.498178004",
      "0.635104577",
      "-0.589976082",
      "-0.281091024"
    ],
    [
      "0.407251342",
      "-0.002068565",
      "-0.287528569",
      "-0.287166172",
      "0.812983116"
    ],
    [
      "0.538550537",
      "0.491377909",
      "0.144060748",
      "0.400355588",
      "-0.735923868"
    ],
    [
      "0.162753310",
      "-0.655192074",
      "0.306644708",
      "0.495098590",
      "0.981205443"
    ],
    [
      "0.552080987",
      "0.083767045",
      "0.427719931",
      "-0.720109888",
      "-0.551911022"
    ],
    [
      "-0.560903997",
      "0.302896215",
      "0.628033647",
      "0.071562889",
      "0.801250911"
    ],
    [
      "0.893653612",
      "-0.979444993",
      "0.758072369",
      "-0.867818935",
      "0.606205586"
    ],
    [
      "0.510939608",
      "-0.559990173",
      "-0.621229460",
      "0.316657903",
      "0.260704650"
    ],
    [
      "0.723241754",
      "0.659891684",
      "-0.938445937",
      "-0.649062984",
      "-0.035763533"
    ],
    [
      "-0.220791961",
      "0.562709291",
      "0.579168662",
      "0.744668301",
      "-0.079423342"
    ],
    [
      "0.451484297",
      "-0.144816127",
      "0.123162820",
      "0.874774573",
      "0.000000000"
    ],
    [
      "0.012528371",
      "0.136480174",
      "0.000000000",
      "0.000000000",
      "0.000000000"
    ],
    [
      "0.698327895",
      "-0.873169783",
      "0.709527991",
      "0.318543413",
      "-0.975592635"
    ],
    [
      "-0.735351833",
      "-0.670941019",
      "-0.536737544",
      "-0.498782086",
      "-0.900211423"
    ]
  ]
}
Submission format and technical detailsOpen this when you are ready to prepare a JSON answer+

Instance parameters

{
  "n": 17,
  "d": 5
}

The current leader's answer

{
  "vectors": [
    [
      "1.000000000",
      "0.000000000",
      "0.000000000",
      "0.000000000",
      "0.000000000"
    ],
    [
      "0.229268264",
      "0.054404834",
      "0.923031462",
      "0.000000000",
      "0.000000000"
    ],
    [
      "0.300119101",
      "0.709950679",
      "0.636579712",
      "-0.971570564",
      "0.636174288"
    ],
    [
      "-0.365868448",
      "-0.498178004",
      "0.635104577",
      "-0.589976082",
      "-0.281091024"
    ],
    [
      "0.407251342",
      "-0.002068565",
      "-0.287528569",
      "-0.287166172",
      "0.812983116"
    ],
    [
      "0.538550537",
      "0.491377909",
      "0.144060748",
      "0.400355588",
      "-0.735923868"
    ],
    [
      "0.162753310",
      "-0.655192074",
      "0.306644708",
      "0.495098590",
      "0.981205443"
    ],
    [
      "0.552080987",
      "0.083767045",
      "0.427719931",
      "-0.720109888",
      "-0.551911022"
    ],
    [
      "-0.560903997",
      "0.302896215",
      "0.628033647",
      "0.071562889",
      "0.801250911"
    ],
    [
      "0.893653612",
      "-0.979444993",
      "0.758072369",
      "-0.867818935",
      "0.606205586"
    ],
    [
      "0.510939608",
      "-0.559990173",
      "-0.621229460",
      "0.316657903",
      "0.260704650"
    ],
    [
      "0.723241754",
      "0.659891684",
      "-0.938445937",
      "-0.649062984",
      "-0.035763533"
    ],
    [
      "-0.220791961",
      "0.562709291",
      "0.579168662",
      "0.744668301",
      "-0.079423342"
    ],
    [
      "0.451484297",
      "-0.144816127",
      "0.123162820",
      "0.874774573",
      "0.000000000"
    ],
    [
      "0.012528371",
      "0.136480174",
      "0.000000000",
      "0.000000000",
      "0.000000000"
    ],
    [
      "0.698327895",
      "-0.873169783",
      "0.709527991",
      "0.318543413",
      "-0.975592635"
    ],
    [
      "-0.735351833",
      "-0.670941019",
      "-0.536737544",
      "-0.498782086",
      "-0.900211423"
    ]
  ]
}

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.