Functional Weave
Code in TypeScript

stats.standard-deviation@1.0.0

vectors.json

2,266 bytes · view raw

[
  { "name": "the textbook population example is exactly 2", "args": [[2, 4, 4, 4, 5, 5, 7, 9], "population", 6], "expect": 2 },
  { "name": "the same data as a sample is sqrt(32/7)", "args": [[2, 4, 4, 4, 5, 5, 7, 9], "sample", 6], "expect": 2.13809 },
  { "name": "a population deviation of exactly 0.5 rounds away from zero to 1", "args": [[0, 1], "population", 0], "expect": 1 },
  { "name": "sample of 0 and 1 is sqrt(1/2)", "args": [[0, 1], "sample", 4], "expect": 0.7071 },
  { "name": "large close values do not cancel (population sqrt 22.5)", "args": [[1000000004, 1000000007, 1000000013, 1000000016], "population", 6], "expect": 4.743416 },
  { "name": "large close values do not cancel (sample sqrt 30)", "args": [[1000000004, 1000000007, 1000000013, 1000000016], "sample", 6], "expect": 5.477226 },
  { "name": "one value has no population spread", "args": [[42.5], "population", 3], "expect": 0 },
  { "name": "a constant sample has no spread", "args": [[3, 3, 3], "sample", 3], "expect": 0 },
  { "name": "negative values: population of -1 and 1 is 1", "args": [[-1, 1], "population", 3], "expect": 1 },
  { "name": "negative values: sample of -1 and 1 is sqrt 2", "args": [[-1, 1], "sample", 3], "expect": 1.414 },
  { "name": "decimal inputs: population of 0.1, 0.2, 0.3 is sqrt(2/300)", "args": [[0.1, 0.2, 0.3], "population", 6], "expect": 0.08165 },
  { "name": "twelve places of sqrt 1.25", "args": [[1, 2, 3, 4], "population", 12], "expect": 1.11803398875 },
  { "name": "zero places rounds down below a half", "args": [[1, 2, 3, 4], "population", 0], "expect": 1 },
  { "name": "an empty list is an error", "args": [[], "population", 2], "expectError": "values must not be empty" },
  { "name": "a sample of one value is an error", "args": [[5], "sample", 2], "expectError": "sample standard deviation needs at least 2 values" },
  { "name": "an unknown kind is an error", "args": [[1, 2], "unbiased", 2], "expectError": "unknown standard deviation kind \"unbiased\"" },
  { "name": "negative decimals is an error", "args": [[1, 2], "sample", -1], "expectError": "decimals must be a whole number from 0 to 12" },
  { "name": "a non-number value is an error", "args": [[1, "x"], "sample", 2], "expectError": "values must be finite numbers" }
]