Struct libceed::vector::Vector [−][src]
Implementations
impl<'a> Vector<'a>
[src]
pub fn create(ceed: &'a Ceed, n: usize) -> Result<Self, CeedError>
[src]
pub fn from_slice(ceed: &'a Ceed, v: &[f64]) -> Result<Self, CeedError>
[src]
Create a Vector from a slice
arguments
slice
- values to initialize vector with
let vec = vector::Vector::from_slice(&ceed, &[1., 2., 3.]).unwrap(); assert_eq!(vec.length(), 3, "Incorrect length from slice");
pub fn from_array(ceed: &'a Ceed, v: &mut [f64]) -> Result<Self, CeedError>
[src]
Create a Vector from a mutable array reference
arguments
slice
- values to initialize vector with
let mut rust_vec = vec![1., 2., 3.]; let vec = libceed::vector::Vector::from_array(&ceed, &mut rust_vec).unwrap(); assert_eq!(vec.length(), 3, "Incorrect length from slice");
pub fn length(&self) -> usize
[src]
Returns the length of a CeedVector
let vec = ceed.vector(10).unwrap(); let n = vec.length(); assert_eq!(n, 10, "Incorrect length");
pub fn len(&self) -> usize
[src]
Returns the length of a CeedVector
let vec = ceed.vector(10).unwrap(); assert_eq!(vec.len(), 10, "Incorrect length");
pub fn set_value(&mut self, value: f64) -> Result<i32, CeedError>
[src]
Set the CeedVector to a constant value
arguments
val
- Value to be used
let len = 10; let mut vec = ceed.vector(len).unwrap(); let val = 42.0; vec.set_value(val).unwrap(); vec.view().iter().for_each(|v| { assert_eq!(*v, val, "Value not set correctly"); });
pub fn set_slice(&mut self, slice: &[f64]) -> Result<i32, CeedError>
[src]
Set values from a slice of the same length
arguments
slice
- values to into self; length must match
let mut vec = ceed.vector(4).unwrap(); vec.set_slice(&[10., 11., 12., 13.]).unwrap(); vec.view().iter().enumerate().for_each(|(i, v)| { assert_eq!(*v, 10. + i as f64, "Slice not set correctly"); });
pub fn sync(&self, mtype: MemType) -> Result<i32, CeedError>
[src]
Sync the CeedVector to a specified memtype
arguments
mtype
- Memtype to be synced
let len = 10; let mut vec = ceed.vector(len).unwrap(); let val = 42.0; vec.set_value(val); vec.sync(MemType::Host).unwrap(); vec.view().iter().for_each(|v| { assert_eq!(*v, val, "Value not set correctly"); });
pub fn view(&self) -> VectorView<'_>
[src]
Create an immutable view
let vec = ceed.vector_from_slice(&[10., 11., 12., 13.]).unwrap(); let v = vec.view(); assert_eq!(v[0..2], [10., 11.]); // It is valid to have multiple immutable views let w = vec.view(); assert_eq!(v[1..], w[1..]);
pub fn view_mut(&mut self) -> VectorViewMut<'_>
[src]
Create an mutable view
let mut vec = ceed.vector_from_slice(&[10., 11., 12., 13.]).unwrap(); { let mut v = vec.view_mut(); v[2] = 9.; } let w = vec.view(); assert_eq!(w[2], 9., "View did not mutate data");
pub fn norm(&self, ntype: NormType) -> Result<f64, CeedError>
[src]
Return the norm of a CeedVector
arguments
ntype
- Norm type One, Two, or Max
let vec = ceed.vector_from_slice(&[1., 2., 3., 4.]).unwrap(); let max_norm = vec.norm(NormType::Max).unwrap(); assert_eq!(max_norm, 4.0, "Incorrect Max norm"); let l1_norm = vec.norm(NormType::One).unwrap(); assert_eq!(l1_norm, 10., "Incorrect L1 norm"); let l2_norm = vec.norm(NormType::Two).unwrap(); assert!((l2_norm - 5.477) < 1e-3, "Incorrect L2 norm");
pub fn scale(self, alpha: f64) -> Result<Self, CeedError>
[src]
Compute x = alpha x for a CeedVector
arguments
alpha
- scaling factor
let mut vec = ceed.vector_from_slice(&[0., 1., 2., 3., 4.]).unwrap(); vec = vec.scale(-1.0).unwrap(); vec.view().iter().enumerate().for_each(|(i, &v)| { assert_eq!(v, -(i as f64), "Value not set correctly"); });
pub fn axpy(self, alpha: f64, x: &Vector<'_>) -> Result<Self, CeedError>
[src]
Compute y = alpha x + y for a pair of CeedVectors
arguments
alpha
- scaling factorx
- second vector, must be different than self
let x = ceed.vector_from_slice(&[0., 1., 2., 3., 4.]).unwrap(); let mut y = ceed.vector_from_slice(&[0., 1., 2., 3., 4.]).unwrap(); y = y.axpy(-0.5, &x).unwrap(); y.view().iter().enumerate().for_each(|(i, &v)| { assert_eq!(v, (i as f64) / 2.0, "Value not set correctly"); });
pub fn pointwise_mult(
self,
x: &Vector<'_>,
y: &Vector<'_>
) -> Result<Self, CeedError>
[src]
self,
x: &Vector<'_>,
y: &Vector<'_>
) -> Result<Self, CeedError>
Compute the pointwise multiplication w = x .* y for CeedVectors
arguments
x
- first vector for producty
- second vector for product
let mut w = ceed.vector_from_slice(&[0., 1., 2., 3., 4.]).unwrap(); let x = ceed.vector_from_slice(&[0., 1., 2., 3., 4.]).unwrap(); let y = ceed.vector_from_slice(&[0., 1., 2., 3., 4.]).unwrap(); w = w.pointwise_mult(&x, &y).unwrap(); w.view().iter().enumerate().for_each(|(i, &v)| { assert_eq!(v, (i as f64).powf(2.0), "Value not set correctly"); });
pub fn pointwise_scale(self, x: &Vector<'_>) -> Result<Self, CeedError>
[src]
Compute the pointwise multiplication w = w .* x for CeedVectors
arguments
x
- second vector for product
let mut w = ceed.vector_from_slice(&[0., 1., 2., 3., 4.]).unwrap(); let x = ceed.vector_from_slice(&[0., 1., 2., 3., 4.]).unwrap(); w = w.pointwise_scale(&x).unwrap(); w.view().iter().enumerate().for_each(|(i, &v)| { assert_eq!(v, (i as f64).powf(2.0), "Value not set correctly"); });
pub fn pointwise_square(self) -> Result<Self, CeedError>
[src]
Compute the pointwise multiplication w = w .* w for a CeedVector
let mut w = ceed.vector_from_slice(&[0., 1., 2., 3., 4.]).unwrap(); w = w.pointwise_square().unwrap(); w.view().iter().enumerate().for_each(|(i, &v)| { assert_eq!(v, (i as f64).powf(2.0), "Value not set correctly"); });
Trait Implementations
impl<'a> Debug for Vector<'a>
[src]
impl<'a> Display for Vector<'a>
[src]
fn fmt(&self, f: &mut Formatter<'_>) -> Result
[src]
View a Vector
let vec = libceed::vector::Vector::from_slice(&ceed, &[1., 2., 3.]).unwrap(); assert_eq!( vec.to_string(), "CeedVector length 3 1.00000000 2.00000000 3.00000000 " )
impl<'a> Drop for Vector<'a>
[src]
impl From<&'_ Vector<'_>> for *mut CeedVector_private
[src]
impl<'a> From<&'a Vector<'_>> for VectorOpt<'a>
[src]
Construct a VectorOpt reference from a Vector reference
Auto Trait Implementations
impl<'a> RefUnwindSafe for Vector<'a>
impl<'a> !Send for Vector<'a>
impl<'a> !Sync for Vector<'a>
impl<'a> Unpin for Vector<'a>
impl<'a> UnwindSafe for Vector<'a>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,