Skip to content

A crate to allow for function manipulation, comprehensive of basic expression simplification, derivation and numerical integration

Notifications You must be signed in to change notification settings

NotLudovico/ruut_functions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Features

  • 1D, 2D, 3D, ND (with custom variables) functions
  • Set params and assign values (default is 0.0)
  • Compute derivatives of any orders, gradients, hessian
  • F1D can be numerically integrated
  • Supports the following functions:
    • Ln, Sin, Cos, Tan, Sec, Csc, ASin, ACos, ATan, Sinh, Cosh, Tanh, Coth, Sech, Csch, ASinh, ACosh, ATanh, Abs
  • Some kind of expression semplification

Examples

use ruut_functions::{f3d, F3D};

fn main() {
    let mut f = f3d!("x^3+y^2+yx^2+[eta]");
    f.set_par("eta", 6.9);
    assert_eq!(f.eval(0., 0., 0.), 6.9);
    assert_eq!(
        f.gradient(),
        vec![f3d!("2xy+3x^2"), f3d!("2y+x^2"), f3d!("0")]
    );
    assert_eq!(
        f.hessian(),
        vec![
            vec![f3d!("2y+6x"), f3d!("2x"), f3d!("0")],
            vec![f3d!("2x"), f3d!("2"), f3d!("0")],
            vec![f3d!("0"), f3d!("0"), f3d!("0")]
        ]
    )


    let f = f1d!("abs(x)+sin(x)");
    assert_eq!(f.eval(-2),2.90929742683)
}

About

A crate to allow for function manipulation, comprehensive of basic expression simplification, derivation and numerical integration

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages