foc = 45 * pow(10, -3)
conf = 0.03 * pow(10, -3)
for ouv in [3.5, 4, 5.6, 8, 11, 16]:
  hyper = (foc * foc) / (ouv * conf) + foc
  ppn = (hyper * hyper) / (hyper + (hyper - foc))
  print(f"{ouv} {round(hyper, 1)}m {round(ppn, 1)}m")

for ouv in [3.5, 4, 5.6, 8, 11, 16]:
  hyper = (foc * foc) / (ouv * conf) + foc
  for p in [1, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5, 7, 10, 20]:
    dpn = (hyper * p) / (hyper - (p - foc))
    ppn = (hyper * p) / (hyper + (p - foc))
    pdc = dpn - ppn
    if dpn < 0:
      print(f"f/{ouv} p={p}m ppn={round(ppn,1)}m (pdc,dpn=infini)")
    else:
      print(f"f/{ouv} p={p}m pdc={round(pdc,1)}m ppn={round(ppn,1)}m dpn={round(dpn,1)}m")