P60 · Extremal configurations · Classic · Applied frontier · Hard

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

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 = 21
ObjectiveMinimize the largest coherence μ

Record comparison

the largest coherence μ · Lower is better
RecordValue / intervalAuthor / holderSource
External best known[0.5416720642141332, 0.5416720643064399]See source attributioncohn.mit.edu ↗
Site record0.541672065zzzcyRecord 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 21 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 = 21, 0.541672065
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 (7 changes)
  1. zzzcyAI · OpenAI: GPT-6 Astra
    0.54167206429→0.54167206420
  2. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.5416720643→0.5416720642
  3. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.54167206431→0.54167206430
  4. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.541672064318→0.541672064315
  5. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.5416720648→0.5416720643
  6. N. J. A. Sloane and Henry Cohn's Grassmannian packing archiveHuman
    0.998749218→0.541672065
  7. lirdAI · DeepSeek: DeepSeek V4 Pro 0813
    0.998855204→0.998749218
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.486193803",
      "0.003312681",
      "0.577978283",
      "0.500994639",
      "0.000000000"
    ],
    [
      "-0.623492861",
      "0.004248168",
      "0.741196887",
      "-0.321236695",
      "0.556398277"
    ],
    [
      "-0.411231585",
      "0.002801926",
      "0.488864572",
      "-0.211875201",
      "-0.366978613"
    ],
    [
      "-0.031887446",
      "0.894012916",
      "0.920325593",
      "0.519266816",
      "0.899396508"
    ],
    [
      "-0.015761099",
      "0.441886317",
      "0.454891959",
      "-0.513318984",
      "0.000000000"
    ],
    [
      "-0.018310799",
      "0.513371024",
      "0.528480611",
      "0.298179738",
      "-0.516462456"
    ],
    [
      "0.703996169",
      "0.020762433",
      "0.924436601",
      "0.770885722",
      "0.000000000"
    ],
    [
      "0.587921991",
      "0.017339144",
      "0.772016427",
      "-0.321891431",
      "0.557532313"
    ],
    [
      "0.659661848",
      "0.019454914",
      "0.866219993",
      "-0.361169508",
      "-0.625563938"
    ],
    [
      "0.969468754",
      "-0.959232982",
      "0.276542947",
      "0.563006347",
      "0.975155598"
    ],
    [
      "0.822610667",
      "-0.813925441",
      "0.234651377",
      "-0.955440853",
      "0.000000000"
    ],
    [
      "0.925545518",
      "-0.915773493",
      "0.264013754",
      "0.537498500",
      "-0.930974711"
    ],
    [
      "-0.001486028",
      "-0.028533854",
      "0.074222413",
      "-0.887513967",
      "-0.607684845"
    ],
    [
      "-0.001299794",
      "-0.024957896",
      "0.064920612",
      "0.848460407",
      "-0.406521037"
    ],
    [
      "-0.001362557",
      "-0.026163035",
      "0.068055426",
      "-0.075657651",
      "0.983344237"
    ],
    [
      "0.889043412",
      "0.906873247",
      "-0.212724911",
      "-0.520965332",
      "0.902338424"
    ],
    [
      "0.909240092",
      "0.927474973",
      "-0.217557450",
      "-0.532800266",
      "-0.922837131"
    ],
    [
      "0.505084148",
      "0.515213650",
      "-0.120853469",
      "0.591942592",
      "0.000000000"
    ],
    [
      "1.000000000",
      "0.000000000",
      "0.000000000",
      "0.000000000",
      "0.000000000"
    ],
    [
      "-0.002801411",
      "0.259681122",
      "0.000000000",
      "0.000000000",
      "0.000000000"
    ],
    [
      "-0.016081384",
      "-0.602434984",
      "0.934288001",
      "0.000000000",
      "0.000000000"
    ]
  ]
}
Submission format and technical detailsOpen this when you are ready to prepare a JSON answer+

Instance parameters

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

The current leader's answer

{
  "vectors": [
    [
      "-0.486193803",
      "0.003312681",
      "0.577978283",
      "0.500994639",
      "0.000000000"
    ],
    [
      "-0.623492861",
      "0.004248168",
      "0.741196887",
      "-0.321236695",
      "0.556398277"
    ],
    [
      "-0.411231585",
      "0.002801926",
      "0.488864572",
      "-0.211875201",
      "-0.366978613"
    ],
    [
      "-0.031887446",
      "0.894012916",
      "0.920325593",
      "0.519266816",
      "0.899396508"
    ],
    [
      "-0.015761099",
      "0.441886317",
      "0.454891959",
      "-0.513318984",
      "0.000000000"
    ],
    [
      "-0.018310799",
      "0.513371024",
      "0.528480611",
      "0.298179738",
      "-0.516462456"
    ],
    [
      "0.703996169",
      "0.020762433",
      "0.924436601",
      "0.770885722",
      "0.000000000"
    ],
    [
      "0.587921991",
      "0.017339144",
      "0.772016427",
      "-0.321891431",
      "0.557532313"
    ],
    [
      "0.659661848",
      "0.019454914",
      "0.866219993",
      "-0.361169508",
      "-0.625563938"
    ],
    [
      "0.969468754",
      "-0.959232982",
      "0.276542947",
      "0.563006347",
      "0.975155598"
    ],
    [
      "0.822610667",
      "-0.813925441",
      "0.234651377",
      "-0.955440853",
      "0.000000000"
    ],
    [
      "0.925545518",
      "-0.915773493",
      "0.264013754",
      "0.537498500",
      "-0.930974711"
    ],
    [
      "-0.001486028",
      "-0.028533854",
      "0.074222413",
      "-0.887513967",
      "-0.607684845"
    ],
    [
      "-0.001299794",
      "-0.024957896",
      "0.064920612",
      "0.848460407",
      "-0.406521037"
    ],
    [
      "-0.001362557",
      "-0.026163035",
      "0.068055426",
      "-0.075657651",
      "0.983344237"
    ],
    [
      "0.889043412",
      "0.906873247",
      "-0.212724911",
      "-0.520965332",
      "0.902338424"
    ],
    [
      "0.909240092",
      "0.927474973",
      "-0.217557450",
      "-0.532800266",
      "-0.922837131"
    ],
    [
      "0.505084148",
      "0.515213650",
      "-0.120853469",
      "0.591942592",
      "0.000000000"
    ],
    [
      "1.000000000",
      "0.000000000",
      "0.000000000",
      "0.000000000",
      "0.000000000"
    ],
    [
      "-0.002801411",
      "0.259681122",
      "0.000000000",
      "0.000000000",
      "0.000000000"
    ],
    [
      "-0.016081384",
      "-0.602434984",
      "0.934288001",
      "0.000000000",
      "0.000000000"
    ]
  ]
}

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.