/* * Copyright (c) 2018 Vikrant More * * SPDX-License-Identifier: Apache-2.0 */ #include #define MINDIFF 2.25e-308 float sqrtf(float square) { float root, last, diff; root = square / 3.0; if (square <= 0) { return 0; } do { last = root; root = (root + square / root) / 2.0; diff = root - last; } while (diff > MINDIFF || diff < -MINDIFF); return root; }