)]}'
{
  "commit": "b4b26475acce0be9b7e9844db4af5a1b9929cab1",
  "tree": "9b59d1bcaf09f1f1127ef4d4e3d28d604ac47ed7",
  "parents": [
    "22648a237d150d648d76a68e8f30a4623e0b1a1d"
  ],
  "author": {
    "name": "Differential Privacy Team",
    "email": "noreply@google.com",
    "time": "Mon Dec 12 23:49:03 2022 -0800"
  },
  "committer": {
    "name": "Kulankhina",
    "email": "oleksandra.kulankhina@gmail.com",
    "time": "Thu Dec 15 17:53:11 2022 +0100"
  },
  "message": "Incorporating the \"Connect the Dots\" algorithm in PLD accounting library.\n\nReference: https://arxiv.org/abs/2207.04380\n\nMain changes are as follows:\n- Allow vectorized calls to get_delta_for_epsilon,\n- Construct pessimistic PLDPmf using Connect-the-Dots algorithm,\n- Support Connect-the-Dots algorithm for privacy loss distributions of additive noise mechanisms.\n\nSome other minor changes included as follows:\n- Add checks to make sure that truncation bounds in self convolution does not result in truncation of the input list,\n- Use more numerically stable scipy.special.logsumexp for moment generating function computation,\n- Use more efficient np.roll for shifting the output result for self convolution.\n\nPiperOrigin-RevId: 494208119\nChange-Id: I1c50896b3252c19c8802b1e1ebfd6f0ba94c3be2\nGitOrigin-RevId: fca6f9ba22ab0a7b3d020d3c5bc95d30405261df\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0ac2f5647ba9666bc1f0e27526c2945f4ed15d47",
      "old_mode": 33188,
      "old_path": "common_docs/Privacy_Loss_Distributions.pdf",
      "new_id": "049c65efe4c824bc45c4ee43eed3fe20ab7eb414",
      "new_mode": 33188,
      "new_path": "common_docs/Privacy_Loss_Distributions.pdf"
    },
    {
      "type": "modify",
      "old_id": "249327e4230b3e7bcd8513819a2866db42dfcef2",
      "old_mode": 33188,
      "old_path": "python/dp_accounting/pld/common.py",
      "new_id": "e468c9a29c3c2c1851ed22496253bc6fb0a76707",
      "new_mode": 33188,
      "new_path": "python/dp_accounting/pld/common.py"
    },
    {
      "type": "modify",
      "old_id": "ce5666e418651c0bc08896b4ab3a067c62dbd5aa",
      "old_mode": 33188,
      "old_path": "python/dp_accounting/pld/common_test.py",
      "new_id": "cdfac8a06187b80226fd4d220e44bc36be56769c",
      "new_mode": 33188,
      "new_path": "python/dp_accounting/pld/common_test.py"
    },
    {
      "type": "modify",
      "old_id": "51af04ab6cfe0d8313c523876aee183c9c389a40",
      "old_mode": 33188,
      "old_path": "python/dp_accounting/pld/pld_pmf.py",
      "new_id": "6063d8c3c6b1960ccde08f47b5e835df11e4fb23",
      "new_mode": 33188,
      "new_path": "python/dp_accounting/pld/pld_pmf.py"
    },
    {
      "type": "modify",
      "old_id": "f5979305d0bec4daad226cc304e01145cd203393",
      "old_mode": 33188,
      "old_path": "python/dp_accounting/pld/pld_pmf_test.py",
      "new_id": "4e22c735baf8ee680ca56fce556c877d4b30f326",
      "new_mode": 33188,
      "new_path": "python/dp_accounting/pld/pld_pmf_test.py"
    },
    {
      "type": "modify",
      "old_id": "16297078bd21556bd41b65ec07bdafecb55ab458",
      "old_mode": 33188,
      "old_path": "python/dp_accounting/pld/privacy_loss_distribution.py",
      "new_id": "9a478ea01d1721ec9565198ec7503438a718248a",
      "new_mode": 33188,
      "new_path": "python/dp_accounting/pld/privacy_loss_distribution.py"
    },
    {
      "type": "modify",
      "old_id": "cd0766c33262d72e3d0d23931a52d22a5f454a34",
      "old_mode": 33188,
      "old_path": "python/dp_accounting/pld/privacy_loss_distribution_test.py",
      "new_id": "092ffb4893d02512cdd7f2a485b961a3e9fb659b",
      "new_mode": 33188,
      "new_path": "python/dp_accounting/pld/privacy_loss_distribution_test.py"
    },
    {
      "type": "modify",
      "old_id": "c4fd0fb106823e6a36e97f60fe50c990d363da16",
      "old_mode": 33188,
      "old_path": "python/dp_accounting/pld/privacy_loss_mechanism.py",
      "new_id": "e5f4504633fd0aa6d27344bbf35bf2340029dc0c",
      "new_mode": 33188,
      "new_path": "python/dp_accounting/pld/privacy_loss_mechanism.py"
    },
    {
      "type": "modify",
      "old_id": "11e30d057436f5636a5ce4cfd9c967a0b51c2153",
      "old_mode": 33188,
      "old_path": "python/dp_accounting/pld/privacy_loss_mechanism_test.py",
      "new_id": "8174aeb754f794d9d70acb0639f7d1b0a3823398",
      "new_mode": 33188,
      "new_path": "python/dp_accounting/pld/privacy_loss_mechanism_test.py"
    }
  ]
}
