native_neural_network 0.3.1

Lib no_std Rust for native neural network (.rnn)
Documentation
use crate::math::exp_log::{expd, expf, lnd, lnf};

#[inline]
pub fn powf(x: f32, y: f32) -> f32 {
    if x.is_nan() || y.is_nan() {
        return f32::NAN;
    }

    if x == 0.0 {
        return if y > 0.0 {
            0.0
        } else if y == 0.0 {
            1.0
        } else {
            f32::INFINITY
        };
    }

    if x == 1.0 {
        return 1.0;
    }

    if y == 0.0 {
        return 1.0;
    }

    if x < 0.0 {
        return f32::NAN;
    }

    expf(y * lnf(x))
}

#[inline]
pub fn powd(x: f64, y: f64) -> f64 {
    if x.is_nan() || y.is_nan() {
        return f64::NAN;
    }
    if x == 0.0 {
        return if y > 0.0 {
            0.0
        } else if y == 0.0 {
            1.0
        } else {
            f64::INFINITY
        };
    }
    if x == 1.0 {
        return 1.0;
    }
    if y == 0.0 {
        return 1.0;
    }
    if x < 0.0 {
        return f64::NAN;
    }
    expd(y * lnd(x))
}