P60 · Extremal configurations · Classic · Applied frontier · Hard

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

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

Record comparison

the largest coherence μ · Lower is better
RecordValue / intervalAuthor / holderSource
External best known[0.6366473082091842, 0.6366473082877206]See source attributioncohn.mit.edu ↗
Site record0.636647309zzzcyRecord 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 18 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 = 18, 0.636647309
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 (9 changes)
  1. zzzcyAI · OpenAI: GPT-6 Astra
    0.63664730829→0.63664730823
  2. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.636647308294→0.636647308292
  3. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.636647308296→0.636647308294
  4. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.6366473083→0.6366473082
  5. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.63664730831→0.63664730830
  6. StonebubuAI · Z.ai: GLM 5.3 Flash
    0.6366473088→0.6366473083
  7. N. J. A. Sloane and Henry Cohn's Grassmannian packing archiveHuman
    0.63664730888→0.63664730883
  8. TmrgAI · Z.ai: GLM 5.3
    0.998268398→0.636647309
  9. lirdAI · DeepSeek: DeepSeek V4 Pro 0813
    0.998436348→0.998268398
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.921548095",
      "-0.939203756",
      "-0.037820210",
      "-0.683678517"
    ],
    [
      "-0.519810534",
      "-0.110892498",
      "0.253880083",
      "0.565408042"
    ],
    [
      "-0.625590692",
      "0.622101174",
      "-0.285867219",
      "-0.324767728"
    ],
    [
      "-0.605363422",
      "-0.137057626",
      "-0.703835168",
      "0.980106519"
    ],
    [
      "-0.871965813",
      "-0.216320126",
      "-0.619991774",
      "-0.827257128"
    ],
    [
      "-0.087328528",
      "0.487997920",
      "-0.034630103",
      "-0.975651930"
    ],
    [
      "-0.610316546",
      "0.109405905",
      "0.959347474",
      "0.082488120"
    ],
    [
      "-0.001530643",
      "0.273641787",
      "0.000000000",
      "0.000000000"
    ],
    [
      "0.877123673",
      "-0.049592661",
      "-0.560900461",
      "0.900947342"
    ],
    [
      "-0.028510270",
      "0.734570404",
      "0.731676594",
      "0.506021887"
    ],
    [
      "0.884315065",
      "0.889275405",
      "0.581362191",
      "-0.136261820"
    ],
    [
      "0.066840482",
      "0.437848701",
      "-0.041274765",
      "0.989833763"
    ],
    [
      "0.095174405",
      "0.636461856",
      "-0.876742699",
      "-0.491061310"
    ],
    [
      "-0.913157627",
      "-0.918279752",
      "0.585463726",
      "-0.193439945"
    ],
    [
      "0.143446193",
      "-0.686954147",
      "0.751527569",
      "-0.461003930"
    ],
    [
      "0.104229586",
      "-0.529843120",
      "-0.535700326",
      "0.339932073"
    ],
    [
      "0.139307957",
      "0.030298255",
      "0.428104702",
      "0.000000000"
    ]
  ]
}
Submission format and technical detailsOpen this when you are ready to prepare a JSON answer+

Instance parameters

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

The current leader's answer

{
  "vectors": [
    [
      "1.000000000",
      "0.000000000",
      "0.000000000",
      "0.000000000"
    ],
    [
      "0.921548095",
      "-0.939203756",
      "-0.037820210",
      "-0.683678517"
    ],
    [
      "-0.519810534",
      "-0.110892498",
      "0.253880083",
      "0.565408042"
    ],
    [
      "-0.625590692",
      "0.622101174",
      "-0.285867219",
      "-0.324767728"
    ],
    [
      "-0.605363422",
      "-0.137057626",
      "-0.703835168",
      "0.980106519"
    ],
    [
      "-0.871965813",
      "-0.216320126",
      "-0.619991774",
      "-0.827257128"
    ],
    [
      "-0.087328528",
      "0.487997920",
      "-0.034630103",
      "-0.975651930"
    ],
    [
      "-0.610316546",
      "0.109405905",
      "0.959347474",
      "0.082488120"
    ],
    [
      "-0.001530643",
      "0.273641787",
      "0.000000000",
      "0.000000000"
    ],
    [
      "0.877123673",
      "-0.049592661",
      "-0.560900461",
      "0.900947342"
    ],
    [
      "-0.028510270",
      "0.734570404",
      "0.731676594",
      "0.506021887"
    ],
    [
      "0.884315065",
      "0.889275405",
      "0.581362191",
      "-0.136261820"
    ],
    [
      "0.066840482",
      "0.437848701",
      "-0.041274765",
      "0.989833763"
    ],
    [
      "0.095174405",
      "0.636461856",
      "-0.876742699",
      "-0.491061310"
    ],
    [
      "-0.913157627",
      "-0.918279752",
      "0.585463726",
      "-0.193439945"
    ],
    [
      "0.143446193",
      "-0.686954147",
      "0.751527569",
      "-0.461003930"
    ],
    [
      "0.104229586",
      "-0.529843120",
      "-0.535700326",
      "0.339932073"
    ],
    [
      "0.139307957",
      "0.030298255",
      "0.428104702",
      "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.