1use crate::{MatrixF64, Value, VectorF64};
6use ffi::FFI;
7
8#[doc(alias = "gsl_multifit_linear_applyW")]
9pub fn applyW(
10 x: &MatrixF64,
11 w: &VectorF64,
12 y: &VectorF64,
13 wx: &mut MatrixF64,
14 wy: &mut VectorF64,
15) -> Result<(), Value> {
16 unsafe {
17 let ret = sys::gsl_multifit_linear_applyW(
18 x.unwrap_shared(),
19 w.unwrap_shared(),
20 y.unwrap_shared(),
21 wx.unwrap_unique(),
22 wy.unwrap_unique(),
23 );
24 result_handler!(ret, ())
25 }
26}
27
28#[doc(alias = "gsl_multifit_linear_L_decomp")]
29pub fn L_decomp(l: &mut MatrixF64, tau: &mut VectorF64) -> Result<(), Value> {
30 unsafe {
31 let ret = sys::gsl_multifit_linear_L_decomp(l.unwrap_unique(), tau.unwrap_unique());
32 result_handler!(ret, ())
33 }
34}
35
36#[doc(alias = "gsl_multifit_linear_lreg")]
37pub fn lreg(smin: f64, smax: f64, reg_param: &mut VectorF64) -> Result<(), Value> {
38 unsafe {
39 let ret = sys::gsl_multifit_linear_lreg(smin, smax, reg_param.unwrap_unique());
40 result_handler!(ret, ())
41 }
42}
43
44#[doc(alias = "gsl_multifit_linear_lcorner")]
46pub fn lcorner(rho: &VectorF64, eta: &VectorF64) -> Result<usize, Value> {
47 let mut idx = 0;
48 let ret = unsafe {
49 sys::gsl_multifit_linear_lcorner(rho.unwrap_shared(), eta.unwrap_shared(), &mut idx)
50 };
51 result_handler!(ret, idx)
52}
53
54#[doc(alias = "gsl_multifit_linear_lcorner2")]
56pub fn lcorner2(reg_param: &VectorF64, eta: &VectorF64) -> Result<usize, Value> {
57 let mut idx = 0;
58 let ret = unsafe {
59 sys::gsl_multifit_linear_lcorner2(reg_param.unwrap_shared(), eta.unwrap_shared(), &mut idx)
60 };
61 result_handler!(ret, idx)
62}
63
64#[doc(alias = "gsl_multifit_linear_Lk")]
65pub fn Lk(p: usize, k: usize, l: &mut MatrixF64) -> Result<(), Value> {
66 let ret = unsafe { sys::gsl_multifit_linear_Lk(p, k, l.unwrap_unique()) };
67 result_handler!(ret, ())
68}
69
70#[doc(alias = "gsl_multifit_linear_est")]
72pub fn linear_est(x: &VectorF64, c: &VectorF64, cov: &MatrixF64) -> Result<(f64, f64), Value> {
73 let mut y = 0.;
74 let mut y_err = 0.;
75 let ret = unsafe {
76 sys::gsl_multifit_linear_est(
77 x.unwrap_shared(),
78 c.unwrap_shared(),
79 cov.unwrap_shared(),
80 &mut y,
81 &mut y_err,
82 )
83 };
84 result_handler!(ret, (y, y_err))
85}
86
87#[doc(alias = "gsl_multifit_linear_residuals")]
88pub fn linear_residuals(
89 x: &MatrixF64,
90 y: &VectorF64,
91 c: &VectorF64,
92 r: &mut VectorF64,
93) -> Result<(), Value> {
94 let ret = unsafe {
95 sys::gsl_multifit_linear_residuals(
96 x.unwrap_shared(),
97 y.unwrap_shared(),
98 c.unwrap_shared(),
99 r.unwrap_unique(),
100 )
101 };
102 result_handler!(ret, ())
103}