| 60 | |
| 61 | template<typename T> |
| 62 | double chi2_statistic(array input, array expected, bool print = false) { |
| 63 | expected *= sum<T>(input) / sum<T>(expected); |
| 64 | array diff = input - expected; |
| 65 | |
| 66 | double chi2 = sum<T>((diff * diff) / expected); |
| 67 | if (print) { |
| 68 | array legend = af::seq(input.elements()); |
| 69 | legend -= (input.elements() / 2.); |
| 70 | legend *= (14. / input.elements()); |
| 71 | |
| 72 | af_print( |
| 73 | join(1, legend, expected.as(f32), input.as(f32), diff.as(f32))); |
| 74 | } |
| 75 | |
| 76 | return chi2; |
| 77 | } |
| 78 | |
| 79 | template<> |
| 80 | double chi2_statistic<half_float::half>(array input, array expected, |