| 43 | |
| 44 | |
| 45 | def evaluate(name, values): |
| 46 | n = len(values) |
| 47 | if n == 0: |
| 48 | print(f'No values for {name}') |
| 49 | return |
| 50 | |
| 51 | print(f'Computing base and factor for {name} based on {n} values') |
| 52 | sum_xy = sum(x * y for [x, y] in values) |
| 53 | sum_x = sum(x for [x, y] in values) |
| 54 | sum_y = sum(y for [x, y] in values) |
| 55 | sum_xx = sum(x * x for [x, y] in values) |
| 56 | |
| 57 | factor = (n * sum_xy - sum_x * sum_y) / (n * sum_xx - sum_x * sum_x) |
| 58 | base = (sum_y - factor * sum_x) / n |
| 59 | |
| 60 | print(f'--> [{name}] Trend line: base: {base:.2f}, factor {factor:.2f}') |
| 61 | |
| 62 | min_y = min(y for [x, y] in values) |
| 63 | |
| 64 | simple_factor = (sum_y - n * min_y) / sum_x |
| 65 | print(f'--> [{name}] Simple analysis: Min {min_y}, ' |
| 66 | f'factor {simple_factor:.2f}') |
| 67 | |
| 68 | |
| 69 | def evaluate_wasm2js(values): |