rgsl/
debye.rs

1//
2// A rust binding for the GSL library by Guillaume Gomez (guillaume1.gomez@gmail.com)
3//
4
5/*!
6The Debye functions D_n(x) are defined by the following integral,
7
8D_n(x) = n/x^n \int_0^x dt (t^n/(e^t - 1))
9
10For further information see Abramowitz & Stegun, Section 27.1.
11!*/
12
13use crate::{types, Value};
14use std::mem::MaybeUninit;
15
16/// This routine computes the first-order Debye function D_1(x) = (1/x) \int_0^x dt (t/(e^t - 1)).
17#[doc(alias = "gsl_sf_debye_1")]
18pub fn _1(x: f64) -> f64 {
19    unsafe { ::sys::gsl_sf_debye_1(x) }
20}
21
22/// This routine computes the first-order Debye function D_1(x) = (1/x) \int_0^x dt (t/(e^t - 1)).
23#[doc(alias = "gsl_sf_debye_1_e")]
24pub fn _1_e(x: f64) -> Result<types::Result, Value> {
25    let mut result = MaybeUninit::<sys::gsl_sf_result>::uninit();
26    let ret = unsafe { ::sys::gsl_sf_debye_1_e(x, result.as_mut_ptr()) };
27
28    result_handler!(ret, unsafe { result.assume_init() }.into())
29}
30
31/// This routine computes the second-order Debye function D_2(x) = (2/x^2) \int_0^x dt (t^2/(e^t - 1)).
32#[doc(alias = "gsl_sf_debye_2")]
33pub fn _2(x: f64) -> f64 {
34    unsafe { ::sys::gsl_sf_debye_2(x) }
35}
36
37/// This routine computes the second-order Debye function D_2(x) = (2/x^2) \int_0^x dt (t^2/(e^t - 1)).
38#[doc(alias = "gsl_sf_debye_2_e")]
39pub fn _2_e(x: f64) -> Result<types::Result, Value> {
40    let mut result = MaybeUninit::<sys::gsl_sf_result>::uninit();
41    let ret = unsafe { ::sys::gsl_sf_debye_2_e(x, result.as_mut_ptr()) };
42
43    result_handler!(ret, unsafe { result.assume_init() }.into())
44}
45
46/// This routine computes the third-order Debye function D_3(x) = (3/x^3) \int_0^x dt (t^3/(e^t - 1)).
47#[doc(alias = "gsl_sf_debye_3")]
48pub fn _3(x: f64) -> f64 {
49    unsafe { ::sys::gsl_sf_debye_3(x) }
50}
51
52/// This routine computes the third-order Debye function D_3(x) = (3/x^3) \int_0^x dt (t^3/(e^t - 1)).
53#[doc(alias = "gsl_sf_debye_3_e")]
54pub fn _3_e(x: f64) -> Result<types::Result, Value> {
55    let mut result = MaybeUninit::<sys::gsl_sf_result>::uninit();
56    let ret = unsafe { ::sys::gsl_sf_debye_3_e(x, result.as_mut_ptr()) };
57
58    result_handler!(ret, unsafe { result.assume_init() }.into())
59}
60
61/// This routine computes the fourth-order Debye function D_4(x) = (4/x^4) \int_0^x dt (t^4/(e^t - 1)).
62#[doc(alias = "gsl_sf_debye_4")]
63pub fn _4(x: f64) -> f64 {
64    unsafe { ::sys::gsl_sf_debye_4(x) }
65}
66
67/// This routine computes the fourth-order Debye function D_4(x) = (4/x^4) \int_0^x dt (t^4/(e^t - 1)).
68#[doc(alias = "gsl_sf_debye_4_e")]
69pub fn _4_e(x: f64) -> Result<types::Result, Value> {
70    let mut result = MaybeUninit::<sys::gsl_sf_result>::uninit();
71    let ret = unsafe { ::sys::gsl_sf_debye_4_e(x, result.as_mut_ptr()) };
72
73    result_handler!(ret, unsafe { result.assume_init() }.into())
74}
75
76/// This routine computes the fifth-order Debye function D_5(x) = (5/x^5) \int_0^x dt (t^5/(e^t - 1)).
77#[doc(alias = "gsl_sf_debye_5")]
78pub fn _5(x: f64) -> f64 {
79    unsafe { ::sys::gsl_sf_debye_5(x) }
80}
81
82/// This routine computes the fifth-order Debye function D_5(x) = (5/x^5) \int_0^x dt (t^5/(e^t - 1)).
83#[doc(alias = "gsl_sf_debye_5_e")]
84pub fn _5_e(x: f64) -> Result<types::Result, Value> {
85    let mut result = MaybeUninit::<sys::gsl_sf_result>::uninit();
86    let ret = unsafe { ::sys::gsl_sf_debye_5_e(x, result.as_mut_ptr()) };
87
88    result_handler!(ret, unsafe { result.assume_init() }.into())
89}
90
91/// This routine computes the sixth-order Debye function D_6(x) = (6/x^6) \int_0^x dt (t^6/(e^t - 1)).
92#[doc(alias = "gsl_sf_debye_6")]
93pub fn _6(x: f64) -> f64 {
94    unsafe { ::sys::gsl_sf_debye_6(x) }
95}
96
97/// This routine computes the sixth-order Debye function D_6(x) = (6/x^6) \int_0^x dt (t^6/(e^t - 1)).
98#[doc(alias = "gsl_sf_debye_6_e")]
99pub fn _6_e(x: f64) -> Result<types::Result, Value> {
100    let mut result = MaybeUninit::<sys::gsl_sf_result>::uninit();
101    let ret = unsafe { ::sys::gsl_sf_debye_6_e(x, result.as_mut_ptr()) };
102
103    result_handler!(ret, unsafe { result.assume_init() }.into())
104}