| 1526 | } |
| 1527 | |
| 1528 | AccuracyResult measure_rsqrt() { |
| 1529 | AccuracyResult r = {}; |
| 1530 | const int N = 10; // Spot testing: 10 key points adequate for range coverage (was 50) |
| 1531 | const float lo = 0.01f; |
| 1532 | const float hi = 1000.0f; |
| 1533 | float sumErr = 0; |
| 1534 | for (int i = 0; i < N; ++i) { |
| 1535 | float x = lo + (hi - lo) * i / (N - 1); |
| 1536 | float ref = 1.0f / fl::sqrtf(x); |
| 1537 | float got = s16x16::rsqrt(s16x16(x)).to_float(); |
| 1538 | float err = fl::fabsf(got - ref); |
| 1539 | sumErr += err; |
| 1540 | if (err > r.maxErr) { r.maxErr = err; r.worstInput = x; } |
| 1541 | } |
| 1542 | r.avgErr = sumErr / N; |
| 1543 | r.nSamples = N; |
| 1544 | return r; |
| 1545 | } |
| 1546 | |
| 1547 | AccuracyResult measure_pow(float exponent, float baseLo, float baseHi) { |
| 1548 | AccuracyResult r = {}; |
no test coverage detected