use crate::rounding::RoundingMode;
pub trait DecimalTranscendental: Sized {
fn ln_strict(self) -> Self;
fn ln_strict_with(self, mode: RoundingMode) -> Self;
fn ln_approx(self, working_digits: u32) -> Self;
fn ln_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn log_strict(self, base: Self) -> Self;
fn log_strict_with(self, base: Self, mode: RoundingMode) -> Self;
fn log_approx(self, base: Self, working_digits: u32) -> Self;
fn log_approx_with(self, base: Self, working_digits: u32, mode: RoundingMode) -> Self;
fn log2_strict(self) -> Self;
fn log2_strict_with(self, mode: RoundingMode) -> Self;
fn log2_approx(self, working_digits: u32) -> Self;
fn log2_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn log10_strict(self) -> Self;
fn log10_strict_with(self, mode: RoundingMode) -> Self;
fn log10_approx(self, working_digits: u32) -> Self;
fn log10_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn exp_strict(self) -> Self;
fn exp_strict_with(self, mode: RoundingMode) -> Self;
fn exp_approx(self, working_digits: u32) -> Self;
fn exp_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn exp2_strict(self) -> Self;
fn exp2_strict_with(self, mode: RoundingMode) -> Self;
fn exp2_approx(self, working_digits: u32) -> Self;
fn exp2_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn powf_strict(self, exp: Self) -> Self;
fn powf_strict_with(self, exp: Self, mode: RoundingMode) -> Self;
fn powf_approx(self, exp: Self, working_digits: u32) -> Self;
fn powf_approx_with(self, exp: Self, working_digits: u32, mode: RoundingMode) -> Self;
fn sqrt_strict(self) -> Self;
fn sqrt_strict_with(self, mode: RoundingMode) -> Self;
fn cbrt_strict(self) -> Self;
fn cbrt_strict_with(self, mode: RoundingMode) -> Self;
fn hypot_strict(self, other: Self) -> Self;
fn hypot_strict_with(self, other: Self, mode: RoundingMode) -> Self;
fn sin_strict(self) -> Self;
fn sin_strict_with(self, mode: RoundingMode) -> Self;
fn sin_approx(self, working_digits: u32) -> Self;
fn sin_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn cos_strict(self) -> Self;
fn cos_strict_with(self, mode: RoundingMode) -> Self;
fn cos_approx(self, working_digits: u32) -> Self;
fn cos_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn tan_strict(self) -> Self;
fn tan_strict_with(self, mode: RoundingMode) -> Self;
fn tan_approx(self, working_digits: u32) -> Self;
fn tan_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn atan_strict(self) -> Self;
fn atan_strict_with(self, mode: RoundingMode) -> Self;
fn atan_approx(self, working_digits: u32) -> Self;
fn atan_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn asin_strict(self) -> Self;
fn asin_strict_with(self, mode: RoundingMode) -> Self;
fn asin_approx(self, working_digits: u32) -> Self;
fn asin_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn acos_strict(self) -> Self;
fn acos_strict_with(self, mode: RoundingMode) -> Self;
fn acos_approx(self, working_digits: u32) -> Self;
fn acos_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn atan2_strict(self, other: Self) -> Self;
fn atan2_strict_with(self, other: Self, mode: RoundingMode) -> Self;
fn atan2_approx(self, other: Self, working_digits: u32) -> Self;
fn atan2_approx_with(self, other: Self, working_digits: u32, mode: RoundingMode) -> Self;
fn sinh_strict(self) -> Self;
fn sinh_strict_with(self, mode: RoundingMode) -> Self;
fn sinh_approx(self, working_digits: u32) -> Self;
fn sinh_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn cosh_strict(self) -> Self;
fn cosh_strict_with(self, mode: RoundingMode) -> Self;
fn cosh_approx(self, working_digits: u32) -> Self;
fn cosh_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn tanh_strict(self) -> Self;
fn tanh_strict_with(self, mode: RoundingMode) -> Self;
fn tanh_approx(self, working_digits: u32) -> Self;
fn tanh_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn asinh_strict(self) -> Self;
fn asinh_strict_with(self, mode: RoundingMode) -> Self;
fn asinh_approx(self, working_digits: u32) -> Self;
fn asinh_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn acosh_strict(self) -> Self;
fn acosh_strict_with(self, mode: RoundingMode) -> Self;
fn acosh_approx(self, working_digits: u32) -> Self;
fn acosh_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn atanh_strict(self) -> Self;
fn atanh_strict_with(self, mode: RoundingMode) -> Self;
fn atanh_approx(self, working_digits: u32) -> Self;
fn atanh_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn to_degrees_strict(self) -> Self;
fn to_degrees_strict_with(self, mode: RoundingMode) -> Self;
fn to_degrees_approx(self, working_digits: u32) -> Self;
fn to_degrees_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
fn to_radians_strict(self) -> Self;
fn to_radians_strict_with(self, mode: RoundingMode) -> Self;
fn to_radians_approx(self, working_digits: u32) -> Self;
fn to_radians_approx_with(self, working_digits: u32, mode: RoundingMode) -> Self;
}