Struct Tower

Source
pub struct Tower<T> { /* private fields */ }
Expand description

The radicals adjoined so far.

Implementations§

Source§

impl<T: Arith> Tower<T>

Source

pub fn new() -> Self

An empty tower: values are plain T.

Source

pub fn depth(&self) -> usize

Number of radicals adjoined.

Source

pub fn value(&self, value: T) -> Nested<T>

A plain value.

Source

pub fn from_f64(&self, value: f64) -> Nested<T>

The value of a finite f64 (see Arith::from_f64).

Source

pub fn sqrt(&mut self, radicand: &Nested<T>) -> Result<Nested<T>, ExactError>

Adjoin sqrt(radicand) and return it as a value.

The radicand must not be negative. That is not checked here, since the interval tier may be unable to tell; Tower::sign of any value involving a negative radicand returns None, which the exact tier reports as ExactError::Undefined.

§Errors

ExactError::TooDeep beyond MAX_DEPTH radicals.

§Panics

If radicand came from a different tower (its level exceeds this tower’s depth).

Source

pub fn add(&self, x: &Nested<T>, y: &Nested<T>) -> Nested<T>

x + y.

Source

pub fn sub(&self, x: &Nested<T>, y: &Nested<T>) -> Nested<T>

x - y.

Source

pub fn neg(&self, x: &Nested<T>) -> Nested<T>

-x.

Source

pub fn mul(&self, x: &Nested<T>, y: &Nested<T>) -> Nested<T>

x * y.

Source

pub fn sign(&self, x: &Nested<T>) -> Option<Sign>

The sign of x, or None when T cannot decide or a radicand involved is negative.

Approximate arithmetics first evaluate x numerically through Arith::sqrt_enclosure; that decides whenever x is visibly away from zero. Otherwise, and always for exact arithmetics, signs are decided by case analysis on the coefficients.

Source

pub fn cmp(&self, x: &Nested<T>, y: &Nested<T>) -> Option<Sign>

The sign of x - y.

Trait Implementations§

Source§

impl<T: Clone> Clone for Tower<T>

Source§

fn clone(&self) -> Tower<T>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Debug> Debug for Tower<T>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<T: Default> Default for Tower<T>

Source§

fn default() -> Tower<T>

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Tower<T>

§

impl<T> RefUnwindSafe for Tower<T>
where T: RefUnwindSafe,

§

impl<T> Send for Tower<T>
where T: Send,

§

impl<T> Sync for Tower<T>
where T: Sync,

§

impl<T> Unpin for Tower<T>
where T: Unpin,

§

impl<T> UnwindSafe for Tower<T>
where T: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.