/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2024-2024. All rights reserved.
 */
package matrix4cj

import std.math.*

public class Maths {
    /** sqrt(a^2 + b^2) without under/overflow. **/
    public static func hypot(a: Float64, b: Float64): Float64 {
        var r: Float64 = 0.0
        if (abs(a) > abs(b)) {
            r = b / a
            r = abs(a) * sqrt(1.0 + r * r)
        } else if (b != 0.0) {
            r = a / b
            r = abs(b) * sqrt(1.0 + r * r)
        } else {
            r = 0.0
        }
        return r
    }
}