From 22aa036e6868dee58633a3701c42ae36d92e4bd2 Mon Sep 17 00:00:00 2001 From: AltmannPeter <134623745+AltmannPeter@users.noreply.github.com> Date: Fri, 28 Jul 2023 09:45:53 +0200 Subject: [PATCH] Update script.js --- script.js | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/script.js b/script.js index 931aa60..d219c3b 100644 --- a/script.js +++ b/script.js @@ -1,13 +1,14 @@ -let entropyData = []; +let analysisData = []; -function calculateShannonEntropy() { - const coinBias = parseFloat(document.getElementById("coin-bias").value); +function calculateBitVectorAnalysis() { + const coinBiasInput = document.getElementById("coin-bias"); + const coinBias = parseFloat(coinBiasInput.value.trim()); if (isNaN(coinBias) || coinBias < 0 || coinBias > 100) { document.getElementById("result").textContent = "Please enter a valid probability of 1 (between 0 and 100%)."; } else { // Check for duplicate entries - const exists = entropyData.some(data => data.bias === coinBias); + const exists = analysisData.some(data => data.bias === coinBias); if (exists) { document.getElementById("result").textContent = "This value already exists in the table."; return; @@ -16,32 +17,41 @@ function calculateShannonEntropy() { const probabilityOfOne = coinBias / 100; const probabilityOfZero = 1 - probabilityOfOne; const shannonEntropy = -(probabilityOfOne * Math.log2(probabilityOfOne) + probabilityOfZero * Math.log2(probabilityOfZero)); + const compressibility = shannonEntropy / (Math.log2(1 << 20)); // 1 << 20 represents the number of possibilities in the bit vector const formattedEntropy = shannonEntropy.toLocaleString(undefined, { maximumFractionDigits: 4 }); + const formattedCompressibility = compressibility.toLocaleString(undefined, { maximumFractionDigits: 4 }); - entropyData.push({ bias: coinBias, entropy: shannonEntropy }); + analysisData.push({ bias: coinBias, entropy: shannonEntropy, compressibility: compressibility }); // Sort the table and update - entropyData.sort((a, b) => b.entropy - a.entropy); + analysisData.sort((a, b) => b.entropy - a.entropy); updateTable(); document.getElementById("result").textContent = ""; // Clear any previous messages + coinBiasInput.value = ""; // Clear the input field after adding to the table } } function updateTable() { - const tableBody = document.getElementById("entropy-table"); + const tableBody = document.getElementById("analysis-table"); tableBody.innerHTML = ""; - entropyData.forEach((data) => { + analysisData.forEach((data) => { const row = document.createElement("tr"); const biasCell = document.createElement("td"); const entropyCell = document.createElement("td"); + const compressibilityCell = document.createElement("td"); biasCell.textContent = data.bias.toFixed(2) + "%"; entropyCell.textContent = data.entropy.toFixed(4); + compressibilityCell.textContent = data.compressibility.toFixed(4); row.appendChild(biasCell); row.appendChild(entropyCell); + row.appendChild(compressibilityCell); tableBody.appendChild(row); }); } + +// Show an empty table when the page loads +updateTable();