Function parametrizer::term::quick_parametrization[][src]

pub fn quick_parametrization<T: Number>(
    param: &str,
    functions: &[ParametrizerFunction]
) -> Result<Box<dyn Term<T> + Send + Sync>, ParametrizerError>
Expand description

Checks the piecewise case, which can only occur at the top level, then recurses normally using parametrize_string. Can be called directly with a properly formatted param string to avoid the potentially expensive formatting operations of create_parametrization

Examples

use crate::parametrizer::term::quick_parametrization;

let p1 = quick_parametrization::<i32>("p2>0|4>2|8>6", &[]).unwrap();
let p2 = quick_parametrization::<i32>("p2*t>0|4>2", &[]).unwrap();
let eq = quick_parametrization::<f32>("4+2*t", &[]).unwrap();

assert_eq!(2, p1.evaluate(1));
assert_eq!(4, p1.evaluate(5));
assert_eq!(2, p2.evaluate(1));
assert_eq!(4, p2.evaluate(9));
assert_eq!(9.0, eq.evaluate(2.5));
use crate::parametrizer::term::quick_parametrization;

let p1 = quick_parametrization::<i32>("p[10]t>0|t*t+-16>5", &[]).unwrap();
let p2 = quick_parametrization::<f32>("p[3.5]4>0|8>2", &[]).unwrap();

assert_eq!(4, p1.evaluate(4));
assert_eq!(48, p1.evaluate(18));
assert_eq!(3, p1.evaluate(23));
assert_eq!(4.0, p2.evaluate(8.9));
assert_eq!(8.0, p2.evaluate(30.1));