kogia-sima / gkquad-rs Goto Github PK
View Code? Open in Web Editor NEWNumerical Integration Library for Rust
License: MIT License
Numerical Integration Library for Rust
License: MIT License
Since workspaces are defined as thread-local variable, it can not be borrowed twice on the same thread.
This behaviour causes an error when call quadrature method from the integrand.
use gkquad::single::integral;
fn main() {
integral(
|x: f64| {
integral(|y: f64| f64::sin(100. * x * y), 0.0..1.0)
.estimate()
.unwrap()
},
0.0..1.0,
);
}
thread 'main' panicked at 'already borrowed: BorrowMutError', src/libcore/result.rs:1188:5
stack backtrace:
0: backtrace::backtrace::libunwind::trace
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/libunwind.rs:88
1: backtrace::backtrace::trace_unsynchronized
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/mod.rs:66
2: std::sys_common::backtrace::_print_fmt
at src/libstd/sys_common/backtrace.rs:84
3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
at src/libstd/sys_common/backtrace.rs:61
4: core::fmt::write
at src/libcore/fmt/mod.rs:1025
5: std::io::Write::write_fmt
at src/libstd/io/mod.rs:1426
6: std::sys_common::backtrace::_print
at src/libstd/sys_common/backtrace.rs:65
7: std::sys_common::backtrace::print
at src/libstd/sys_common/backtrace.rs:50
8: std::panicking::default_hook::{{closure}}
at src/libstd/panicking.rs:193
9: std::panicking::default_hook
at src/libstd/panicking.rs:210
10: std::panicking::rust_panic_with_hook
at src/libstd/panicking.rs:471
11: rust_begin_unwind
at src/libstd/panicking.rs:375
12: core::panicking::panic_fmt
at src/libcore/panicking.rs:84
13: core::result::unwrap_failed
at src/libcore/result.rs:1188
14: core::result::Result<T,E>::expect
at /rustc/eb3f7c2d3aec576f47eba854cfbd3c1187b8a2a0/src/libcore/result.rs:983
15: core::cell::RefCell<T>::borrow_mut
at /rustc/eb3f7c2d3aec576f47eba854cfbd3c1187b8a2a0/src/libcore/cell.rs:879
16: gkquad::single::workspace::provider::WorkSpaceProvider::get_mut::{{closure}}
at gkquad/src/single/workspace.rs:324
17: std::thread::local::LocalKey<T>::try_with
at /rustc/eb3f7c2d3aec576f47eba854cfbd3c1187b8a2a0/src/libstd/thread/local.rs:262
18: std::thread::local::LocalKey<T>::with
at /rustc/eb3f7c2d3aec576f47eba854cfbd3c1187b8a2a0/src/libstd/thread/local.rs:239
19: gkquad::single::workspace::provider::WorkSpaceProvider::get_mut
at ./src/single/workspace.rs:324
20: <gkquad::single::algorithm::qags_finite::QAGS_FINITE as gkquad::single::algorithm::Algorithm<F>>::integrate
at ./src/single/algorithm/qags_finite.rs:114
21: <gkquad::single::algorithm::qags::QAGS as gkquad::single::algorithm::Algorithm<F>>::integrate
at ./src/single/algorithm/qags.rs:37
22: gkquad::single::integral::integral
at ./src/single/integral.rs:18
23: invalid::main::{{closure}}
at gkquad/examples/invalid.rs:6
24: <F as gkquad::single::common::Integrand>::apply
at ./src/single/common.rs:135
25: <gkquad::single::util::IntegrandWrapper<F> as gkquad::single::common::Integrand>::apply_to_slice::{{closure}}
at ./src/single/util.rs:96
26: core::iter::traits::iterator::Iterator::for_each::call::{{closure}}
at /rustc/eb3f7c2d3aec576f47eba854cfbd3c1187b8a2a0/src/libcore/iter/traits/iterator.rs:629
27: core::iter::traits::iterator::Iterator::fold::ok::{{closure}}
at /rustc/eb3f7c2d3aec576f47eba854cfbd3c1187b8a2a0/src/libcore/iter/traits/iterator.rs:1829
28: core::iter::traits::iterator::Iterator::try_fold
at /rustc/eb3f7c2d3aec576f47eba854cfbd3c1187b8a2a0/src/libcore/iter/traits/iterator.rs:1710
29: core::iter::traits::iterator::Iterator::fold
at /rustc/eb3f7c2d3aec576f47eba854cfbd3c1187b8a2a0/src/libcore/iter/traits/iterator.rs:1832
30: core::iter::traits::iterator::Iterator::for_each
at /rustc/eb3f7c2d3aec576f47eba854cfbd3c1187b8a2a0/src/libcore/iter/traits/iterator.rs:632
31: <gkquad::single::util::IntegrandWrapper<F> as gkquad::single::common::Integrand>::apply_to_slice
at ./src/single/util.rs:96
32: gkquad::single::qk_impl::imp::qk
at ./src/single/qk_impl/naive.rs:62
33: gkquad::single::qk::qk25
at ./src/single/qk.rs:67
34: <gkquad::single::algorithm::qags_finite::QAGS_FINITE as gkquad::single::algorithm::Algorithm<F>>::integrate
at ./src/single/algorithm/qags_finite.rs:144
35: <gkquad::single::algorithm::qags::QAGS as gkquad::single::algorithm::Algorithm<F>>::integrate
at ./src/single/algorithm/qags.rs:37
36: gkquad::single::integral::integral
at ./src/single/integral.rs:18
37: invalid::main
at gkquad/examples/invalid.rs:4
38: std::rt::lang_start::{{closure}}
at /rustc/eb3f7c2d3aec576f47eba854cfbd3c1187b8a2a0/src/libstd/rt.rs:67
39: std::rt::lang_start_internal::{{closure}}
at src/libstd/rt.rs:52
40: std::panicking::try::do_call
at src/libstd/panicking.rs:292
41: __rust_maybe_catch_panic
at src/libpanic_unwind/lib.rs:78
42: std::panicking::try
at src/libstd/panicking.rs:270
43: std::panic::catch_unwind
at src/libstd/panic.rs:394
44: std::rt::lang_start_internal
at src/libstd/rt.rs:51
45: std::rt::lang_start
at /rustc/eb3f7c2d3aec576f47eba854cfbd3c1187b8a2a0/src/libstd/rt.rs:67
46: main
47: __libc_start_main
48: _start
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.