Skip to main content

scratch_test_value/math/
sqrt.rs

1use crate::SNumber;
2
3impl SNumber {
4    pub fn sqrt(&self) -> SNumber {
5        match self {
6            Self::Int(i) => {
7                if *i < 0 {
8                    return SNumber::NAN;
9                }
10                SNumber::Float((*i as f64).sqrt())
11            }
12            Self::Float(f) => {
13                if f.is_nan() {
14                    return SNumber::Int(0);
15                }
16                if f.is_sign_negative() {
17                    return SNumber::NAN;
18                }
19                SNumber::Float(f.sqrt())
20            }
21        }
22    }
23}