1use std::os::raw::c_int;
6
7#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
8pub enum Mode {
9 PrecDouble,
10 PrecSingle,
11 PrecApprox,
12}
13
14#[allow(clippy::from_over_into)]
15impl Into<sys::gsl_mode_t> for Mode {
16 fn into(self) -> sys::gsl_mode_t {
17 match self {
18 Mode::PrecDouble => sys::GSL_PREC_DOUBLE,
19 Mode::PrecSingle => sys::GSL_PREC_SINGLE,
20 Mode::PrecApprox => sys::GSL_PREC_APPROX,
21 }
22 }
23}
24
25#[doc(hidden)]
26impl From<sys::gsl_mode_t> for Mode {
27 fn from(v: sys::gsl_mode_t) -> Mode {
28 match v {
29 sys::GSL_PREC_DOUBLE => Mode::PrecDouble,
30 sys::GSL_PREC_SINGLE => Mode::PrecSingle,
31 sys::GSL_PREC_APPROX => Mode::PrecApprox,
32 _ => panic!("Unknown Mode value"),
33 }
34 }
35}
36
37#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
38pub enum Value {
39 Success,
40 Failure,
41 Continue,
43 Domain,
45 Range,
47 Fault,
49 Invalid,
51 Failed,
53 Factorization,
55 Sanity,
57 NoMemory,
59 BadFunction,
61 RunAway,
63 MaxIteration,
65 ZeroDiv,
67 BadTolerance,
69 Tolerance,
71 UnderFlow,
73 OverFlow,
75 Loss,
77 Round,
79 BadLength,
81 NotSquare,
83 Singularity,
85 Diverge,
87 Unsupported,
89 Unimplemented,
91 Cache,
93 Table,
95 NoProgress,
97 NoProgressJacobian,
99 ToleranceF,
101 ToleranceX,
103 ToleranceG,
105 #[allow(clippy::upper_case_acronyms)]
107 EOF,
108 Unknown(i32),
110}
111
112impl Value {
113 pub fn is_success(self) -> bool {
114 self == Self::Success
115 }
116}
117
118#[doc(hidden)]
119#[allow(clippy::from_over_into)]
120impl Into<c_int> for Value {
121 fn into(self) -> c_int {
122 match self {
123 Self::Success => sys::GSL_SUCCESS,
124 Self::Failure => sys::GSL_FAILURE,
125 Self::Continue => sys::GSL_CONTINUE,
126 Self::Domain => sys::GSL_EDOM,
127 Self::Range => sys::GSL_ERANGE,
128 Self::Fault => sys::GSL_EFAULT,
129 Self::Invalid => sys::GSL_EINVAL,
130 Self::Failed => sys::GSL_EFAILED,
131 Self::Factorization => sys::GSL_EFACTOR,
132 Self::Sanity => sys::GSL_ESANITY,
133 Self::NoMemory => sys::GSL_ENOMEM,
134 Self::BadFunction => sys::GSL_EBADFUNC,
135 Self::RunAway => sys::GSL_ERUNAWAY,
136 Self::MaxIteration => sys::GSL_EMAXITER,
137 Self::ZeroDiv => sys::GSL_EZERODIV,
138 Self::BadTolerance => sys::GSL_EBADTOL,
139 Self::Tolerance => sys::GSL_ETOL,
140 Self::UnderFlow => sys::GSL_EUNDRFLW,
141 Self::OverFlow => sys::GSL_EOVRFLW,
142 Self::Loss => sys::GSL_ELOSS,
143 Self::Round => sys::GSL_EROUND,
144 Self::BadLength => sys::GSL_EBADLEN,
145 Self::NotSquare => sys::GSL_ENOTSQR,
146 Self::Singularity => sys::GSL_ESING,
147 Self::Diverge => sys::GSL_EDIVERGE,
148 Self::Unsupported => sys::GSL_EUNSUP,
149 Self::Unimplemented => sys::GSL_EUNIMPL,
150 Self::Cache => sys::GSL_ECACHE,
151 Self::Table => sys::GSL_ETABLE,
152 Self::NoProgress => sys::GSL_ENOPROG,
153 Self::NoProgressJacobian => sys::GSL_ENOPROGJ,
154 Self::ToleranceF => sys::GSL_ETOLF,
155 Self::ToleranceX => sys::GSL_ETOLX,
156 Self::ToleranceG => sys::GSL_ETOLG,
157 Self::EOF => sys::GSL_EOF,
158 Self::Unknown(x) => x,
159 }
160 }
161}
162
163#[doc(hidden)]
164impl From<c_int> for Value {
165 fn from(v: c_int) -> Value {
166 match v {
167 sys::GSL_SUCCESS => Self::Success,
168 sys::GSL_FAILURE => Self::Failure,
169 sys::GSL_CONTINUE => Self::Continue,
170 sys::GSL_EDOM => Self::Domain,
171 sys::GSL_ERANGE => Self::Range,
172 sys::GSL_EFAULT => Self::Fault,
173 sys::GSL_EINVAL => Self::Invalid,
174 sys::GSL_EFAILED => Self::Failed,
175 sys::GSL_EFACTOR => Self::Factorization,
176 sys::GSL_ESANITY => Self::Sanity,
177 sys::GSL_ENOMEM => Self::NoMemory,
178 sys::GSL_EBADFUNC => Self::BadFunction,
179 sys::GSL_ERUNAWAY => Self::RunAway,
180 sys::GSL_EMAXITER => Self::MaxIteration,
181 sys::GSL_EZERODIV => Self::ZeroDiv,
182 sys::GSL_EBADTOL => Self::BadTolerance,
183 sys::GSL_ETOL => Self::Tolerance,
184 sys::GSL_EUNDRFLW => Self::UnderFlow,
185 sys::GSL_EOVRFLW => Self::OverFlow,
186 sys::GSL_ELOSS => Self::Loss,
187 sys::GSL_EROUND => Self::Round,
188 sys::GSL_EBADLEN => Self::BadLength,
189 sys::GSL_ENOTSQR => Self::NotSquare,
190 sys::GSL_ESING => Self::Singularity,
191 sys::GSL_EDIVERGE => Self::Diverge,
192 sys::GSL_EUNSUP => Self::Unsupported,
193 sys::GSL_EUNIMPL => Self::Unimplemented,
194 sys::GSL_ECACHE => Self::Cache,
195 sys::GSL_ETABLE => Self::Table,
196 sys::GSL_ENOPROG => Self::NoProgress,
197 sys::GSL_ENOPROGJ => Self::NoProgressJacobian,
198 sys::GSL_ETOLF => Self::ToleranceF,
199 sys::GSL_ETOLX => Self::ToleranceX,
200 sys::GSL_ETOLG => Self::ToleranceG,
201 sys::GSL_EOF => Self::EOF,
202 x => Self::Unknown(x),
203 }
204 }
205}
206
207#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
208pub enum EigenSort {
209 ValAsc,
211 ValDesc,
213 AbsAsc,
215 AbsDesc,
217}
218
219#[doc(hidden)]
220#[allow(clippy::from_over_into)]
221impl Into<sys::gsl_eigen_sort_t> for EigenSort {
222 fn into(self) -> sys::gsl_eigen_sort_t {
223 match self {
224 Self::ValAsc => sys::gsl_eigen_sort_t_GSL_EIGEN_SORT_VAL_ASC,
225 Self::ValDesc => sys::gsl_eigen_sort_t_GSL_EIGEN_SORT_VAL_DESC,
226 Self::AbsAsc => sys::gsl_eigen_sort_t_GSL_EIGEN_SORT_ABS_ASC,
227 Self::AbsDesc => sys::gsl_eigen_sort_t_GSL_EIGEN_SORT_ABS_DESC,
228 }
229 }
230}
231
232#[doc(hidden)]
233impl From<sys::gsl_eigen_sort_t> for EigenSort {
234 fn from(v: sys::gsl_eigen_sort_t) -> EigenSort {
235 match v {
236 sys::gsl_eigen_sort_t_GSL_EIGEN_SORT_VAL_ASC => Self::ValAsc,
237 sys::gsl_eigen_sort_t_GSL_EIGEN_SORT_VAL_DESC => Self::ValDesc,
238 sys::gsl_eigen_sort_t_GSL_EIGEN_SORT_ABS_ASC => Self::AbsAsc,
239 sys::gsl_eigen_sort_t_GSL_EIGEN_SORT_ABS_DESC => Self::AbsDesc,
240 _ => panic!("Unknown EigenSort value"),
241 }
242 }
243}
244
245#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
253pub enum FftDirection {
254 Forward,
255 Backward,
256}
257
258#[doc(hidden)]
259#[allow(clippy::from_over_into)]
260impl Into<sys::gsl_fft_direction> for FftDirection {
261 fn into(self) -> sys::gsl_fft_direction {
262 match self {
263 Self::Forward => sys::gsl_fft_direction_gsl_fft_forward,
264 Self::Backward => sys::gsl_fft_direction_gsl_fft_backward,
265 }
266 }
267}
268
269#[doc(hidden)]
270impl From<sys::gsl_fft_direction> for FftDirection {
271 fn from(v: sys::gsl_fft_direction) -> FftDirection {
272 match v {
273 sys::gsl_fft_direction_gsl_fft_forward => Self::Forward,
274 sys::gsl_fft_direction_gsl_fft_backward => Self::Backward,
275 _ => panic!("Unknown FftDirection value"),
276 }
277 }
278}
279
280#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
283pub enum GaussKronrodRule {
284 Gauss15,
286 Gauss21,
288 Gauss31,
290 Gauss41,
292 Gauss51,
294 Gauss61,
296}
297
298#[doc(hidden)]
299#[allow(clippy::from_over_into)]
300impl Into<::std::os::raw::c_int> for GaussKronrodRule {
301 fn into(self) -> std::os::raw::c_int {
302 let x = match self {
303 Self::Gauss15 => sys::GSL_INTEG_GAUSS15,
304 Self::Gauss21 => sys::GSL_INTEG_GAUSS21,
305 Self::Gauss31 => sys::GSL_INTEG_GAUSS31,
306 Self::Gauss41 => sys::GSL_INTEG_GAUSS41,
307 Self::Gauss51 => sys::GSL_INTEG_GAUSS51,
308 Self::Gauss61 => sys::GSL_INTEG_GAUSS61,
309 };
310 x as _
311 }
312}
313
314#[doc(hidden)]
315impl From<::std::os::raw::c_int> for GaussKronrodRule {
316 fn from(v: std::os::raw::c_int) -> GaussKronrodRule {
317 match v as _ {
318 sys::GSL_INTEG_GAUSS15 => Self::Gauss15,
319 sys::GSL_INTEG_GAUSS21 => Self::Gauss21,
320 sys::GSL_INTEG_GAUSS31 => Self::Gauss31,
321 sys::GSL_INTEG_GAUSS41 => Self::Gauss41,
322 sys::GSL_INTEG_GAUSS51 => Self::Gauss51,
323 sys::GSL_INTEG_GAUSS61 => Self::Gauss61,
324 _ => panic!("Unknown GaussKronrodRule value"),
325 }
326 }
327}
328
329#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
330pub enum IntegrationQawo {
332 Cosine,
333 Sine,
334}
335
336#[doc(hidden)]
337#[allow(clippy::from_over_into)]
338impl Into<sys::gsl_integration_qawo_enum> for IntegrationQawo {
339 fn into(self) -> sys::gsl_integration_qawo_enum {
340 match self {
341 Self::Cosine => sys::gsl_integration_qawo_enum_GSL_INTEG_COSINE,
342 Self::Sine => sys::gsl_integration_qawo_enum_GSL_INTEG_SINE,
343 }
344 }
345}
346
347#[doc(hidden)]
348impl From<sys::gsl_integration_qawo_enum> for IntegrationQawo {
349 fn from(v: sys::gsl_integration_qawo_enum) -> IntegrationQawo {
350 match v {
351 sys::gsl_integration_qawo_enum_GSL_INTEG_COSINE => Self::Cosine,
352 sys::gsl_integration_qawo_enum_GSL_INTEG_SINE => Self::Sine,
353 _ => panic!("Unknown IntegrationQawo value"),
354 }
355 }
356}
357
358#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
366pub enum VegasMode {
367 Importance,
368 ImportanceOnly,
369 Stratified,
370}
371
372#[doc(hidden)]
373#[allow(clippy::from_over_into)]
374impl Into<::std::os::raw::c_int> for VegasMode {
375 fn into(self) -> std::os::raw::c_int {
376 match self {
377 Self::Importance => sys::GSL_VEGAS_MODE_IMPORTANCE,
378 Self::ImportanceOnly => sys::GSL_VEGAS_MODE_IMPORTANCE_ONLY,
379 Self::Stratified => sys::GSL_VEGAS_MODE_STRATIFIED,
380 }
381 }
382}
383
384#[doc(hidden)]
385impl From<::std::os::raw::c_int> for VegasMode {
386 fn from(v: std::os::raw::c_int) -> VegasMode {
387 match v {
388 sys::GSL_VEGAS_MODE_IMPORTANCE => Self::Importance,
389 sys::GSL_VEGAS_MODE_IMPORTANCE_ONLY => Self::ImportanceOnly,
390 sys::GSL_VEGAS_MODE_STRATIFIED => Self::Stratified,
391 _ => panic!("Unknown VegasMode value"),
392 }
393 }
394}
395
396#[allow(clippy::upper_case_acronyms)]
398#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
399pub enum ODEiv {
400 Inc,
402 Nil,
404 Dec,
406}
407
408#[doc(hidden)]
409#[allow(clippy::from_over_into)]
410impl Into<c_int> for ODEiv {
411 fn into(self) -> c_int {
412 match self {
413 Self::Inc => sys::GSL_ODEIV_HADJ_INC,
414 Self::Nil => sys::GSL_ODEIV_HADJ_NIL,
415 Self::Dec => sys::GSL_ODEIV_HADJ_DEC,
416 }
417 }
418}
419
420#[doc(hidden)]
421impl From<c_int> for ODEiv {
422 fn from(v: c_int) -> ODEiv {
423 match v {
424 sys::GSL_ODEIV_HADJ_INC => Self::Inc,
425 sys::GSL_ODEIV_HADJ_NIL => Self::Nil,
426 sys::GSL_ODEIV_HADJ_DEC => Self::Dec,
427 _ => panic!("Unknown ODEiv value"),
428 }
429 }
430}
431
432#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
433pub enum WaveletDirection {
434 Forward,
435 Backward,
436}
437
438#[doc(hidden)]
439#[allow(clippy::from_over_into)]
440impl Into<sys::gsl_wavelet_direction> for WaveletDirection {
441 fn into(self) -> sys::gsl_wavelet_direction {
442 match self {
443 Self::Forward => sys::gsl_wavelet_direction_gsl_wavelet_forward,
444 Self::Backward => sys::gsl_wavelet_direction_gsl_wavelet_backward,
445 }
446 }
447}
448
449#[doc(hidden)]
450impl From<sys::gsl_wavelet_direction> for WaveletDirection {
451 fn from(v: sys::gsl_wavelet_direction) -> WaveletDirection {
452 match v {
453 sys::gsl_wavelet_direction_gsl_wavelet_forward => Self::Forward,
454 sys::gsl_wavelet_direction_gsl_wavelet_backward => Self::Backward,
455 _ => panic!("Unknown WaveletDirection value"),
456 }
457 }
458}
459
460#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
461pub enum SfLegendreNorm {
462 Schmidt,
463 SphericalHarmonic,
464 Full,
465 None,
466}
467
468#[doc(hidden)]
469#[allow(clippy::from_over_into)]
470impl Into<sys::gsl_sf_legendre_t> for SfLegendreNorm {
471 fn into(self) -> sys::gsl_sf_legendre_t {
472 match self {
473 SfLegendreNorm::Schmidt => sys::gsl_sf_legendre_t_GSL_SF_LEGENDRE_SCHMIDT,
474 SfLegendreNorm::SphericalHarmonic => sys::gsl_sf_legendre_t_GSL_SF_LEGENDRE_SPHARM,
475 SfLegendreNorm::Full => sys::gsl_sf_legendre_t_GSL_SF_LEGENDRE_FULL,
476 SfLegendreNorm::None => sys::gsl_sf_legendre_t_GSL_SF_LEGENDRE_NONE,
477 }
478 }
479}
480
481#[doc(hidden)]
482impl From<sys::gsl_sf_legendre_t> for SfLegendreNorm {
483 fn from(v: sys::gsl_sf_legendre_t) -> SfLegendreNorm {
484 match v {
485 sys::gsl_sf_legendre_t_GSL_SF_LEGENDRE_SCHMIDT => SfLegendreNorm::Schmidt,
486 sys::gsl_sf_legendre_t_GSL_SF_LEGENDRE_SPHARM => SfLegendreNorm::SphericalHarmonic,
487 sys::gsl_sf_legendre_t_GSL_SF_LEGENDRE_FULL => SfLegendreNorm::Full,
488 sys::gsl_sf_legendre_t_GSL_SF_LEGENDRE_NONE => SfLegendreNorm::None,
489 _ => panic!("Unknown SfLegendreNorm value"),
490 }
491 }
492}
493
494#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
495pub enum CblasTranspose {
496 NoTranspose,
497 Transpose,
498 ConjugateTranspose,
499}
500
501#[doc(hidden)]
502#[allow(clippy::from_over_into)]
503impl Into<sys::CBLAS_TRANSPOSE> for CblasTranspose {
504 fn into(self) -> sys::CBLAS_TRANSPOSE {
505 match self {
506 Self::NoTranspose => sys::CBLAS_TRANSPOSE_CblasNoTrans,
507 Self::Transpose => sys::CBLAS_TRANSPOSE_CblasTrans,
508 Self::ConjugateTranspose => sys::CBLAS_TRANSPOSE_CblasConjTrans,
509 }
510 }
511}
512
513#[doc(hidden)]
514impl From<sys::CBLAS_TRANSPOSE> for CblasTranspose {
515 fn from(v: sys::CBLAS_TRANSPOSE) -> CblasTranspose {
516 match v {
517 sys::CBLAS_TRANSPOSE_CblasNoTrans => Self::NoTranspose,
518 sys::CBLAS_TRANSPOSE_CblasTrans => Self::Transpose,
519 sys::CBLAS_TRANSPOSE_CblasConjTrans => Self::ConjugateTranspose,
520 _ => panic!("Unknown CblasTranspose value"),
521 }
522 }
523}
524
525#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
526pub enum CblasUplo {
527 Upper,
528 Lower,
529}
530
531#[doc(hidden)]
532#[allow(clippy::from_over_into)]
533impl Into<sys::CBLAS_UPLO> for CblasUplo {
534 fn into(self) -> sys::CBLAS_UPLO {
535 match self {
536 Self::Upper => sys::CBLAS_UPLO_CblasUpper,
537 Self::Lower => sys::CBLAS_UPLO_CblasLower,
538 }
539 }
540}
541
542#[doc(hidden)]
543impl From<sys::CBLAS_UPLO> for CblasUplo {
544 fn from(v: sys::CBLAS_UPLO) -> CblasUplo {
545 match v {
546 sys::CBLAS_UPLO_CblasUpper => Self::Upper,
547 sys::CBLAS_UPLO_CblasLower => Self::Lower,
548 _ => panic!("Unknown CblasUplo value"),
549 }
550 }
551}
552
553#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
554pub enum CblasOrder {
555 RowMajor,
556 ColumnMajor,
557}
558
559#[doc(hidden)]
560#[allow(clippy::from_over_into)]
561impl Into<sys::CBLAS_ORDER> for CblasOrder {
562 fn into(self) -> sys::CBLAS_ORDER {
563 match self {
564 Self::RowMajor => sys::CBLAS_ORDER_CblasRowMajor,
565 Self::ColumnMajor => sys::CBLAS_ORDER_CblasColMajor,
566 }
567 }
568}
569
570#[doc(hidden)]
571impl From<sys::CBLAS_ORDER> for CblasOrder {
572 fn from(v: sys::CBLAS_ORDER) -> CblasOrder {
573 match v {
574 sys::CBLAS_ORDER_CblasRowMajor => Self::RowMajor,
575 sys::CBLAS_ORDER_CblasColMajor => Self::ColumnMajor,
576 _ => panic!("Unknown CblasOrder value"),
577 }
578 }
579}
580
581#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
582pub enum CblasSide {
583 Left,
584 Right,
585}
586
587#[doc(hidden)]
588#[allow(clippy::from_over_into)]
589impl Into<sys::CBLAS_SIDE> for CblasSide {
590 fn into(self) -> sys::CBLAS_SIDE {
591 match self {
592 Self::Left => sys::CBLAS_SIDE_CblasLeft,
593 Self::Right => sys::CBLAS_SIDE_CblasRight,
594 }
595 }
596}
597
598#[doc(hidden)]
599impl From<sys::CBLAS_SIDE> for CblasSide {
600 fn from(v: sys::CBLAS_SIDE) -> CblasSide {
601 match v {
602 sys::CBLAS_SIDE_CblasLeft => Self::Left,
603 sys::CBLAS_SIDE_CblasRight => Self::Right,
604 _ => panic!("Unknown CblasSide value"),
605 }
606 }
607}
608
609#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
610pub enum CblasDiag {
611 NonUnit,
612 Unit,
613}
614
615#[doc(hidden)]
616#[allow(clippy::from_over_into)]
617impl Into<sys::CBLAS_SIDE> for CblasDiag {
618 fn into(self) -> sys::CBLAS_SIDE {
619 match self {
620 Self::NonUnit => sys::CBLAS_DIAG_CblasNonUnit,
621 Self::Unit => sys::CBLAS_DIAG_CblasUnit,
622 }
623 }
624}
625
626#[doc(hidden)]
627impl From<sys::CBLAS_SIDE> for CblasDiag {
628 fn from(v: sys::CBLAS_SIDE) -> CblasDiag {
629 match v {
630 sys::CBLAS_DIAG_CblasNonUnit => Self::NonUnit,
631 sys::CBLAS_DIAG_CblasUnit => Self::Unit,
632 _ => panic!("Unknown CblasDiag value"),
633 }
634 }
635}
636
637#[cfg(feature = "v2_5")]
638#[cfg_attr(feature = "dox", doc(cfg(feature = "v2_5")))]
639#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
640pub enum FilterEnd {
641 PadZero,
642 PadValue,
643 Truncate,
644}
645
646#[doc(hidden)]
647#[allow(clippy::from_over_into)]
648#[cfg(feature = "v2_5")]
649impl Into<sys::gsl_filter_end_t> for FilterEnd {
650 fn into(self) -> sys::gsl_filter_end_t {
651 match self {
652 Self::PadZero => sys::gsl_filter_end_t_GSL_FILTER_END_PADZERO,
653 Self::PadValue => sys::gsl_filter_end_t_GSL_FILTER_END_PADVALUE,
654 Self::Truncate => sys::gsl_filter_end_t_GSL_FILTER_END_TRUNCATE,
655 }
656 }
657}
658
659#[doc(hidden)]
660#[cfg(feature = "v2_5")]
661impl From<sys::gsl_filter_end_t> for FilterEnd {
662 fn from(v: sys::gsl_filter_end_t) -> FilterEnd {
663 match v {
664 sys::gsl_filter_end_t_GSL_FILTER_END_PADZERO => Self::PadZero,
665 sys::gsl_filter_end_t_GSL_FILTER_END_PADVALUE => Self::PadValue,
666 sys::gsl_filter_end_t_GSL_FILTER_END_TRUNCATE => Self::Truncate,
667 _ => panic!("Unknown FilterEnd value"),
668 }
669 }
670}
671
672#[cfg(feature = "v2_5")]
673#[cfg_attr(feature = "dox", doc(cfg(feature = "v2_5")))]
674#[derive(Clone, PartialEq, PartialOrd, Debug, Copy)]
675pub enum FilterScale {
676 MedianAbsoluteDeviation,
677 InterQuartileRange,
678 SN,
679 QN,
680}
681
682#[doc(hidden)]
683#[allow(clippy::from_over_into)]
684#[cfg(feature = "v2_5")]
685impl Into<sys::gsl_filter_scale_t> for FilterScale {
686 fn into(self) -> sys::gsl_filter_scale_t {
687 match self {
688 Self::MedianAbsoluteDeviation => sys::gsl_filter_scale_t_GSL_FILTER_SCALE_MAD,
689 Self::InterQuartileRange => sys::gsl_filter_scale_t_GSL_FILTER_SCALE_IQR,
690 Self::SN => sys::gsl_filter_scale_t_GSL_FILTER_SCALE_SN,
691 Self::QN => sys::gsl_filter_scale_t_GSL_FILTER_SCALE_QN,
692 }
693 }
694}
695
696#[doc(hidden)]
697#[cfg(feature = "v2_5")]
698impl From<sys::gsl_filter_scale_t> for FilterScale {
699 fn from(v: sys::gsl_filter_scale_t) -> FilterScale {
700 match v {
701 sys::gsl_filter_scale_t_GSL_FILTER_SCALE_MAD => Self::MedianAbsoluteDeviation,
702 sys::gsl_filter_scale_t_GSL_FILTER_SCALE_IQR => Self::InterQuartileRange,
703 sys::gsl_filter_scale_t_GSL_FILTER_SCALE_SN => Self::SN,
704 sys::gsl_filter_scale_t_GSL_FILTER_SCALE_QN => Self::QN,
705 _ => panic!("Unknown FilterScale value"),
706 }
707 }
708}